声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1411|回复: 7

[编程技巧] 用fsolve求两个未知数出错求助

[复制链接]
发表于 2007-11-17 03:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
各位大大,不好意思。我以下这个问题想了几天,还是没办法找出问题所在。我有两个unknown(vfg2,x2)和两个equations(vfg2=vf2*(1-x2)-hg2 和 1000*hf2+1000*hfg2*x2+[G^2*(vf2+vfg2*x2)^2]/2-1000*h1+V1^2/2)。我要求x2.其他的variable已经在以上解决了。 我运用了fsolve 来解决,却一直出现error.可是却想不到问题错在哪儿?

有高手可以帮帮忙吗????谢谢。。。

% for refrigerant R22
% Input v - specific volume
%       h - enthalpy
%       V - velocity
format long
m=input('input the value of m=');
t1=input('input the value of t1=');
t2=input('input the value of t2=');
d=input('input the value of d=');
A=pi*d^2/4;
G=m/A;
x1=0;
vf1=1*10^-8*t1^2+2^-6*t1+0.0008;
vf2=1*10^-8*t2^2+2^-6*t2+0.0008;
vg1=3*10^-5*t1^2-0.0023*t1+0.0705;
vg2=3*10^-5*t2^2-0.0023*t2+0.0705;
v1=vf1*(1-x1)+vg1*x1;
V1=G*v1
hf1=0.0018*t1^2+1.3414*t1+199.97;
hf2=0.0018*t2^2+1.3414*t2+199.97;
hfg2=-0.0034*t2^2-0.7528*t2+198.85;
hg1=-0.0015*t1^2+0.5869*t1+398.84;
hg2=-0.0015*t2^2+0.5869*t2+398.84;
h1=hf1*(1-x1)+hg1*x1

options=optimset('Display','iter')
F=inline('vfg2-vf2*(1-x2)+hg2*x2;1000*hf2+1000*hfg2*x2+[G^2*(vf2+vfg2*x2)^2]/2-1000*h1+V1^2/2')
InitialGuess=[0;0];
[x2,fval]=fsolve(F,InitialGuess,options)

[ 本帖最后由 eight 于 2007-11-17 10:55 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-11-17 10:55 | 显示全部楼层
原帖由 denisestar 于 2007-11-17 03:08 发表
各位大大,不好意思。我以下这个问题想了几天,还是没办法找出问题所在。我有两个unknown(vfg2,x2)和两个equations(vfg2=vf2*(1-x2)-hg2 和 1000*hf2+1000*hfg2*x2+[G^2*(vf2+vfg2*x2)^2]/2-1000*h1+V1^2/2)。 ...

请先看看各个置顶贴,然后检查一下你的问题是否描述清楚
 楼主| 发表于 2007-11-18 06:12 | 显示全部楼层
不好意思。我再清楚讲解我的问题(对不起,中文程度不太好,请见谅)

我又两个公式, 即vfg2=vf2*(1-x2)-hg2 和 *hf2+1000*hfg2*x2+[G^2*(vf2+vfg2*x2)^2]/2=1000*h1-V1^2/2

在这两个公式中,其中vf2,hg2,hfg2,G,vf2,h1,V1 已经知道,剩下vfg2 和 x2 是未知。

从这两个公式中,我需要求vfg2 和x2.我尝试用fsolve 来解决,如下:

options=optimset('Display','iter')
F=inline('vfg2-vf2*(1-x2)+hg2*x2;1000*hf2+1000*hfg2*x2+[G^2*(vf2+vfg2*x2)^2]/2-1000*h1+V1^2/2')
InitialGuess=[0;0];
[x2,fval]=fsolve(F,InitialGuess,options)


可是却一直出现error, 想得我头都快爆炸了。。。
请高手帮帮忙。。。谢谢
发表于 2007-11-18 09:35 | 显示全部楼层
可是却一直出现error

到底是什么error?这是我要你看置顶贴的主要目的
发表于 2007-11-18 10:52 | 显示全部楼层

回复 #3 denisestar 的帖子

inline不能建立方程组,你要用m文件代替
 楼主| 发表于 2007-11-18 20:13 | 显示全部楼层
Sorry, I got what u mean. :DD
Error shown:


??? Error using ==> inline.feval at 23
Not enough inputs to inline function.

Error in ==> fsolve at 193
        fuser = feval(funfcn{3},x,varargin{:});
发表于 2007-11-18 20:46 | 显示全部楼层
用1stOpt很方便啊,假如 m=1,t1=2,t2=3,d=4

代码:
Constant m=1,t1=2,t2=3,d=4;
Constant
A=pi*d^2/4,
G=m/A,
x1=0,
vf1=1*10^-8*t1^2+2^-6*t1+0.0008,
vf2=1*10^-8*t2^2+2^-6*t2+0.0008,
vg1=3*10^-5*t1^2-0.0023*t1+0.0705,
vg2=3*10^-5*t2^2-0.0023*t2+0.0705,
v1=vf1*(1-x1)+vg1*x1,
V1=G*v1,
hf1=0.0018*t1^2+1.3414*t1+199.97,
hf2=0.0018*t2^2+1.3414*t2+199.97,
hfg2=-0.0034*t2^2-0.7528*t2+198.85,
hg1=-0.0015*t1^2+0.5869*t1+398.84,
hg2=-0.0015*t2^2+0.5869*t2+398.84,
h1=hf1*(1-x1)+hg1*x1;
Function vfg2-vf2*(1-x2)+hg2*x2;
         1000*hf2+1000*hfg2*x2+(G^2*(vf2+vfg2*x2)^2)/2-1000*h1+V1^2/2;

结果:
vfg2 = 2.80008954480262
x2 = -0.00687013194790977
 楼主| 发表于 2007-11-18 23:54 | 显示全部楼层
[quote]原帖由 dingd 于 2007-11-18 20:46 发表
用1stOpt很方便啊,假如 m=1,t1=2,t2=3,d=4

if using Matlab?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 21:26 , Processed in 0.070257 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表