24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1861  |  回复: 9

lilei119

新虫 (正式写手)

[交流] 【求助】多元方程组求解及拟合已有2人参与

多元非线性方程组:
(x10-x1)/y=abx1/(1+bx1+cx2+dx3+ex4)
(x20-x2)y=acx2/(1+bx1+cx2+dx3+ex4)
(x30-x3)/y=adx3/(1+bx1+cx2+dx3+ex4)
(x40-x4)/y=aex4/(1+bx1+cx2+dx3+ex4)
其中x10,x20,x30,x40 都是已知的常数,abcde是待拟合的常数,现已知一系列的x1,x2,x3,x4和y值,要拟合出上述abcde5个参数,上面的方程组看样子是无法手工消元然后用一元非线性拟合了,类似的文献说用牛顿-拉弗逊迭代法,各位专家帮看看这个问题解决起来的难度?并告知具体或者大概步骤。不甚感激
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

forcal

禁虫 (初入文坛)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
xiegangmai(金币+2): 鼓励讨论交流! 2011-03-12 20:20:51
zzuwangshilei(金币+1): 鼓励交流 2011-03-12 20:26:58
本帖内容被屏蔽

2楼2011-03-12 20:19:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lilei119

新虫 (正式写手)


xiegangmai(金币+1): 鼓励讨论交流! 2011-04-10 21:42:25
引用回帖:
Originally posted by forcal at 2011-03-12 20:19:36:
如果楼主方便,可以给出数据,没有数据,就不知道难度有多大。
一般的拟合软件都可以给出解决此类问题的代码,这没有任何难度。
Forcal解法参考:http://www.forcal.net/sysm/forcal9/fchtm/fcopt.htm

谢谢回复,
问题是这样的,
有一个方程组:

(x10-x1)/y=a*b*x1/(1+b*x1+c*x2+d*x3+e*x4)
(x20-x2)y=a*c*x2/(1+b*x1+c*x2+d*x3+e*x4)
(x30-x3)/y=a*d*x3/(1+b*x1+c*x2+d*x3+e*x4)
(x40-x4)/y=a*e*x4/(1+b*x1+c*x2+d*x3+e*x4)

x10,x20,x30,x40,y是自变量,x1,x2,x3,x4是因变量,a,b,c,d,e是常数,现已给出26组关于x1,x2,x3,x4x10,x20,x30,x40,y数据,要拟合a,b,c,d,e 这5个
参数。
拟合时的约束条件是让SSD这个值最小:

SSD = Σ[ (x1 – x1 (model))2 / (x10)2+ (x2- x2(model))2 / (x20)2+ (x3- x3(model))2 /(x30)2 + (x4- x4(model))2 / (x40) 2]
这里:x1(model)预测值,

下面用化学语言重新表达一遍上述问题。

y是吸附剂,x1,x2,x3,x4是4个被吸附物质,每个物质的吸附都符合Langmuir 模型,

即单独吸附x1的时候,满足公式:

(x10-x1)/y=a*b*x1/(1+b*x1)
,x10是x1的初始浓度,x1是x1吸附平衡时的浓度,y是吸附剂的投量。a,b是吸附常数。

现把x1,x2,x3,x4和y同时放入反应器,简单计算后各物质平衡浓度会同时满足以下4个方程:

(x10-x1)/y=a*b*x1/(1+b*x1+c*x2+d*x3+e*x4)
(x20-x2)y=a*c*x2/(1+b*x1+c*x2+d*x3+e*x4)
(x30-x3)/y=a*d*x3/(1+b*x1+c*x2+d*x3+e*x4)
(x40-x4)/y=a*e*x4/(1+b*x1+c*x2+d*x3+e*x4)
即:x10,x20,x30,x40是各物质的初始浓度,x1,x2,x3,x4吸附平衡后各物质浓度,a,b,c,d,e是吸附常数,现有26组实验,已测各物质的初始浓度和吸附平衡之后的浓度,现要拟合a,b,c,d,e 这5个
参数。

拟合时的约束条件是让SSD这个值最小:

SSD = Σ[ (x1 – x1 (model))2 / (x10)2+ (x2- x2(model))2 / (x20)2+ (x3- x3(model))2 /(x30)2 + (x4- x4(model))2 / (x40) 2]
这里:x1(model)预测值,

数据如下
Y        X10        X1        X20        X2        X30        X3        X40        X4
0.098709898        0        0        0        0        0.001071429        1.2854E-05        0        0
0.034516927        0        0        0        0        0.001071429        2.27537E-05        0        0
0.023548457        0        0        0        0        0.001071429        4.57405E-05        0        0
0.009339838        0        0        0        0        0.001071429        0.000158461        0        0
0.001373626        0        0        0        0        0.001071429        0.000714286        0        0
0.000446429        0        0        0        0        0.001071429        0.000928571        0        0
2.67857E-05        3.74667E-05        0.0000324        0.000103226        9.03226E-05        0        0        0        0
5.35714E-05        3.81333E-05        2.86667E-05        0.000103226        7.41935E-05        0        0        0        0
8.92857E-05        3.69333E-05        0.000022        0.0001        5.51613E-05        0        0        0        0
0.000142857        0.0000364        0.0000136        9.83871E-05        2.99355E-05        0        0        0        0
0.00018125        0.0000368        8.66667E-06        0.000102903        1.67742E-05        0        0        0        0
0.000196429        0.000036        5.73333E-06        9.6129E-05        9.6129E-06        0        0        0        0
0.000221429        3.54667E-05        3.06667E-06        9.45161E-05        4.80645E-06        0        0        0        0
0.000267857        0.000034        2.53333E-07        9.35484E-05        2.77419E-06        0        0        0        0
0.000175        6.66667E-06        3.08889E-07        9.03226E-05        2.49336E-06        0        0        0        0
0.0001125        6.66667E-06        2.21111E-06        9.03226E-05        2.32827E-05        0        0        0        0
3.39286E-05        6.66667E-06        4.85556E-06        9.03226E-05        6.57495E-05        0        0        0        0
7.14286E-05        6.66667E-06        3.67778E-06        9.03226E-05        4.78178E-05        0        0        0        0
0.00011        6.66667E-06        2.28889E-06        9.03226E-05        2.57306E-05        0        0        0        0
0.000151786        6.66667E-06        0.0000012        9.03226E-05        1.05882E-05        0        0        0        0
0.000210714        6.66667E-06        0.00000011        9.03226E-05        1.0019E-06        0        0        0        0
8.03571E-05        2.26667E-06        1.5569E-06        9.67742E-05        4.96451E-05        0.001066071        0.001066071        0.0000044        4.30976E-06
0.000139286        0.0000034        1.13333E-06        9.67742E-05        1.22203E-05        0.00105        0.00105        3.26667E-06        3.06667E-06
0.000214286        4.06667E-06        4.46554E-07        9.67742E-05        1.06928E-06        0.001028571        0.001028571        0.0000026        2.22222E-06
0.000321429        4.53333E-06        1.51089E-07        9.67742E-05        2.6058E-07        0.000985714        0.000985714        2.13333E-06        1.3468E-06
0.000535714        4.99333E-06        4.66667E-08        9.67742E-05        9.67742E-08        0.000942857        0.000942857        1.67333E-06        6.06667E-07
3楼2011-04-10 08:18:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

forcal

禁虫 (初入文坛)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
xiegangmai(金币+2): 谢谢应助! 2011-04-10 21:42:38
本帖内容被屏蔽

4楼2011-04-10 21:30:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lilei119

新虫 (正式写手)

引用回帖:
Originally posted by forcal at 2011-04-10 21:30:21:
看不出楼主的目标函数有多少意义,以下目标函数不可以吗?
[(x10-x1)/y-a*b*x1/(1+b*x1+c*x2+d*x3+e*x4)]^2
+[(x20-x2)/y-a*c*x2/(1+b*x1+c*x2+d*x3+e*x4)]^2
+[(x30-x3)/y-a*d*x3/(1+b*x1+c*x2+d*x3+e*x4)]^2 ...

谢谢你,此外,关于目标函数,文献是用的这个,所以想对比一下我和他的结果如何。如果方便实现的话能否帮弄弄按我我的目标函数再走一下?此外,最后那个误差怎么理解?如何用它来说明拟合的精确度?非常感谢,您帮了我的大忙。
此外,我下载了forcal,按您的程序计算后结果不显示,说not registered。请教如何注册?

[ Last edited by lilei119 on 2011-4-11 at 07:13 ]
5楼2011-04-11 06:27:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

forcal

禁虫 (初入文坛)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
xiegangmai(金币+2): 谢谢应助! 2011-04-11 21:02:58
本帖内容被屏蔽

6楼2011-04-11 16:36:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lilei119

新虫 (正式写手)

引用回帖:
Originally posted by forcal at 2011-04-11 16:36:07:
您的目标函数是有些问题的,例如,x10、x20等有时为0,却做了除数,导致目标函数无意义。即便目标函数有意义,但仍感觉会费力不讨好。

最后的误差sqrt[s/(max*4)]用s代替也可,但用sqrt[s/(max*4)]能看出每个 ...

好的,再请教有办法可以求出每个参数的误差?就是每个值写成a+-b的形式。这样似乎更直观,不过不行也没关系,已经帮大忙了。
7楼2011-04-11 22:55:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lilei119

新虫 (正式写手)

引用回帖:
Originally posted by forcal at 2011-04-10 21:30:21:
看不出楼主的目标函数有多少意义,以下目标函数不可以吗?
[(x10-x1)/y-a*b*x1/(1+b*x1+c*x2+d*x3+e*x4)]^2
+[(x20-x2)/y-a*c*x2/(1+b*x1+c*x2+d*x3+e*x4)]^2
+[(x30-x3)/y-a*d*x3/(1+b*x1+c*x2+d*x3+e*x4)]^2 ...

谢谢forcal 老师的回复,约束方程稍微改了该,能否再耽误您时间帮忙看看?

(x10-x1)/y=a*b*x1/(1+b*x1+c*x2+d*x3+e*x4)    (1)
(x20-x2)y=a*c*x2/(1+b*x1+c*x2+d*x3+e*x4)      (2)
(x30-x3)/y=a*d*x3/(1+b*x1+c*x2+d*x3+e*x4)     (3)
(x40-x4)/y=a*e*x4/(1+b*x1+c*x2+d*x3+e*x4)     (4)

x10,x20,x30,x40,y是自变量,x1,x2,x3,x4是因变量,a,b,c,d,e是常数,现已给出26组关于x1,x2,x3,x4x10,x20,x30,x40,y数据,要拟合a,b,c,d,e 这5个
参数。
拟合时的约束条件是让SSD这个值最小:

