Commit 1bf4087c authored by Conor McCoid's avatar Conor McCoid

Assistant work, MI: added solution code for serie2

parent 1b62726f
%% Vecteurs propres en dimension une
n = 100; % discretization
x = linspace(0,1,n+2)'; % interval unitaire
k = 5; % nombre des vecteurs propres
Dex = -(1:k).^2 * pi^2; % valeurs propres exactes
Vex = sin(x * sqrt(-Dex)); % vecteurs propres exacts
L = Laplacian1D(n); % Laplacien discret en dim. 1
[V,D] = eigs(L,k,'smallestabs'); % val./vect. propres discrets
V = V./abs(max(V)).*sign(V(1,:)); % normalization
figure(1) % comparison de valeurs propres
plot(1:k,diag(D),'r*',1:k,Dex,'bo')
xlabel('# de valeur propre')
ylabel('Valeur propre')
legend('Lap. discret','Lap. exact')
figure(2) % comparison de vecteurs propres
plot(x(2:end-1),V,'r.',x,Vex,'b--')
xlabel('x')
ylabel('Vecteurs propres')
axis([0,1,-1,1])
%% Vecteurs propres en dimension deux
n = 20; % discretization
x = linspace(0,1,n+2)'; % carr'e unitaire
k = 2; % nombre des vecteurs propres
Dex = -(1:k).^2 * pi^2; % valeurs propres en dim. 1
Vex = sin(x * sqrt(-Dex)); % vecteurs propres en dim. 1
Dex = kron(Dex,ones(1,k)) + kron(ones(1,k),Dex);
[Dex,ind] = sort(Dex,'descend'); % valeurs propres exactes et tri'e
Vex = kron(Vex,Vex);
Vex = Vex(:,ind); % vecteurs propres exacts et tri'e
L = Laplacian1D(n); I = speye(n);
L = kron(I,L) + kron(L,I); % Laplacien discret en dim. 2
[V,D] = eigs(L,k^2,'smallestabs'); % val./vect. propres discrets
V = V./abs(max(V)).*sign(V(1,:)); % normalization
figure(1) % comparison de valeurs propres
plot(1:k^2,diag(D),'r*',1:k^2,Dex,'bo')
xlabel('#')
ylabel('Valeur propre')
legend('Lap. discret','Lap. exact')
figure(2) % les vecteurs propres exacts
for i = 1:k^2
subplot(k,k,i)
surf(x,x',reshape(Vex(:,i),n+2,n+2))
end
figure(3) % les vecteurs propres discrets
for i = 1:k^2
subplot(k,k,i)
surf(x(2:end-1),x(2:end-1)',reshape(V(:,i),n,n))
end
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment