bonjour,
j'ai un travail à faire sous scilab. ayant deja fait une grande partie sous matlab, j'ai continué et me suis dit qu'à la fin j'importerais un fichier matlab dans scilab et le tour sera joué.
le hic est que si je lance le fichier matlab j'obtiens un resultat mais avec scilab j'en obtiens un autre. comment regler ça?
merci
*.m
*.sci
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108 max=1000;%nbr max d'iterations l=6;%languer du mur h=3;%hauteur du mur e=0.3;%epaisseur du mur n1=1/29;%n=1/(r-1)//r=30 n2=1/299;%n=1/(r-1)//r=300 n3=1/249;%n=1/(r-1)//r=300-50=250 lambdab=1.8;%lambde du beton rho=2300;% rho du beton E1=1368; emis=0.9; c=800; k=ones(30,300) * 273.13;%matrice qui sert à rammener les K en °C sigma=5.67*10^(-8);%cte de staphane-boltzmann t0=278.13;%T° ambiante de 5°C tc=308.13;%chauffage à 35°C p0=t0^4*sigma; s=l*e; td=14400;%debut du chauffage à 10H tf=28800;%fin du chauffage à 14H t=21600;%instant auquel on veut connaitre la T° // à exprimer en secondes à partir de 6H du matin omega=ones(30,300) * 278.13;%initialisation du domaine %d2: face est: a=t*pi()/43300;%secondes rammenés en radians //a: angle que fait le soleil avec la normale à la surface if a<(pi()/2)% faces est exposé au rayonnement t2=(((278.13^4)/2)+E1/(sigma*cos(a)))^0.25; d2=ones(1,300)*t2;%est else t2=278.13; d2=ones(1,300)*t2;%est end %d5: face west en contact avec le radiateur: if t<td t5=278.13; d5=ones(1,50)*t5;%west/radiateur elseif t<tf t5=tc; d5=ones(1,50)*t5;%west/radiateur else t5=278.13; d5=ones(1,50)*t5;%west/radiateur end %d1: base: d1=ones(30,1)*278.13;%base d1(1,1)=t5; %base d1(30,1)=t2; %base for m=1:1:max for i=2:1:29 d1(i,1)=d1(i,1)+(-2*d1(i,1)+d1(i-1,1)+d1(i+1,1))/(2+n1*rho*c/lambdab); % base end end %d4: face west hors radiateur: d4=ones(1,250)*278.13;%west/hors radiateur d4(1,1)=t5;%west/hors radiateur d4(1,250)=278.13; ;%west/hors radiateur for m=1:1:max for j=2:1:249 d4(1,j)=d4(1,j)+(-2*d4(1,j)+d4(1,j-1)+d4(1,j+1))/(2+n3*rho*c/lambdab);% west/hors radiateur end end %d3: face superieure d3=ones(30,1)*278.13;%haut d3(1,1)=278.13; %haut d3(30,1)=t2; %haut for m=1:1:max for i=2:1:29 d3(i,1)=d1(i,1)+(-2*d1(i,1)+d1(i-1,1)+d1(i+1,1))/(2+n1*rho*c/lambdab); %haut end end d6=ones(1,300)*0;%d6 rassemble d4 et d5 d6(1,1:50)=d5; d6(1,51:300)=d4; omega(30,:)=d6; omega(:,300)=d1; omega(1,:)=d2; omega(:,1)=d3; for j=2:1:299 for i=2:1:29 omega(i,j)=omega(i,j)+(-4*omega(i,j)+omega(i-1,j)+omega(i,j-1)+omega(i+1,j)+omega(i,j+1))/(4+n1*n2*rho*c/lambdab);%eq de la chaleur à deux dimensions omegac=omega-k; end end plot(omegac);
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 // Display mode mode(0); // Display warning for floating point exception ieee(1); max = 1000; //nbr max d''iterations l = 6; //languer du mur h = 3; //hauteur du mur e = 0.3; //epaisseur du mur n1 = 1/29; //n=1/(r-1)//r=30 n2 = 1/299; //n=1/(r-1)//r=300 n3 = 1/249; //n=1/(r-1)//r=300-50=250 lambdab = 1.8; //lambde du beton rho = 2300; // rho du beton E1 = 1368; emis = 0.9; c = 800; k = ones(30,300)*273.13; //matrice qui sert à rammener les K en °C sigma = 5.67*(10^(-8)); //cte de staphane-boltzmann t0 = 278.13; //T° ambiante de 5°C tc = 308.13; //chauffage à 35°C p0 = (t0^4)*sigma; s = l*e; td = 14400; //debut du chauffage à 10H tf = 28800; //fin du chauffage à 14H t = 21600; //instant auquel on veut connaitre la T° // à exprimer en secondes à partir de 6H du matin omega = ones(30,300)*278.13; //initialisation du domaine //d2: face est: a = (t*mtlb_double(%pi))/43300; //secondes rammenés en radians //a: angle que fait le soleil avec la normale à la surface if mtlb_logic(a,"<",mtlb_double(%pi)/2) then // faces est exposé au rayonnement t2 = mtlb_a((278.13^4)/2,E1/(sigma*cos(a)))^0.25; d2 = ones(1,300)*t2; //est else t2 = 278.13; d2 = ones(1,300)*t2; //est end; //d5: face west en contact avec le radiateur: if t<td then t5 = 278.13; d5 = ones(1,50)*t5; //west/radiateur elseif t<tf then t5 = tc; d5 = ones(1,50)*t5; //west/radiateur else t5 = 278.13; d5 = ones(1,50)*t5; //west/radiateur end; //d1: base: d1 = ones(30,1)*278.13; //base d1(1,1) = t5; //base d1(30,1) = t2; //base for m = 1:1:max for i = 2:1:29 d1(i,1) = d1(i,1)+(-2*d1(i,1)+d1(i-1,1)+d1(i+1,1))/(2+((n1*rho)*c)/lambdab); // base end; end; //d4: face west hors radiateur: d4 = ones(1,250)*278.13; //west/hors radiateur d4(1,1) = t5; //west/hors radiateur d4(1,250) = 278.13; //west/hors radiateur for m = 1:1:max for j = 2:1:249 d4(1,j) = d4(1,j)+(-2*d4(1,j)+d4(1,j-1)+d4(1,j+1))/(2+((n3*rho)*c)/lambdab); // west/hors radiateur end; end; //d3: face superieure d3 = ones(30,1)*278.13; //haut d3(1,1) = 278.13; //haut d3(30,1) = t2; //haut for m = 1:1:max for i = 2:1:29 d3(i,1) = d1(i,1)+(-2*d1(i,1)+d1(i-1,1)+d1(i+1,1))/(2+((n1*rho)*c)/lambdab); //haut end; end; d6 = ones(1,300)*0; //d6 rassemble d4 et d5 d6(1,1:50) = d5; d6(1,51:300) = d4; omega(30,:) = d6; omega(:,300) = d1; omega(1,:) = d2; omega(:,1) = d3; for j = 2:1:299 for i = 2:1:29 omega(i,j) = omega(i,j)+(-4*omega(i,j)+omega(i-1,j)+omega(i,j-1)+omega(i+1,j)+omega(i,j+1))/(4+(((n1*n2)*rho)*c)/lambdab); //eq de la chaleur à deux dimensions omegac = mtlb_s(omega,k); end; end; plot(omegac);
Partager