SSD = Σ[ (x1 – x1 (model))2 + (x2- x2(model))2 + (x3- x3(model))2  + (x4- x4(model))2 ]
SSD = Σ[ (x1 – x1 (model))2 + (x2- x2(model))2 + (x3- x3(model))2  + (x4- x4(model))2 ]
这里:x1,x2,x3,x4是实验测出来的值(数据见下),x1(model),x2(model),x3(model),x4(model)是指上面方程组(方程(1)(2)(3)(4))根据给出的数据(数据见下)y, x10,x20,x30,x40和5个参数求出的解。此外,求解该方程组会有多组解,所以还需要限制条件(即 0 不知道这个是否能实现,非常感谢您的帮助!!




数据如下
Y        X10        X1        X20        X2        X30        X3        X40        X4
0.098709898        0        0        0        0        0.001071429        1.2854E-05        0        0
0.034516927        0        0        0        0        0.001071429        2.27537E-05        0        0
0.023548457        0        0        0        0        0.001071429        4.57405E-05        0        0
0.009339838        0        0        0        0        0.001071429        0.000158461        0        0
0.001373626        0        0        0        0        0.001071429        0.000714286        0        0
0.000446429        0        0        0        0        0.001071429        0.000928571        0        0
2.67857E-05        3.74667E-05        0.0000324        0.000103226        9.03226E-05        0        0        0        0
5.35714E-05        3.81333E-05        2.86667E-05        0.000103226        7.41935E-05        0        0        0        0
8.92857E-05        3.69333E-05        0.000022        0.0001        5.51613E-05        0        0        0        0
0.000142857        0.0000364        0.0000136        9.83871E-05        2.99355E-05        0        0        0        0
0.00018125        0.0000368        8.66667E-06        0.000102903        1.67742E-05        0        0        0        0
0.000196429        0.000036        5.73333E-06        9.6129E-05        9.6129E-06        0        0        0        0
0.000221429        3.54667E-05        3.06667E-06        9.45161E-05        4.80645E-06        0        0        0        0
0.000267857        0.000034        2.53333E-07        9.35484E-05        2.77419E-06        0        0        0        0
0.000175        6.66667E-06        3.08889E-07        9.03226E-05        2.49336E-06        0        0        0        0
0.0001125        6.66667E-06        2.21111E-06        9.03226E-05        2.32827E-05        0        0        0        0
3.39286E-05        6.66667E-06        4.85556E-06        9.03226E-05        6.57495E-05        0        0        0        0
7.14286E-05        6.66667E-06        3.67778E-06        9.03226E-05        4.78178E-05        0        0        0        0
0.00011        6.66667E-06        2.28889E-06        9.03226E-05        2.57306E-05        0        0        0        0
0.000151786        6.66667E-06        0.0000012        9.03226E-05        1.05882E-05        0        0        0        0
0.000210714        6.66667E-06        0.00000011        9.03226E-05        1.0019E-06        0        0        0        0
8.03571E-05        2.26667E-06        1.5569E-06        9.67742E-05        4.96451E-05        0.001066071        0.001066071        0.0000044        4.30976E-06
0.000139286        0.0000034        1.13333E-06        9.67742E-05        1.22203E-05        0.00105        0.00105        3.26667E-06        3.06667E-06
0.000214286        4.06667E-06        4.46554E-07        9.67742E-05        1.06928E-06        0.001028571        0.001028571        0.0000026        2.22222E-06
0.000321429        4.53333E-06        1.51089E-07        9.67742E-05        2.6058E-07        0.000985714        0.000985714        2.13333E-06        1.3468E-06
0.000535714        4.99333E-06        4.66667E-08        9.67742E-05        9.67742E-08        0.000942857        0.000942857        1.67333E-06        6.06667E-07

[ Last edited by lilei119 on 2011-5-25 at 10:16 ]
8楼2011-05-25 09:59:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

forcal

禁虫 (初入文坛)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
臭水沟(金币+1): 谢谢参与! 2011-05-26 22:59:42
本帖内容被屏蔽

9楼2011-05-26 18:21:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lilei119

新虫 (正式写手)

引用回帖:
4楼: Originally posted by forcal at 2011-04-10 21:30:21:
看不出楼主的目标函数有多少意义,以下目标函数不可以吗?
[(x10-x1)/y-a*b*x1/(1+b*x1+c*x2+d*x3+e*x4)]^2
+[(x20-x2)/y-a*c*x2/(1+b*x1+c*x2+d*x3+e*x4)]^2
+[(x30-x3)/y-a*d*x3/(1+b*x1+c*x2+d*x3+e*x4)]^2 ...

forcal老师,这个程序非常有用,后来用在其他数据上时碰到一个问题:由于数据不够多,约束性不太好,所以拟合的时候每次运行,结果可能都不一样,并且有时候出现bcde某个或者某几个值出现负数的情况。由于abcde都是正数,想在程序里把这个条件加进去可能可以排除一些无效解,不知道如何加?望赐教。
10楼2012-01-06 05:00:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lilei119 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见