Soru sorSolve Komutu ile çözdürünce z ile root geliyor
Daryun tarafından 6 yıl önce soruldu

Kodlamam Bu şekilde
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
6 Cevap
En iyi cevap
Daryun tarafından 6 yıl önce cevaplandı

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');
sayginer Yönetici tarafından 6 yıl önce cevaplandı

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

Daryun tarafından 6 yıl önce cevaplandı
[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')



hakkans Yönetici tarafından 6 yıl önce cevaplandı

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ü?

sayginer Yönetici tarafından 6 yıl önce cevaplandı

Tablo olarak Excel'e mi yazdirmak istiyorsunuz?

Daryun tarafından 6 yıl önce cevaplandı

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