-
27/12/2009 - 09h02 shadow90
Matlab Polynôme de Lagrange
Bonjour,
J'ai un fonction sur l'intervalle [-1,1], qui doit permettre de mettre en évidence le phénomène de RUNGE.
Mon problème pour le moment est de déterminer le polynôme de Lagrange en utilisant au mieux les fonctions préprogrammées de Matlab. Je pensais donc aux fonctions "Polyfit" et "Polyval". J'ai beau eu à réfléchir ou chercher sur Internet, mais je n'ai rien trouvé.
Pourriez vous m'aider ?
Merci par avance
-
27/12/2009 - 13h33 Scorp
Re : Matlab Polynome de Lagrange
Le problème, c'est que je ne suis pa sûr que polyfit utilise les polynomes de Lagrange pour approximer ta fonction. Du coup, tu ne verras peut être pas (ou pas bien) le réel effet de Runge.
Utilise plutôt une routine Matlab : tu te crée une fonction qui prend en entrée les coefficients ai, et te renvoie les polynomes de Lagrange Lj.
Ensuite, tu fais une autre routine qui prend en entrée ta fonction f(x) (tu estimes au passage la valeur de ta fonction au point ai). Ainsi, tu peux utiliser ta première routine pour approximer ta fonction en faisant .
tu pourras ainsi voir (avec un plot par exemple) l'évolution de l'approximation de ta fonction f(x) par les polynomes selon la façon dont tu choisi les coef ai (et donc le degré du polynome d'approximation). Notamment, tu pourras voir qu'en utilisant les ai comme les "les points de Tchebychev ", tu pourrais limiter le phénomène de Runge
-
27/12/2009 - 15h33 shadow90
Re : Matlab Polynome de Lagrange
Merci pour ta réponse.Effectivement j'aurais pu essayer de faire ca.. Bon en fait j'ai réussi à faire ces polynômes de Lagrane avec polyfit et polyval.
Par contre je suis sur les noeuds de Tchebychev. On me donne la formule à savoir , mais je n'arrive pas à mettre ca en forme (avec une boucle for je pense)..J'aurais juste besoin d'aide pour calculer ces noeuds..
-
27/12/2009 - 17h08 Scorp
Re : Matlab Polynome de Lagrange
Les xi correspondent aux racines du polynome de Tchebychev de degré n. Or de mémoire, la formule que tu donnes est inexacte. J'aurais plutôt dit : (à confirmer)
Pour répondre à ta question : je ne pense pas que tu aies besoin de for.
Essaye de la facon suivante (je n'ai pas Matlab sous les mains, donc je ne peux pas garantir que ca marche bien) : Rq : j'utilise ma formule des xi, et non la tienne
N= ### ; (met la valeur à la place de ###)
y=1:2:2*N-1; (construit un vecteur de 1 à 2N-1 avec un pas de 2)
y=y*.(3.14159/(2*N)); (multiplie chaque composante du vecteur par pi/2N )
x=cos(y); -
28/12/2009 - 19h29 shadow90
Re : Matlab Polynome de Lagrange
Merci beaucoup pour ton explication. En fait j'ai utilisé les noeuds que l'on m'a donné dans le sujet, mais peut être y a t'il une erreur.
En tout cas je te remercie pour ton aide.
Pourrais je te demander une dernière chose : aurais tu une idée pour faire une interpolation à l'aide du polynôme de Hermite ?
je pensais utiliser une relation démontrée en cours à savoir : où Li(x) est le polynôme de Lagrange et le polynôme de Hermite est la somme de i à n de +yi*Hi(x) )
Mais je n'arrive pas à programmer ca sur Matlab (problème de tailles de vecteurx..)
-
28/12/2009 - 19h50 Scorp
Re : Matlab Polynome de Lagrange
Je pense que le plus simple est de les construire par récurrence.
On a H0(x)=1 et H1(x)=x
Ensuite, tu utilises -
31/12/2009 - 18h09 shadow90
Re : Matlab Polynome de Lagrange
Excuse moi, je n'ai pas pu répondre tout de suite pour cause de soucis avec Internet. Je te remercie pour ton information, mais j'aurais une dernière question : comment réaliser dans Matlab une relation de récurrence, comme celle ci ?
Merci et bonnes fêtes à tous !!
-
01/01/2010 - 15h30 Scorp
Re : Matlab Polynôme de Lagrange
pour le coup, tu peux utiliser une boucle for sur n de 2 à N. Tu spécifies au début H0(x) et H1(x).
Dans ta boucle, il suffit de placer la relation de récurrence.
Au final, Matlab devrait te faire un vecteur avec en 1ere composante H0, en 2e H1 etc ... jusqu'à HN
-
01/01/2010 - 15h38 shadow90
Re : Matlab Polynôme de Lagrange
Merci pour ton explication.Mais en fait je me demandais au niveau syntaxique sur Matlab ca donnerait quoi?
Par exemple
H[0]=1;
H[1]=x
ou cela se fait autrement ?
-
01/01/2010 - 18h23 Scorp
Re : Matlab Polynôme de Lagrange
ha oui, le problème c'est que Matlab est conçu pour travailler avec des matrices. Et les polynômes n'échappent pas à la règle : l'objet polynome n'existe pas. Pour le définir, il faut en fait passer par sa matrice des coeffcients.
Donc pour P(x)=1+2x+5x² il faut définir P=[5 2 1] (on commence par le degès le plus haut : donc ici 5)
Pour estimer la valeur de ce polynome en un point, par exemple en x=8, il faut utiliser polyval(P, 8)
La relation de recurrence que tu as à programmer est assez simple.
Par exemple, pour x.Hn(x), il te suffira d'ajouter 1 à tous les coeffcients de Hn.
-
02/01/2010 - 20h18 shadow90
Re : Matlab Polynôme de Lagrange
Merci pour ta réponse.
En fait j'ai un problème :
J'ai bien créé un vecteur h(1,N)..
Pour initialiser h(0)=1, comment faire pour dire qu'il y a des 1 sur tous les coefficients??
| | |