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
*.sciCode: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:// 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);
-----