声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1007|回复: 4

[综合讨论] 解一组非线性方程组遇到的奇怪问题(求助)

[复制链接]
发表于 2009-9-10 01:18 | 显示全部楼层 |阅读模式

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

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

x
解一组非线性方程组log10(a)=-x1*(Ta-x3)/(x2+Ta-x3)+x1*(Tb-x3)/(x2+Tb-x3);

x1,x2,x3为未知数
a,Ta,Tb 为常数,对应3组数值为

a=23,Ta=120,Tb=130.
a=44,Ta=130,Tb=150.
a=14,Ta=150,Tb=170.

Ta,Tb 分别代表温度

开始先在matlab自己编牛顿拉尔森法解,结果Jacobian矩阵 singular了,算了一下determinant 大概是10的负8次左右。用 J\(-F) 或者 pinv(J)*(-F) 均不能得到满意的结果。

后采用matlab自带 fsolve开始解。 结果也不能算得满意结果,带入结果验算,每组数据大概10%到20%的偏差。

但是如果只用其中两组数据倒是可以拟合得到对这两组数据完美拟合的结果,但是对另外一组数据不适用,大概有20%偏差。

后来化简了一下式子,把分母都乘上去了,仍然不能算得满意结果。

无奈下找到被吹的天花乱坠的1stopt,还是不能算得合理结果。 计算结果对第一第三组数据符合,但是对第二组数据偏差30%左右。分母乘上去以后,偏差更大,结果完全没意义了。。。

想请问一下论坛上的高手们,有什么方法可以算得结果么,或者这个式子对应这组数据,根本就算不出来。 可怜我老板一个劲说3组数据,3个未知数,肯定可以算出确定解的。。。

这两天被这东西折磨死了,大哥们帮帮我吧。。
回复
分享到:

使用道具 举报

发表于 2009-9-10 14:39 | 显示全部楼层
三个方程,三个未知数并不能保证一定有实数解存在。所给方程和数据是否都正确?

评分

1

查看全部评分

 楼主| 发表于 2009-9-10 17:19 | 显示全部楼层
又检查了一遍,方程和数据没有问题。

我也觉得可能这个问题根本就不能解出实数解

想请问一下,如果这个问题不能解出完美的解,能不能通过某种方法解得近似解,保持a的偏差都在5%以内

忘记说了, 初始值可以用 x1=8.86,  x2=101.6,  x3=136.5

[ 本帖最后由 ChaChing 于 2009-9-10 20:22 编辑 ]
发表于 2009-9-11 17:00 | 显示全部楼层
可以用优化的方法求得最优解
发表于 2009-9-11 18:25 | 显示全部楼层
的确如楼上所, 试试fminsearch, lsqnonlin ...
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-22 05:37 , Processed in 0.188602 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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