Page 1 of 1

Commande pour faire somme ou produit des termes d'une liste

Unread postPosted: 06 Feb 2012, 17:36
by fchiappini53
Salut,

Je suis en train de tenter (^^) de faire un programme pour que la calculatrice me donne directement les marges de gain et de phase d'un système asservi (pour ceux qui ne savent, ma question ne nécessite pas ces connaissances ^^).

Pour se faire, j'ai besoin de calculer la phase d'une fonction de transfert.
Le soucis, c'est que si l'on prend, pour exemple, la fonction :
H(p)=((15*(1+5*p))/(p*(1+0.1*p)*(p^(2)+6.4*p+16))) (avec p = i * w)

En faisant angle(h(p)), la calculatrice renvoie effectivement un résultat, mais totalement indigeste, et qui a pour conséquence qu'elle ne sait pas résoudre cette équation pour trouver une pulsation, ou une phase donnée.

(pour illustrer, voilà la fonction renvoyée par la calto : arctan(((10.*w)/(w^(2)-22.2222)))+((π*sign(w*(w^(2)-22.2222)))/(2)).
Si on la calcule à la main, cela donne : -π/2 - arctan(0,1w) - arctan(0.3w))

D'où mon idée : décomposer cette fonction de transfert en produit de fonctions de transferts simples, lui faire calculer séparément chaque phase (qu'elle sait mettre sous forme simple), les mettre sous forme d'une liste, et en faire le produit.

Je sais que sur Maple, il existe la fonction convert ([],*) qui permet de faire le produit, la somme, ou n'importe quoi, des termes de la liste.

Existe t'il l'équivalent sur la Nspire, ou auriez vous une idée ?

Merci !

Re: Commande pour faire somme ou produit des termes d'une li

Unread postPosted: 06 Feb 2012, 18:05
by Bisam
Avec la Nspire, il existe une fonction "sum" ainsi qu'une fonction "product" qui permettent respectivement de faire la somme ou le produit des termes d'une liste.
La Nspire sait d'ailleurs aussi faire le même calcul pour chacun des termes d'une suite (comme calculer sa transformée par exemple) : il suffit la plupart du temps de l'appliquer à la liste elle-même.

Re: Commande pour faire somme ou produit des termes d'une li

Unread postPosted: 06 Feb 2012, 18:10
by fchiappini53
Salut Bisam,

OK, c'était tellement simple que je n'y avais même pas pensé :D:

Merci, je vais m'occuper de ça de suite ^^

Re: Commande pour faire somme ou produit des termes d'une li

Unread postPosted: 06 Feb 2012, 18:32
by fchiappini53
De retour ! Effectivement, ça marche nickel.
Mais du coup, j'ai un autre soucis :

Pour la fonction de transfert ci dessus, je l'ai donc découpé comme ceci :
l={((5)/(p)),((1)/(1+0.15*p)),((1)/(1+0.3*p))}.

J'ai donc fait ensuite product(l) pour obtenir la fonction de transfert. Mais du coup, il fait "le produit", et remplace p par i*w. Du coup, pour calculer le module, ça me fait un calcul approché qui apporte une imprécision pour résoudre l'équation.

Du coup, serait il possible de lui "faire garder" la variable p ?

Re: Commande pour faire somme ou produit des termes d'une li

Unread postPosted: 06 Feb 2012, 18:41
by Bisam
Si la calculette remplace "p" par "i*w", c'est que tu le lui as demandé ! Elle ne le fait pas toute seule.
Il est probable que tu aies affecté la valeur i*w à la variable p.
Il suffit donc de l'effacer en tapant "Delvar p" et tout rentrera dans l'ordre.

Re: Commande pour faire somme ou produit des termes d'une li

Unread postPosted: 06 Feb 2012, 18:46
by fchiappini53
Mais justement, je veux qu'elle garde la valeur p dans le calcul, et non pas qu'elle la remplace par i*w. Mais, je ne sais pas si c'est possible.

Mais d'ailleurs, je me suis aperçu d'un autre soucis : en faisant sum et product, le résultat renvoyé n'est plus une fonction dépendant de w (alors qu'on a du p dans la liste pourtant), mais une constante.

Huhu, je penserai pas que cela serait aussi complexe ^^

Re: Commande pour faire somme ou produit des termes d'une li

Unread postPosted: 06 Feb 2012, 18:49
by Bisam
Je ne comprends rien à tes réponses.
Il va falloir être plus précis.
Qu'as-tu au départ ? Que veux-tu à l'arrivée ? Est-il nécessaire pour le calcul de remplacer "p" par "i*w" ? Et bien d'autres choses encore.
Je ne connais presque rien aux calculs que tu veux faire...

Ce qui est sûr, c'est que la Nspire ne sait pas manipuler les fonctions (contrairement à Maple, par exemple). Elle ne manipule que des expressions.
On peut lui faire calculer la valeur des fonctions mais pas définir un objet qui serait la somme ou le produit de plusieurs fonctions.