Bonjour
j'ai commencer un cour d'annalyse numerique mais je ne maitrise pas du tous mathlab
j'ai le code si dessous dans lequel il m'était demandé de modifier 3 ligne
les ligne modifier sont
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 function [err,t,f,x,p]=intlag(n) % %Etant donne un entier n et une fonction continue f, %le programme interpole la fonction f par un polynome p %de degre n aux points d interpolation t(1),t(2),...,t(n),t(n+1). %parametres: entree : n % sortie : err : erreur max entre la fonction f et l interpolant p % t : (n+1) vecteur contenant les points d interpolation % f : (n+1) vecteur contenant les valeurs de la fonction f % aux points d interpolation % x : vecteur contenant 1001 points uniformement distribues % sur [-1,1] % p : vecteur contenant les valeurs du polynome p au point x(i) % % %initialisation des vecteurs t et f % for i=1:n+1 t(i)=-1+(2.*(i-1))/n; f(i)=funct(t(i)); end % %calcul de la valeur du polynome d interpolation au point x(i) % m=1000; err=0; for i=1:m+1 x(i)=-1+(2.*(i-1))/m; p(i)=0; for j=1:n+1 p(i) = p(i) + f(j) * phi(j,n,x(i),t); end err = max(err,abs(p(i)-funct(x(i)))); end end %calcul de phi_j (la j_ieme fonction de la base de Lagrange) function basis = phi(j,n,xx,t) basis=1; for k=1:n+1 if k ~= j basis = basis * (xx-t(k))/(t(j)-t(k)); end end end %fonction a interpoler function f = funct(xx) f = sin(t); end
Code : Sélectionner tout - Visualiser dans une fenêtre à part p(i) = p(i) + f(j) * phi(j,n,x(i),t);
Code : Sélectionner tout - Visualiser dans une fenêtre à part basis = basis * (xx-t(k))/(t(j)-t(k));je ne me pose pas de question sur les 2 premiere ligne puisque j'ai eu bon au QCM
Code : Sélectionner tout - Visualiser dans une fenêtre à part f = sin(t);
en revanche c'est au niveau du sin(t) que ca doit bloqué et comme je ne sais pas trop comment lire tous ca (premiere fonction que je vois) j'ai beaucoup de difficuté a savoir quesce qu'il faut faire
en ce qui concerne l'intituler du probleme j'ai
Le but de cet exercice est de compléter un programme permettant d'interpoler une fonction continue par un polynôme (sect. 1.4 du livre).
Soit f:[−1,1]→R une fonction continue donnée et soit t0<t1<t2<…<tn, (n+1) points de [−1,1]. On cherche un polynôme pn de degré inférieur ou égal à n tel que pn(tj)=f(tj), 0≤j≤n.
D'après le cours, on a :
pn(t)=∑j=0nf(tj)φj(t)
où
φj(t)=∏k=0k≠jnt−tktj−tk.
j'ai donc remplacéOn veut tester la programmation. Si f(t)=sin(t), que vaut l'erreur lorsque vous tapez
[err,t,f,x,p]=intlag(5);err
f= ?????
par
f = sin(t)
mais sa ne marche pas et je n'arrive pas a savoir pourquoi (enfin si je sais que c'est la variable "t" qui pose problème mais comme je ne sais pas dans quel sens lire le programme ca ne m'aide pas beaucoup
Partager