醉乡常客 发表于 2007-7-16 20:04:15

(无奖求助)二元非线性方程求根问题

这是热力学里面的一个计算模型参数的问题,细枝末节不说了,请大家帮忙设计算法。

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

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

xiangguang 发表于 2007-7-16 20:15:58

我来哈嘛 

resonance 发表于 2007-7-16 20:23:54

问题是这个是非线性的方程的话,近似解可能没有什么实质性的帮助。
增加小量或减少小量未必能使方程组收敛。。

让兄弟再想想。

醉乡常客 发表于 2007-7-16 20:25:27

应该有点用。关键是怎么在excel表中实现二维寻优?

resonance 发表于 2007-7-16 20:27:54

这个用mathematica应该很容易就搞定了,只是没解过。
我先看看,要能行,直接把结果告诉你。呵呵

xiangguang 发表于 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);
=solve(A1,A2);

xiangguang 发表于 2007-7-16 20:30:37

A12 =

1.9747578666591579206365019083802


A21 =

.32498766610393852810731838678346

resonance 发表于 2007-7-16 20:32:24

不会吧?还真行?
高手阿

xiangguang 发表于 2007-7-16 20:37:09

这个不算是非线性方程组吧

醉乡常客 发表于 2007-7-16 20:41:34

引用第8楼xiangguang于2007-07-16 20:37发表的 :
这个不算是非线性方程组吧

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

xiangguang 发表于 2007-7-16 20:58:39

我验证哈嘛 

xiangguang 发表于 2007-7-16 21:01:30

确实有错
是因为数字输入错误
方法没有错

醉乡常客 发表于 2007-7-16 21:03:58

程序语言对我来说高深了一点。

xiangguang 发表于 2007-7-16 21:05:22

A12 =

.20525281894751547201815438632882


A21 =

1.2469407259147580833183468182005

resonance 发表于 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 的显函数,问题就变成了求一元非线性方程的根,用牛顿切线法(这学期刚学的),就可以解出来了。

resonance 发表于 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.161741.26246-1.92917E-08-2.58488E-06

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

   1.018180.33780.0287414510.089545113

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

   各位能否用框图或者文字叙述算法?
页: [1] 2 3
查看完整版本: (无奖求助)二元非线性方程求根问题