4 bilinmeyen var ve ben iki for döngüsü ile 2 bilinmeyenli iki denkleme dönüştürüyorum. Sonra bu ikisinin çözümü için [X,Y]=solve(Eq1,Eq2,x,y) kullandım fakat ben sayısal bir değer bulmak isterken root ve Z^3 kü terimler çıkıyor. Yardımcı olur musunuz?
KOD:
clc
clear
a=436*10^-6;
rho=2.2*10^-5;
k=2.6;
Z=a^2/(rho*k);
Tcevre=-5+273;
ZTcevre=Z*Tcevre;
Ts=408.15;
Tsy=Ts/Tcevre;
h1=106.6575;
A1=0.04*0.04;
h2=53.3320;
A2=37*10^-4;
Nh=(h1*A1)/(0.9*h2*A2);
syms x y
for Nk=0.1:0.1:1
for Rr=1:0.1:2
Eq1= Nh*(Tsy-x)==(((ZTcevre*(x-y)*x)/(Rr+1))-((ZTcevre*(x-y)^2)/(2*(Rr+1)^2))+(x-y));
Eq2=(y-1)/Nk ==(((ZTcevre*(x-y)*y)/(Rr+1))-((ZTcevre*(x-y)^2)/(2*(Rr+1)^2))+(x-y));
[X,Y]=solve(Eq1,Eq2,x,y)
pretty(X)
% eqns = [Eq1,Eq2];
% S=solve(eqns, [x y]);
% S.x
% S.y
end
end
Sorunu çözdük,teşekkürler:)
clc;
clear all;
a=436*10^-6;
rho=2.2*10^-5;
k=2.6;
Z=a^2/(rho*k);
Tcevre=-5+273;
ZTcevre=Z*Tcevre;
Ts=408.15;
Tsy=Ts/Tcevre;
h1=106.6575;
A1=0.04*0.04;
h2=53.3320;
A2=37*10^-4;
Nh=(h1*A1)/(0.9*h2*A2);
syms x y
Nkv = 0.1:0.1:1;
Rrv = 1:0.1:2;
T=[];
for k1 = 1:numel(Nkv)
Nk = Nkv(k1);
for k2 = 1:numel(Rrv)
i=i+1;
Rr = Rrv(k2);
Eq1= Nh*(Tsy-x)==(((ZTcevre*(x-y)*x)/(Rr+1))-((ZTcevre*(x-y)^2)/(2*(Rr+1)^2))+(x-y));
Eq2=(y-1)/Nk ==(((ZTcevre*(x-y)*y)/(Rr+1))-((ZTcevre*(x-y)^2)/(2*(Rr+1)^2))+(x-y));
[X,Y]=vpasolve(Eq1,Eq2,x,y);
%Ty1(k1,k2) = max(double(X));
%Ty2(k1,k2) = max(double(Y));
% T=table(Ty1',Ty2');
T= [T ; max(double(X)), max(double(Y))];
filename='exceltablo.xlsx';
% T1 = array2table(Ty1);
% T2 = array2table(Ty2);
% T = [T1,T2]
end
end
xlswrite(filename,T,1,'D1');
Denklemlerinizdeki eşitliğin sağ tarafını doğru biçimde yazdığınızdan emin olun. Yani sağ tarafında değişken yerine sadece sayı olmasına çalışın.
Buradaki sayfada detaylı açıklama var: https://matlabturkiye.com/makaleler/04/dogrusal-denklem-sistemi-matlab-linsolve-cozumu.html
[X,Y]=solve(Eq1,Eq2,x,y) %yerine
[X,Y]=vpasolve(Eq1,Eq2,x,y) %kullandım ve 3 e 1 lik bir matris elde ettim örneğin;
X =
-1.0004331917309024917148552934076
1.3237819140436613343500464837089
-9.7412204925471576811909996474703
Y =
-6.8966508304310892699553626413413
1.1857199556418528643244110259822
-2.7378182112454581959372372580125
bu çıkan değerlerin max değeri içinde
max(X)
max(Y) %yazdım
şimdi bunu bir tablo halinde göstermek istiyorum aşağıdaki kod olmuyor başka nasıl yapabilirim;
syms x y
for Nk=0.1:0.1:1
for Rr=1:0.1:2
Eq1= Nh*(Tsy-x)==(((ZTcevre*(x-y)*x)/(Rr+1))-((ZTcevre*(x-y)^2)/(2*(Rr+1)^2))+(x-y));
Eq2=(y-1)/Nk ==(((ZTcevre*(x-y)*y)/(Rr+1))-((ZTcevre*(x-y)^2)/(2*(Rr+1)^2))+(x-y));
[X,Y]=vpasolve(Eq1,Eq2,x,y)
Ty1=max(X)
Ty2=max(Y)
T=table(Ty1,Ty2)
end
end
filename='exceltablo.xlsx';
writetable(T,filename,'Sheet',1,'Range','A1')
Tabloya yazdırma konusunda yakın zamanda bir soru sorulmuştu, aşağıdaki linkteki en son cevabı incelerseniz yardımcı olabilir:
for döngüsünden çıkan sonuçlarla grafik oluşturma münkün mü?
Yöneticinin verdiği kodda Tabloda değerleri alt alta yazmıyor ki. Son oluşturduğum kodu deneyerek buna şahit olabilirsiniz. Burda 10arlı şekilde yan yana yazıyor.
clc
clear
a=436*10^-6;
rho=2.2*10^-5;
k=2.6;
Z=a^2/(rho*k);
Tcevre=-5+273;
ZTcevre=Z*Tcevre;
Ts=408.15;
Tsy=Ts/Tcevre;
h1=106.6575;
A1=0.04*0.04;
h2=53.3320;
A2=37*10^-4;
Nh=(h1*A1)/(0.9*h2*A2);
syms x y
Nkv = 0.1:0.1:1;
Rrv = 1:0.1:2;
for k1 = 1:numel(Nkv)
Nk = Nkv(k1);
for k2 = 1:numel(Rrv)
Rr = Rrv(k2);
Eq1= Nh*(Tsy-x)==(((ZTcevre*(x-y)*x)/(Rr+1))-((ZTcevre*(x-y)^2)/(2*(Rr+1)^2))+(x-y));
Eq2=(y-1)/Nk ==(((ZTcevre*(x-y)*y)/(Rr+1))-((ZTcevre*(x-y)^2)/(2*(Rr+1)^2))+(x-y));
[X,Y]=vpasolve(Eq1,Eq2,x,y);
Ty1(k1,k2) = double(max(X))
Ty2(k1,k2) = double(max(Y))
T=table(Ty1',Ty2');
filename='exceltablo.xlsx';
writetable(T,filename,'Sheet',1,'Range','D1');
% T1 = array2table(Ty1);
% T2 = array2table(Ty2);
% T = [T1,T2]
end
end