24小时热门版块排行榜    

查看: 627  |  回复: 2
当前主题已经存档。

zzhhmc

木虫 (正式写手)

[交流] 【求助】fsolve解非线性方程组的问题【已解决】

目的:解由E1、E2、E3组成的非线性方程组。求解变量为q,Tf1,Tf2
function S=myfun(q,Tf1,Tf2)

%输入常数
Ts=33
Ta=20
a=4
a=0.001*a
%第一个方程E1的表达式:
b = (2.438714 + 0.7784798 * 0.01 * (0.5 * (Ts + Tf1)) - 0.17553068 * 10 ^ (-5) * (0.5 * (Ts + Tf1)) ^ 2) * 10 ^ (-2)
hcon=b/a
hr=( 1 / (1 / 0.97 + 1 / 0.97 - 1))* 5.67 * ((Ts + 273) ^ 4 - (Tf1 + 273) ^ 4) / (Ts - Tf1) * 10 ^ (-8)
hm=hcon+hr
E1=q-hm*(Ts-Tf1)

%第二个方程E2的表达式
E2=q-(Tf1-Tf2)/(0.155*0.2325)

%第三个方程E3的表达式
%b1,Cp,p,d,v均是与Tf2有关的函数
b1 = (2.438714 + 0.7784798 * 0.01 * (0.5*(Tf2+Ta)) - 0.17553068 * 10 ^ (-5) * (0.5*(Tf2+Ta)) ^ 2) * 10 ^ (-2)
Cp = (1005.28 - 0.260338 * 0.1 *(0.5*(Tf2+Ta)) + 0.6370071 * 10 ^ (-3) * (0.5*(Tf2+Ta)) ^ 2) * 10 ^ (-3)
p =1.2926 - 0.00463 * (0.5*(Tf2+Ta)) + 1.2619 * 10 ^ (-5) * (0.5*(Tf2+Ta)) ^ 2
d=1 / ((0.5*(Tf2+Ta)) + 273)
v = (13.213 + 0.09115128 * (0.5*(Tf2+Ta)) + 0.8758729 * 10 ^ (-4) * (0.5*(Tf2+Ta)) ^ 2) * 10 ^ (-6)
%根据b1,Cp,p,d,v得出hcov
hcov=0.15*((9.81*d*b1^2*p*Cp*(Tf2-Ta))/v)^(1/3)
Hr1 =0.97* 5.67 * ((Tf2 + 273) ^ 4 - (Ta + 273) ^ 4) / (Tf2 - Ta) * 10 ^ (-8)
ht=hcov+Hr1
E3=q-ht*(Tf2-Ta)
%构建myfun函数
S=[E1,E2,E3]

建立myfun函数后,将其保存为myfun.m。然后在命令窗口中运行
>> [q,Tf1,Tf2]=fsolve('myfun',[40,20,20])

结果出现以下错误:
??? Input argument 'Tf1' is undefined.

Error in ==> G:\matlab\work\myfun.m
On line 9  ==> b = (2.438714 + 0.7784798 * 0.01 * (0.5 * (Ts + Tf1)) - 0.17553068 * 10 ^ (-5) * (0.5 * (Ts + Tf1)) ^ 2) * 10 ^ (-2)

Error in ==> G:\matlab\toolbox\optim\fsolve.m
On line 161  ==>       fuser = feval(funfcn{3},x,varargin{:});

请各位高手指点,我试了很多次也没有成功。请把你们求解的结果也附上来吧

[ Last edited by nono2009 on 2009-11-1 at 15:21 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hitzhang

木虫 (正式写手)

★ ★ ★ ★ ★
nono2009(金币+5,VIP+0):谢谢交流!欢迎常来。 9-23 06:26
引用回帖:
Originally posted by zzhhmc at 2009-8-24 10:29:
目的:解由E1、E2、E3组成的非线性方程组。求解变量为q,Tf1,Tf2
function S=myfun(q,Tf1,Tf2)

%输入常数
Ts=33
Ta=20
a=4
a=0.001*a
%第一个方程E1的表达式:
b = (2.438714 + 0.7784798 * 0.01 * (0.5 ...

估计是fsolve用法上的错误。你这样搞一下:

function S=myfun(x)

q=x(1);
Tf1=x(2);
Tf2=x(3);



%输入常数
Ts=33
Ta=20
a=4
a=0.001*a
%第一个方程E1的表达式:
........
2楼2009-08-26 15:13:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzhhmc

木虫 (正式写手)

nono2009(金币+0,VIP+0):谢谢说明。欢迎常来仿真模拟版交流。 11-1 15:21
sorry, 我前段时间长时间外出,没有看到回复。感谢您的回复,很有帮助。问题已经解决,好在版主已经替我给了金币。谢谢斑竹。
3楼2009-11-01 15:13:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zzhhmc 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见