Exercice 1 : Système d'équations différentielles Help

Learn more

The due date for this homework is Mon 31 Mar 2014 10:00 AM CEST.

Soit M un entier positif, soit u⃗ 0M, soit A la M×M matrice définie par A=(M+1)22112112112.
On cherche u⃗ :+M la solution de u⃗ ˙(t)=Au⃗ (t), t>0, u⃗ (0)=u⃗ 0. On considère le schéma d'Euler rétrograde pour approcher u⃗  : soit N un entier positif, h le pas de temps, tn=nh, n=0,1,2,...,N. On pose u⃗ 0=u⃗ 0, pour n=0,1,2,...,N1, étant donné u⃗ n, u⃗ n+1 est tel que
u⃗ n+1u⃗ nh=Au⃗ n+1.
On propose l'algorithme (octave, matlab) suivant, que l'on complètera. Vous pouvez sauver le fichier sysdiff.m, le compléter et le tester avec octave, puis répondre au questions ci-dessous.
function [u,err] = sysdiff(M,h,N)
%
% entrees : M : nombre de composantes de u
% h : pas de temps
% N : nombre de pas de temps
%
% sortie : u : approximation de u au temps final
% err : erreur entre u et son approximation au temps final
% condition initiale
for i=1:M
  u(i)=sin(i*pi/(M+1));
end
% decomposition de cholesky de la matrice I+hA : I+hA = LL^T
diag = 1+2*h*(M+1)*(M+1);
sdiag = -h*(M+1)*(M+1);
a(1)=sqrt(diag);
for i=1:M-1
  c(i) = sdiag/???;
  a(i+1) = sqrt(diag-c(i)*???);
end
% schema d Euler retrograde : (I+hA) u^{n+1} = u^{n}
for n=1:N
% resolution du systeme lineaire Ly = u^{n}
u(1)=u(1)/a(1);
for i=1:M-1
  u(i+1) = (u(i+1)-???*u(i))/a(i+1);
end
% resolution du systeme lineaire L^T u^{n+1} = y
u(M)=u(M)/a(M);
for i=M-1:-1:1
  u(i) = (u(i)-???*u(i+1))/a(i);
end
end
% calcul de l erreur au temps final
err=0.;
coeff = exp(-(2-2*cos(pi/(M+1)))*(M+1)*(M+1)*n*h);
for i=1:M
  err=err+(sin(i*pi/(M+1))*coeff- u(i))^2;
end
err=sqrt(err);
end

Question 1

Entrez les ??? de la ligne (pas de blancs, pas de ^) :
c(i) = sdiag/???;

Question 2

Entrez les ??? de la ligne (pas de blancs, pas de ^) :
a(i+1) = sqrt(diag-c(i)*???);

Question 3

Entrez les ??? de la ligne (pas de blancs) :
u(i+1) = (u(i+1)-???*u(i))/a(i+1);

Question 4

Entrez les ??? de la ligne (pas de blancs) :
u(i) = (u(i)-???*u(i+1))/a(i);

Question 5

On veut tester l'ordre de convergence du schéma d'Euler rétrograde. On fixe M=5, le temps final t=0.1, on fait tendre h vers zéro et N vers l'infini. Que vaut l'erreur lorsque vous tapez
[u,err]=sysdiff(5,0.01,10)
[u,err]=sysdiff(5,0.001,100)
[u,err]=sysdiff(5,0.0001,1000)
Entrez trois réels séparés d'un blanc.

Question 6

Soit λ une valeur propre de A et x⃗ 0 le vecteur propre correspondant. On a :
    
You cannot submit your work until you agree to the Honor Code. Thanks!