Conversation démarrée aujourd’hui
Maximal Garage
22:24
Maximal Garage
Bonsoir à tous,
Je me présente, je suis en école d'ingénieur en 1ere année.
Je dois réaliser un programme sous MATLAB pour résoudre l'équation de la chaleur par méthode implicite et explicite. J'ai fais un template de ma solution mais je n'arrive pas à coder le programme avec le logiciel. Par exemple, je dois construire des matrices et stocker des infos dans un vecteur colonne mais je ne comprends pas la logique du logiciel.
Je vous mets le template de ma solution, les parties où je n'arrive pas à coder sont les 'blancs' au milieu du programme. Ce sera plus clair si vous copiez la suite sur un script de matlab (couleurs etc...).
Merci d'avance pour votre aide



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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
function run() 
%% Exécution de la résolution 
% les paramètres 
a=0; b=1; Nx=10; 
Tf=1; Nt=10; 
v = 1-pi^2; 
% le second membre 
rhs = inline('0','x','t'); 
% la solution analytique 
solEx = inline('exp(-t)*sin(pi*x)','x','t'); 
% la solution initiale 
u0 = inline('sin(pi*x)'); 
% résolution 
eqChaleur1D(v,rhs,u0,a,b,Nx,Tf,Nt,'implicite'); 
disp(' ') 
disp('Pressez une touche pour continuer') 
disp(' ') 
pause 
eqChaleur1D(v,rhs,u0,a,b,Nx,Tf,Nt,'explicite'); 
function eqChaleur1D(v,RHSfunc,INITfunc,a,b,Nx,Tf,Nt,methode, EXfunc) 
%% Approximation numérique de l'équation de la chaleur 
%% sur le segment [a,b]. Utilise un maillage comptant (Nx+1) éléments en espace 
%% et (Nt+1) éléments en temps 
%% 
%% Entrée : 
%% v : le coefficient de réaction 
%% RHSfunc : le second membre (une fonction) 
%% INITfunc : la donnée initiale (une fonction) 
%% a,b : les bornes du domaine spatial 
%% Nx : le nombre d'intervalles de discrétisation spatiale 
%% Tf : le temps final 
%% Nt : le nombre d'intervalles de temps 
%% methode : le type de schéma de résolution (implicite/explicite) 
%% EXfunc : la solution exacte (une fonction) si connue (argument optionnel) 
% discrétisations 
... 
% construction des diagolnales de la matrice A 
... 
if methode == 'implicite' 
% Assemblage de la matrice A 
... 
% condition de Dirichlet sur les bords 
... 
end; 
if methode == 'explicite' 
% Assemblage de la matrice A 
... 
% condition de Dirichlet sur les bords 
... 
end; 
% donnée initiale 
... 
disp('Résolution de l''équation de la chaleur') 
disp(['en utilisant un schéma ' methode]) 
disp('Pressez une touche pour continuer') 
disp(' ') 
pause 
figure; 
for k=1:Nt 
% évaluation de la fonction f 
... 
% conditions de bord 
... 
if methode == 'implicite' 
% construction du second membre 
... 
% résolution 
... 
end; 
if methode == 'explicite' 
% résolution 
... 
end; 
if nargin == 9 
plot(X,u,'r') 
title(['Solution de l''équation de la chaleur avec schéma ' methode]) 
drawnow 
end; 
% if nargin == 10 
% uEx = feval(EXfunc,X,(k*ht)); 
% subplot(2,1,1); plot(X,u,':r',X,uEx,'-.b') 
% h = legend('Numérique','Exacte',2); 
% set(h,'Interpreter','none') 
% title(['Solutions de l''équation de la chaleur avec schéma ' methode]) 
% subplot(2,1,2); plot(X,uEx'-u,'r') 
% title('Erreur') 
% drawnow 
% e=norm(uEx'-u,inf); 
% fprintf('Erreur à l''instant %f : %e \n',k*ht,e) 
% end; 
end;