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

Codes

Le document présente plusieurs fonctions MATLAB pour résoudre des problèmes mathématiques, y compris des méthodes d'approximation comme Newton-Raphson, Jacobi, Gauss-Seidel, et des techniques de polynômes comme Lagrange et Newton. Il inclut également des méthodes pour la résolution de systèmes d'équations, la substitution arrière, et des algorithmes pour le calcul de discriminants et de suites. Enfin, il traite de la génération de matrices de Hilbert et de l'estimation de leur condition.

Transféré par

arianetchinda389
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 PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • Méthodes de calcul de détermin…,
  • Méthodes de calcul de solution…,
  • Différences divisées,
  • Newton,
  • Méthodes de résolution,
  • Méthodes de Gauss,
  • Algorithmes de calcul matricie…,
  • Substitution arrière,
  • Analyse de convergence,
  • Méthodes de Newton
0% ont trouvé ce document utile (0 vote)
36 vues8 pages

Codes

Le document présente plusieurs fonctions MATLAB pour résoudre des problèmes mathématiques, y compris des méthodes d'approximation comme Newton-Raphson, Jacobi, Gauss-Seidel, et des techniques de polynômes comme Lagrange et Newton. Il inclut également des méthodes pour la résolution de systèmes d'équations, la substitution arrière, et des algorithmes pour le calcul de discriminants et de suites. Enfin, il traite de la génération de matrices de Hilbert et de l'estimation de leur condition.

Transféré par

arianetchinda389
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 PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • Méthodes de calcul de détermin…,
  • Méthodes de calcul de solution…,
  • Différences divisées,
  • Newton,
  • Méthodes de résolution,
  • Méthodes de Gauss,
  • Algorithmes de calcul matricie…,
  • Substitution arrière,
  • Analyse de convergence,
  • Méthodes de Newton

Newton r

function[x,it]=Newton_R(x0,tol)
x=sym('x');
g=@(x)f1(x);
h(x)=diff(g(x),x,1);
xk=x0-f1(x0)/(vpa(h(x0),3));
i=1;
while (abs(xk-x0)>tol)
x0=xk;
xk=x0-f1(x0)/(vpa(h(x0),3));
i=i+1;
end
x=xk; it=i;
return

jacobi
function[X]=jacobi(A,b,kmax)
n=length(b); x0=zeros(n,1);
D=diag(diag(A)); E=-tril(A-D); F=-triu(A-D);
Ej=D\(E+F); qj=D\b;
i=1;
xk=Ej*x0+qj;
while i<=kmax
x0=xk;
xk=Ej*x0+qj;
i=i+1;
end
X=xk;
return

gauss s
function[X]=Gauss_Seidel(A,b,kmax)
n=length(b); x0=zeros(n,1);
D=diag(diag(A)); E=-tril(A-D); F=-triu(A-D);
EGS=(D-E)\F; qGS=(D-E)\b;
i=1;
xk=EGS*x0+qGS;
while i<=kmax
x0=xk;
xk=EGS*x0+qGS;
i=i+1;
end
X=xk;
return

gauss
function[U,f]=Gauss(A,b)
n=length(b);
for k=1:n-1
for i=(k+1):n
m=A(i,k)/A(k,k);
for j=k:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)=b(i)-m*b(k);
end
end
U=A; f=b;
return

back substitution
function[X]=Bsubstitution(A,b)
n=length(b);
[U,f]=Gauss(A,b);
for i=n:-1:1
x(i)=f(i);
for j=(i+1):n
x(i)=x(i)-U(i,j)*x(j);
end
x(i)=x(i)/U(i,i);
end
X=x;
Return

Downsubt
function[X]=downsubstitution(c,b)
n=length(b);
%[U,f]=Gauss(A,b);
U=c; f=b;
for i=1:n
x(i)=f(i);
for j=1:(i-1)
x(i)=x(i)-U(i,j)*x(j);
end
x(i)=x(i)/U(i,i);
end
X=x;
return
polynome
function[L]=POL(x,z)
%x est le pont d interpolation
%z is a target points
n=length(x); m=length(z); L=[];
for k=1:m
T=[];
for p=1:n
v=x; a=v(p); v(p)=[];
A=[]; B=[];
for j=1:(n-1)
A=[A,z(k)-v(j)]; B=[B,a-v(j)];
end
l(p)=prod(A)/prod(B); T=[T;l(p)];
end
L=[L,T];
end
return

lagrange
function[P]=Lagrange(x,y,z)
%P: the polynomial evalueted at all targets z
L=POL(x,z);
P=L'*y;
%plot(x,P,"-r",x,y,"-b")
return

DD
function[b]=DD(x,y)
%cette fonction implemente l algo de dfference de division
%x:vecteur des point d interpolation
%y:valeur de vecteurs fonction
%b: solution des coefficient de Newton
n=length(x); b=y;
for i=2:n
for j=2:i
b(i)=(b(i)-b(j-1))/(x(i)-x(j-1));
end
end
return
newton
function[p]=Newton(x,y,z)
%this function implements the algoritm of divided
difference
%z:vector of target point
%p: the polynomial at all targets
b=DD(x,y);
n=length(b);
for i=1:length(z)
p(i)=b(n);
for k=(n-1):-1:1
p(i)=p(i)*(z(i)-x(k))+b(k);
end
end
return

F
function[x]=F(b,t,l,u)
S=0;
sk=0;
k=0;
for i=0:(b-2)
sk=sk+1;
k=i+1;
for k=1:t
for p=l:u
if S>0
S=S+(b^p)*(sk*(b^-k));
else
S=S-(b^p)*(sk*(b^-k));
end
end
end
end
x=S;
return

relaxation
function[X]=Relaxation(A,b,kmax,w)
n=length(b); x0=zeros(n,1);
D=diag(diag(A)); E=-tril(A-D); F=-triu(A-D);
ER=((1/w)*D-E)\((1/w-1)*D+F); qR=((1/w)*D-E)\b;
k=1;
xk=ER*x0+qR;
while k<=kmax
x0=xk;
xk=ER*x0+qR;
k=k+1;
end
X=xk;
return

bissection
function[x,it]=bissection(a,b,tol)
c=(a+b)/2; fc=f2(c); i=1;
while abs(b-a)>tol
if f2(a)*f2(c)<0
b=c;
c=(a+b)/2;
i=i+1;
else
a=c;
c=(a+b)/2;
i=i+1;
end
end
x=c; it=i;
return

secantes
function[x,it]=secante(x0,x1,tol)
xk=x1-(fe(x1))*(x1-x0)/(fe(x1)-fe(x0));
k=1;
while (abs(xk-x1)>tol)
x0=x1;
x1=xk;
xk=x1-(fe(x1))*(x1-x0)/(fe(x1)-fe(x0));
k=k+1;
end
x=xk; it=k;
return
point fixe
function[X,it]=point_fixe(g,x0,tol)
n=0;
x=x0;
xk=g(x);
k=1;
while abs(xk-x0)>tol
xk=x0;
xk=g(xk);
k=k+1;
n=n+1;
end
X=xk; it=n;
return

discriminent
function[x]=discriminant(a,b)
delta=a^2-4*b;
if delta<0
x='pas de solution';
else
x=[(-a+sqrt(delta))/2,(-a-sqrt(delta))/2];
end
return

suites
function[X]=suite(u0,kmax)
k=1; uk=sqrt(5*u0+2);
while (k<=kmax)
u0=uk;
uk=sqrt(5*u0+2);
k=k+1;
end
X=uk;
return

mat
function[A]=mat(a,b,c,N)
A=zeros(N,N);
for i=2:N
A(i,i)=a;
A(i-1,i)=b;
A(i,i-1)=c;
end
A(1,1)=a;
return

f1
function[y]=f1(x)
s=6000;
for k=1:5
s=s-1000*(1+x).^k;
end
y=s;
return

fac
function[n]=fact(i)
n=1;
j=1;
while j<=i
n=n*j;
j=j+1;
end

hilbert
%exercise1
%question 1
%generons la matrice hilbert d ordre 10
H=hilb(10);
%vecteur diagonal
d=diag(H);
%decomposition traiangulaire [U,L]
L=tril(H); U=triu(H);
%affichage du resultat
disp("diagonal vector(d):");
disp(d);
disp("lower triangular matrix(L):");
disp(L);
disp("upper triangular matrix(U):");
disp(U);
%question 2
x=ones(10,1);
kmax=10000;
n=length(x);
b=H*x;
%affichage du resultat
disp("solution of(b):");
disp(b);
%auestion 3
%resolution avec pertubation sb
sb=[zeros(9,1);1e-4];
c=b+sb;
y=jacobi(H,c,kmax);
%affichage de resultat
disp("pertubetor solution(y):");
disp(y);

%donnons l estimation de la condition K(H)


% la norme de H
disp("norm for (H)");
disp(norm(H));
%la norme de l inverse de H
disp("norm for inv(H):");
disp(norm(inv(H)));
K=norm(H)*norm(inv(H));
disp("condition estimate (K):");
disp(K);

Vous aimerez peut-être aussi