找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 9142|回复: 51

[【理工类】] (无奖求助)二元非线性方程求根问题

[复制链接]
发表于 2007-7-16 20:04:15 | 显示全部楼层 |阅读模式
这是热力学里面的一个计算模型参数的问题,细枝末节不说了,请大家帮忙设计算法。

俺不懂编程,有了算法之后我设法用excel迭代或者试差出来。

不大准确的参考答案:Λ12=1.01818  Λ21=0.3378

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2007-7-16 20:15:58 | 显示全部楼层
我来哈嘛 
回复

使用道具 举报

发表于 2007-7-16 20:23:54 | 显示全部楼层
问题是这个是非线性的方程的话,近似解可能没有什么实质性的帮助。
增加小量或减少小量未必能使方程组收敛。。

让兄弟再想想。
回复

使用道具 举报

 楼主| 发表于 2007-7-16 20:25:27 | 显示全部楼层
应该有点用。关键是怎么在excel表中实现二维寻优?
回复

使用道具 举报

发表于 2007-7-16 20:27:54 | 显示全部楼层
这个用mathematica应该很容易就搞定了,只是没解过。
我先看看,要能行,直接把结果告诉你。呵呵
回复

使用道具 举报

发表于 2007-7-16 20:29:36 | 显示全部楼层
syms A12
syms A21
A1=-log(0.842+A12*0.158)+0.158*(A12/(0.842+A12*0.158)-A21/(0.158+A21*0.842))-log(1.0082);
A2=-log(0.158+A21*0.842)+0.842*(A21/(0.158+A21*0.842)-A12/(0.842+A21*0.158))-log(1.6719);
[A12,A21]=solve(A1,A2);
回复

使用道具 举报

发表于 2007-7-16 20:30:37 | 显示全部楼层
A12 =

1.9747578666591579206365019083802


A21 =

.32498766610393852810731838678346
回复

使用道具 举报

发表于 2007-7-16 20:32:24 | 显示全部楼层
不会吧?还真行?
高手阿
回复

使用道具 举报

发表于 2007-7-16 20:37:09 | 显示全部楼层
这个不算是非线性方程组吧
回复

使用道具 举报

 楼主| 发表于 2007-7-16 20:41:34 | 显示全部楼层
引用第8楼xiangguang于2007-07-16 20:37发表的 :
这个不算是非线性方程组吧

是1.6719哦,帮忙验算一下子撒·
回复

使用道具 举报

发表于 2007-7-16 20:58:39 | 显示全部楼层
我验证哈嘛 
回复

使用道具 举报

发表于 2007-7-16 21:01:30 | 显示全部楼层
确实有错
是因为数字输入错误
方法没有错
回复

使用道具 举报

 楼主| 发表于 2007-7-16 21:03:58 | 显示全部楼层
程序语言对我来说高深了一点。
回复

使用道具 举报

发表于 2007-7-16 21:05:22 | 显示全部楼层
A12 =

.20525281894751547201815438632882


A21 =

1.2469407259147580833183468182005
回复

使用道具 举报

发表于 2007-7-16 21:08:29 | 显示全部楼层
醉兄还是认了他的结果吧
赫赫
我刚请教了下
根据经验,除非是死机算不起来,matlab算错这种问题的可能性还是很低的
回复

使用道具 举报

发表于 2007-7-16 21:09:48 | 显示全部楼层
x=  0.161737474438
y=  1.262459657026
刚刚用Excel编程算的,不知道对不对,

我是这样算的,假设 x 的值,由式(1)可以算出 y 。式(2)等式左端移到等号的右边去,令左边为F,变成式(3),把 y 带入式(3),可以算出 F 值,即,F 是 x 的显函数,问题就变成了求一元非线性方程的根,用牛顿切线法(这学期刚学的),就可以解出来了。

回复

使用道具 举报

发表于 2007-7-16 21:13:33 | 显示全部楼层
15楼方法应该是对的
可是excel计算数据的准确性有的时候值得怀疑。
我曾经拿他算过一维的能带
结果除了周期性还像那么回事
数值就不敢恭维了
回复

使用道具 举报

 楼主| 发表于 2007-7-16 21:41:42 | 显示全部楼层
会不会还有其它解啊?

晓菁的答案是经得起验算,但是,理论上,答案和我给的参考答案相差不会很大的。
回复

使用道具 举报

发表于 2007-7-16 22:03:38 | 显示全部楼层
x = Lambda 12, y =Lambda 21
A =0.158*x/(0.842+0.158*x)-ln(1.0082(0.842+0.158*x))
y=0.158A/(0.158-0.842A)
B=0.842y/(0.158+0.842y)-ln(1.6719(0.158+0.842y))
F=0.842x/(0.842+0.158x)-B

F 是单增函数,所以方程只有一个实根,
回复

使用道具 举报

 楼主| 发表于 2007-7-16 22:20:59 | 显示全部楼层
我是用方程两边的差来验算的,晓菁给出的确实能经得起验算:

  0.16174  1.26246  -1.92917E-08  -2.58488E-06

    但是,实验值应该是在A12=1.01818、A21=0.3378附近。这个结果是书上给出的,但验算不是很理想:

   1.01818  0.3378  0.028741451  0.089545113

     因为算出来的东西是做指数用的,所以我很怀疑书上的结果。

   各位能否用框图或者文字叙述算法?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-5-17 03:49 , Processed in 0.376705 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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