<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">Bonjour,<span
class="Apple-converted-space"> </span></span><br style="clear:
both; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px;">
<br style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">Je suis en 2e
année d'école d'ingé et j'ai un projet d'analyse numérique à faire
sur Scilab.<span class="Apple-converted-space"> </span></span><br
style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">Le but est de
déterminer la chaleur en tout point d'une plaque de sommets (0,0);
(2,0) ; (1,1) ; (0;1) (un carré avec un triangle rectangle isocèle
à côté en somme) et de l'afficher dans un graphique (avec une
animation en fonction du temps dans le meilleur des cas!)<span
class="Apple-converted-space"></span></span><br style="clear:
both; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px;">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">Les conditions aux
limites (sur les côtés) sont assez variables (un côté avec une
température constante, deux avec un flux entrant ou sortant, et
une paroi adiabatique). Pour commencer simplement, j'ai récupéré
d'un prof un programme un peu similaire, qui concerne une plaque
carrée avec des conditions aux limites simples (températures
uniquement). Voici le code :<span class="Apple-converted-space"> </span></span><br
style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<pre class="bbcode" style="border: 1px solid rgb(196, 198, 162); background-color: rgb(254, 255, 236); padding: 8px; overflow: auto; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">q=20;
h=1/(q-1)
function N=conduction(M)
N=M; //ainsi N a les memes bords que M
c=1/4;
for i=2:(q-1)
for j=2:(q-1)
//equation de la chaleur discrete
N(i,j)=M(i,j)+c*(M(i+1,j)+M(i-1,j)+M(i,j+1)+M(i,j-1)-4*M(i,j));
end;
end;
endfunction
// Le programme thermo prend une matrice initiale puis applique le programme conduction conduction n fois.
function thermo(n)
//Initialisation. Differentes matrices initiales sont proposees en bas du fichier.
M=A;
for i=1:n
M=conduction(M);
end;
x=0:0.1:1;
y=0:0.1:1;
clf();
plot3d(x,y,M)
endfunction;
// Le programme animation fait la meme chose que thermo mais represente chacune des etapes de l'evolution de la plaque.
function animation(X)
clf()
f=gcf()//handle figure courante
toolbar(f.figure_id,'off')//supprime la barre d'outils
//rect=[-1.2,-1.2,1.2,0.2];//taille de la fenetre
x=0:h:1;
y=0:h:1;
//Initialisation.
M=X
plot3d(x,y,M)
for t=0:100//la boucle de l'animation
drawlater();
//xpause(50000);
M=conduction(M);
clf()//efface le buffer
plot3d(x,y,M)
xinfo('t='+string(t))//voir le temps
drawnow();
end
endfunction
//Initialisation possibles avec des conditions au bord differentes.
//La temperature est nulle partout au bord. A t=0, elle est a 9 degres a l'interieur.
A=zeros(q,q);
A(2:(q-1),2:(q-1))=9*ones((q-2),(q-2));
//Le bord est a 0 degres d'un cote et a 10 degres de l'autre. La temperature initiale dans la plaque est nulle.
B=zeros(q,q);
B(1:q,q)=10;
B(1,1:q)=linspace(0,10,q);
B(q,1:q)=linspace(0,10,q);
//Deux cotes opposes a 0 degres et les deux autres a 10 degres. La temperature initilae est aleatoire.
C=zeros(q,q);
C(1,2:(q-1))=10;
C(q,2:(q-1))=10;
C(2:(q-1),2:(q-1))=10*rand((q-2),(q-2));
// La temperature au bord oscille partout entre 0 degres et 2 degres.
D=zeros(q,q);
D(1,2:2:(q-1))=2;
D(q,2:2:(q-1))=2;
D(2:2:(q-1),1)=2;
D(2:2:(q-1),q)=2;
// Bord et temperature aleatoires. Reexecuter le programme pour modifier la generateur aleatoire.
rand('seed',getdate('s'));
E=zeros(q,q);
v=abs((1:q)-6);
E(1,1:q)=10*rand(1,q);
E(q,1:q)=10*rand(1,q);
E(1:q,1)=10*rand(q,1);
E(1:q,q)=10*rand(q,1);
E(2:(q-1),2:(q-1))=10*rand((q-2),(q-2));
animation(A)</pre>
<br style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">(Il y a plusieurs
conditions aux limites possibles, il suffit de changer la matrice
dans la dernière ligne (animation(A,B,C,D ou E))<span
class="Apple-converted-space"> </span></span><br style="clear:
both; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px;">
<br style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">Pour faire le
rapprochement avec mon projet, il faut que ma surface soit
polygonale (le polygone que j'ai décrit plus haut). Évidemment, la
discrétisation change, vu qu'en fonction de la "hauteur" selon y,
le nombre de points sur une même ligne change.<span
class="Apple-converted-space"> </span></span><br style="clear:
both; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px;">
<br style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">Là arrive mon
problème. Comment tracer (avec plot3d je présume) une surface avec
une base polygonale et où la valeur de z est donnée par la matrice
des chaleurs (dans mon cas, elle s'appelle M)<span
class="Apple-converted-space"> </span></span><br style="clear:
both; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px;">
<br style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">J'ai essayé en
donnant comme arguments de plot3d trois vecteurs x,y,z, avec le
i-ème point de chaque vecteur étant la coordonnée (ou la chaleur
pour z),mais ça n'a pas marché. J'ai ensuite essayé en utilisant
les "facet" (cf aide de Scilab [</span><a
href="http://help.scilab.org/docs/5.5.0/fr_FR/plot3d.html"
target="_blank" rel="nofollow" style="color: rgb(53, 95, 53);
font-family: Arial, Helvetica, sans-serif; text-decoration: none;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">help.scilab.org</a><span
style="color: rgb(0, 0, 0); font-family: Arial; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">]); j'arrive à
tracer une surface polygonale, mais je ne peux donner les valeurs
de z que pour les sommets de ce polygone...<span
class="Apple-converted-space"> </span></span><br style="clear:
both; color: rgb(0, 0, 0); font-family: Arial; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px;">
<br style="clear: both; color: rgb(0, 0, 0); font-family: Arial;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<span style="color: rgb(0, 0, 0); font-family: Arial; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">Je suis donc à
l'écoute de toute proposition qui pourrait m'aider à résoudre ça,
merci beaucoup!</span>
</body>
</html>