0% ont trouvé ce document utile (0 vote)
47 vues8 pages

ANM

Transféré par

Nawel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
47 vues8 pages

ANM

Transféré par

Nawel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

function p=newton(m)

dimensions= size(m)
nbpoints=dimensions(1,1)

D=zeros(nbpoints,nbpoints+1)

D(:,1)=m(:,1)
D(:,2)=m(:,2)

for colonne=3:nbpoints+1 do

for ligne=1:nbpoints-colonne+2 do
i=ligne-1
j=colonne-2
D(ligne,colonne)=(D(ligne+1,colonne-1)-D(ligne,colonne-1))/(D(ligne+j,1)-D(ligne,1))

end
end
disp(D)
x=poly(0,'x')
p=0
for colonne=2:nbpoints+1 do
facteurs=1;
for ligne=1:colonne-2 do

facteurs=facteurs*(x-D(ligne,1))

end
//disp(facteurs)
p=p+D(1,colonne)*facteurs
//disp(p)

end

endfunction

function p=newton(m)

dimensions= size(m)
nbpoints=dimensions(1,1)

D=zeros(nbpoints,nbpoints+1)

D(:,1)=m(:,1)
D(:,2)=m(:,2)

for colonne=3:nbpoints+1 do

for ligne=1:nbpoints-colonne+2 do
i=ligne-1
j=colonne-2
D(ligne,colonne)=(D(ligne+1,colonne-1)-D(ligne,colonne-1))/(D(ligne+j,1)-D(ligne,1))

end
end
disp(D)
x=poly(0,'x')
p=0
for colonne=2:nbpoints+1 do
facteurs=1;
for ligne=1:colonne-2 do

facteurs=facteurs*(x-D(ligne,1))

end
//disp(facteurs)
p=p+D(1,colonne)*facteurs
//disp(p)

end
//calcul d'erreur à la sauce moindres carrés
erreur=0
for i=1:nbpoints do
erreur=erreur+ ( horner(p,m(i,1))-m(i,2) )^2
end
printf("\nErreur calculee : %f",erreur)

endfunction

function p=Lagrange(m)

dimensions= size(m)
nbpoints=dimensions(1,1)
x=poly(0,'x')

//les polynomes de Lagrange Lj(x) seront


//dans les nbpoints premières cases de p
p=ones(nbpoints+1,1)
//dans la dernière case, on trouvera le polynome
//d'interpolation de Lagrange

//calcul des polynomes de Lagrange Lj(x)


for i=1:nbpoints do
L=1
j=1
while j<=nbpoints do
if i==j then
j=j+1
end
if (j<=nbpoints) then
L=L*(x-m(j,1))/(m(i,1)-m(j,1))
end
j=j+1
end
p(i,1)=L
end
//calcul du polynome d'interpolation de Lagrange Pn(x)

pn=0
for i=1:nbpoints do
pn=pn+p(i,1)*m(i,2)
end
p(nbpoints+1,1)=pn
disp(p);

printf("\nLe polynome d interpolation de Lagrange est : ")


disp(pn)

endfunction

function info=mcarre2(mp,degre)

taille= size(mp);
nbpoints=taille(1,1);
printf("\n recu %d points\n",nbpoints)
MC=ones(degre+1,degre+1);
B=ones(degre+1,1);

MC(1,1)=nbpoints;

//premiere ligne de MC
for col=2 : degre+1 do

S=0
for i = 1 : nbpoints do
S=S+mp(i,1)^(col-1)
end
MC(1,col)=S

end

//derniere colonne de MC
for lig=2 : degre+1 do
S=0
for i = 1 : nbpoints do
S=S+mp(i,1)^(degre+lig-1)
end
MC(lig,degre+1)=S
end

// propagation en bas à gauche


for lig=2 : degre+1 do

for col = 1 : degre do


MC(lig,col)=MC(lig-1,col+1)
end
end

//Affichage MC
printf("\n MC = \n");
for lig=1 : degre+1 do
for col=1 : degre+1 do
printf("%f ",MC(lig,col))
end
printf("\n")
end

//calcul de B
for lig=1 : degre+1 do
S=0
for i = 1 : nbpoints do
S=S+( mp(i,1)^(lig-1) ) * ( mp(i,2))
end
B(lig,1)=S
end

