(无奖求助)二元非线性方程求根问题
这是热力学里面的一个计算模型参数的问题,细枝末节不说了,请大家帮忙设计算法。俺不懂编程,有了算法之后我设法用excel迭代或者试差出来。
不大准确的参考答案:Λ12=1.01818Λ21=0.3378 我来哈嘛 问题是这个是非线性的方程的话,近似解可能没有什么实质性的帮助。
增加小量或减少小量未必能使方程组收敛。。
让兄弟再想想。 应该有点用。关键是怎么在excel表中实现二维寻优? 这个用mathematica应该很容易就搞定了,只是没解过。
我先看看,要能行,直接把结果告诉你。呵呵 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); A12 =
1.9747578666591579206365019083802
A21 =
.32498766610393852810731838678346 不会吧?还真行?
高手阿 这个不算是非线性方程组吧 引用第8楼xiangguang于2007-07-16 20:37发表的 :
这个不算是非线性方程组吧
是1.6719哦,帮忙验算一下子撒· 我验证哈嘛 确实有错
是因为数字输入错误
方法没有错 程序语言对我来说高深了一点。 A12 =
.20525281894751547201815438632882
A21 =
1.2469407259147580833183468182005 醉兄还是认了他的结果吧
赫赫
我刚请教了下
根据经验,除非是死机算不起来,matlab算错这种问题的可能性还是很低的 x=0.161737474438
y=1.262459657026
刚刚用Excel编程算的,不知道对不对,
我是这样算的,假设 x 的值,由式(1)可以算出 y 。式(2)等式左端移到等号的右边去,令左边为F,变成式(3),把 y 带入式(3),可以算出 F 值,即,F 是 x 的显函数,问题就变成了求一元非线性方程的根,用牛顿切线法(这学期刚学的),就可以解出来了。
15楼方法应该是对的
可是excel计算数据的准确性有的时候值得怀疑。
我曾经拿他算过一维的能带
结果除了周期性还像那么回事
数值就不敢恭维了 会不会还有其它解啊?
晓菁的答案是经得起验算,但是,理论上,答案和我给的参考答案相差不会很大的。 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 是单增函数,所以方程只有一个实根, 我是用方程两边的差来验算的,晓菁给出的确实能经得起验算:
0.161741.26246-1.92917E-08-2.58488E-06
但是,实验值应该是在A12=1.01818、A21=0.3378附近。这个结果是书上给出的,但验算不是很理想:
1.018180.33780.0287414510.089545113
因为算出来的东西是做指数用的,所以我很怀疑书上的结果。
各位能否用框图或者文字叙述算法?