用matlab解复杂方程组

来源:百度知道 编辑:UC知道 时间:2024/06/17 22:52:19
进行了一些修改:
function dw
Tf=300;
V=0.6*4.6*0.3/sqrt(2)*sqrt(2*9.8*2.2*(Tf-302)/302);
Nu=0.0158*(V/4.6/0.04*0.079/0.00016)^0.8;
h=0.0267*Nu/2.2;
q=1.165*V*1005*(Tf-302)/0.75/4.6/2.2;
eq1=sym('(Tg-302)/(1/23.26+0.01/1.1)+h*(Tg-Tf)+hwg*(Tg-Tw)=0.7*969');
eq5=sym('h*(Tg-Tf)+h*(Tw-Tf)=q');
eq7=sym('h*(Tw-Tf)+1/(1/8.72+0.2/0.49)*(Tw-299)+hwg*(Tw-Tg)=0');
[Tg,Tw,hwg]=solve(eq1,eq5,eq7,'Tg,Tw,hwg');
Tg=subs(Tg);Tw=subs(Tw);hwg=subs(hwg);

x=fsolve(@myfuns,x0);

function eqs=myfuns(x)
Tg=x(1);h=x(2);Tf=x(3);hwg=x(4);Tw=x(5);q=x(6);Nu=x(7);V=x(8);
eq1=(Tg-302)/(1/23.26+0.01/1.1)+h*(Tg-Tf)+hwg*(Tg-Tw)-0.7*969;
eq2=5.67*10^-8*(Tg^2+Tw^2)*(Tw+Tg)/(1/0.8+1/0.94-1)-hwg;
eq3=0.0267*Nu/2.2-h;
eq4=0.0158*(V/4.6/0.04*0.079/0.000016)^0.8-Nu;
eq5=h*(Tg-Tf)+h*(Tw-Tf)-q;
eq6=1.165*V*1005*(Tf-302)/0.75/4.6/2.2-q;
eq7=h*(Tw-Tf)+1/(1/8.72+0.2/0.49)*(Tw-29

总体思路:根据要保留元素的条件使用find()命令或者使用for循环对每个元素进行检测,不满足条件的元素赋值为0

参考代码
clc
clear all
close all
%-- 使用find()语句 --%
x = [1+2i 2+3i 3+4i];
ix = find(x~=(2+3i)); % 只保留2+3i,其他元素变成0
x(ix) = 0;
disp('x=');
disp(x);
%--------------------%
%-- 使用for循环语句 --%
x1 = [1+2i -2+3i 3+4i -8-5i];
for i=1:length(x1) % 假设只保留元素实部大于零的
if( real(x1(i))<0 )
x1(i) = 0;
end
end
disp('x1=');
disp(x1);
%--------------------%

输出效果
x=
0.0000 + 0.0000i 2.0000 + 3.0000i 0.0000 + 0.0000i
x1=
1.0000 + 2.0000i 0.0000 + 0.0000i 3.0000 + 4.0000i 0.0000 + 0.0000i

function hhh
To=400
Tf=0.75*To+0.25*302
V=0.6*4.6*0.3/sqrt(1+1)*sqrt(2*9.8*2.5*(Tf-302)/302)
Nu=4.9+0.0606*(V/4.6/0.04*0.04/0.000016*0.701*2*0.04/2.5)^1.2/(1+0.0909*(V/4.6/0.04*0.04/0.000016*0.701*2*0.04/2.5)^0.7*0.701^0.17)
h=0.0267*Nu/2.5
q=1.128*V*1005*(Tf-302)/0.75/4.6