//Affichage B
printf("\n B = \n");
for lig=1 : degre+1 do
printf("\n %f ",B(lig,1))
end
X=linsolve(MC,-B)
x=poly(0,'x')
pol=0
for i=1 : degre+1 do
pol=pol+X(i,1)*(x^(i-1))
end

erreur=0
for i=1 : nbpoints do
erreur= erreur + (horner(pol,mp(i,1)) -mp(i,2) )^2
end
printf("\n\n Erreur des moindres carrés = %f\n\n",erreur);

//info=ones(1,2) //dimensionne un tableau à 2 cases (à 1)


//info(1,1)=pol
//info(1,2)=erreur
info=list();
info(1)=pol;
info(2)=erreur;

endfunction

function info=rechercheMcarre(mp,degreMax)

reponse= mcarre2(mp,1) ;
erreur=reponse(2)
lePolynome=reponse(1)
for degre=2 : degreMax do
reponse= mcarre2(mp,degre);
nouvelleErreur=reponse(2)
if ( nouvelleErreur < erreur) then
erreur=nouvelleErreur ;
lePolynome=reponse(1);
end

end

info=list(); //liste vide : une sorte de tableau dynamique


info(1)=erreur;
info(2)=lePolynome;

endfunction
function s=spline(points)

taille= size(points) //taille est un tableau 1 ligne 2 colonnes


nbPoints=taille(1,1)
n=nbPoints-1

H=ones(n) //dimensionne un tableau de nbPoints-1 cases


//cases remplies de 1 (ones)

//boucle de calcul des hi


for i=1 : n do
H(i)=points(i+1,1)-points(i,1) // difference entre 2 abscisses
end
disp(H);

//premiere etape : calcul des valeurs Mi


A=zeros(n-1,n-1)
B=ones(n-1,1)

//pour i=1
A(1,1)=(H(1)+H(2))/3
if (n>2) then
A(1,2)=H(2)/6
end
//pour tous les cas entre 2 et n-2 : 3 valeurs par ligne ds la matrice A
for i=2 : n-2 do
A(i,i-1)=H(i)/6
A(i,i)=(H(i)+H(i+1))/3
A(i,i+1)=H(i+1)/6
end
//pour i=n-1
if (n>2) then
A(n-1,n-2)=(H(n-1))/6
A(n-1,n-1)=(H(n-1)+H(n))/3
end
disp(A)

for i=1 : n-1 do


B(i,1)= (points(i+2,2)-points(i+1,2))/H(i+1) - (points(i+1,2)-points(i,2))/H(i)
end

disp(B)

M=linsolve(A,-B)

disp(M)
//ETAPE 2 : calcul des splines !!
x=poly(0,'x')

s=zeros(n)

//premier spline
s(1)=M(1,1)*(x-points(1,1))*((x-points(1,1))^2-H(1)^2)/(6*H(1))+
points(1,2)*(points(2,1)-x)/H(1)+points(2,2)*(x-points(1,1))/H(1)

//tous les splines intermediaires


for i = 2 : n-1 do

s(i)=M(i-1,1)*(points(i+1,1)-x)*((points(i+1,1)-x)^2-H(i)^2)/(6*H(i))+M(i,1)*(x-points(i,1))*((x-
points(i,1))^2-H(i)^2)/(6*H(i))+ points(i,2)*(points(i+1,1)-x)/H(i)+points(i+1,2)*(x-points(i,1))/H(i)
end

//dernier spline
s(n)=M(n-1,1)*(points(n+1,1)-x)*((points(n+1,1)-x)^2-H(n)^2)/(6*H(n))+ points(n,2)*(points(n+1,1)-
x)/H(n)+points(n+1,2)*(x-points(n,1))/H(n)

endfunction

function Y=neuville(mp,X)

dimensions= size(mp)
nbpoints=dimensions(1,1)

T=zeros(nbpoints,nbpoints+1)

T(:,1)=mp(:,1)
T(:,2)=mp(:,2)
for colonne=3:nbpoints+1 do
for ligne=1:nbpoints-colonne+2 do

T(ligne,colonne)=( (X-T(ligne,1))*T(ligne+1,colonne-1) - (X-T(ligne+colonne-2,1) )* T(ligne,colonne-


1) ) / ( T(ligne+colonne-2,1)-T(ligne,1) )
end
end

disp(T)
Y=T(1,nbpoints+1)

endfunction

Vous aimerez peut-être aussi