Rechercher : dans
Par :

Scilab equation de la chaleur

Dernière réponse le 10 jun 2009 à 08:21:25 evasion87, le 10 jun 2009 à 00:31:02 
 Signaler ce message aux modérateurs

Bonjour;
j'essai de programmer l'équation de la chaleur (schéma explicite) dans scilab et ça bloque sur une ligne et je trouve pas quoi faire!! j'ai beau essayé de résoudre le problème j'y arrive pas!
voila la programme si quelqu'un s'y connait un petit peu en scilab, l'erreur se trouve sur la ligne 43 en gras ci dessous (multiplication incohérentes)


M=input("Donner le nombre de discrétisation de x");
N=input("Donner le nbre de déscritisation de t ");
alpha =input ("Donnez la diffusité thermique (alpha>0) :");
k =1/N;
h =1/M;
a =(alpha*k)/(h^2);
//test sur la stablité du shéma
while (a>0.5) then
disp("shcéma instable")
M=input("donner le nombre de points de discrétisation de x");
N=input("donner le nombre de points de discrétisation de t ");
alpha =input ("donnez la diffusité thermique (alpha>0) :");
k =1/N;
h =1/M;
a =(alpha*k)/(h^2);
end
//création de la matrice B
B =zeros(M-1,M-1);
x =zeros(M,1);
for i=1:M-1
B(i+1,i)=a;
B(i,i+1)=a;
B(i,i)=1-2*a;
end
B(M-1,M-1)=1-2*a;
for i=1 : M+1
x(i) =(i-1)*h;
end
//condition initiale sur x
for i=1:M
T(i,1)=sin((%pi)*x(i));
end
T(M+1,1)=0;
//Conditions aux limites sur t
for i=1:N+1
T(1,i)=0;
T(M+1,i)=0;
end
//Calcul de la température à chaque instant et en tous les points
for j=2:N+1
T(2:M,j)=B*T(2:M,j-1);
end
for i=2:N
plot2d(x,T(:,i),i);
end

Configuration: Windows Vista

Meilleures réponses pour « scilab equation de la chaleur » dans :
Télécharger Scilab VoirScilab est un logiciel libre de calcul scientifique développé par des chercheurs de l’INRIA et de l’ENPC ; il s'agit d'un "équivalent" gratuit de Matlab®. Contrairement à GNU Octave, la syntaxe est cependant parfois quelque peu différente et quelques...

1

 Char Snipeur, le 10 jun 2009 à 08:21:25

For i=1:M-1
B(i+1,i)=a; => B(M,M-1)=a;
B(i,i+1)=a;
B(i,i)=1-2*a;
end

ce bloc fabrique une matrice B de taille M×(M-1) ce qui peut poser problème lors de l'opération T(2:M,j)=B*T(2:M,j-1);
C'est quoi exactement le problème ? fait juste avant l'opération size(B) size(T(2:M,j-1)) pour vérifier les tailles. Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur
Collection CommentÇaMarche.net