登录论坛

查看完整版本 : [求助]非线性数学模型如何计算


shuihefeng
2008-04-24, 15:06
已知数学模型为Q=k1*(P-(1/d)^k3)^k2

且已知p,d,Q多组数据.怎么能求出系数k1,k2,k3的值

p d Q
0.22 0.02 44.95

0.2 0.02 42.61

0.18 0.02 38.60

0.16 0.02 35.28

0.15 0.02 34.19

0.14 0.02 32.49

0.12 0.02 31.25

0.1 0.02 28.04

0.08 0.02 19.07

0.06 0.02 13.50

0.05 0.02 10.13

0.04 0.02 7.39

0.147 0.025 29.04

0.14 0.025 27.8

0.12 0.025 24.88

0.1 0.025 21.03

0.08 0.025 17.54

watcher
2008-04-27, 22:38
这个问题可以这样看:
每一组数据都通过数学模型建立了一个方程,在这个方程中只有k1,k2,k3是未知数。
如果求k1,k2,k3的值,只要三组数据就可以了。
现在存在多于三组的数据,因此可以看作是一个优化问题。
根据优化目标不同,结果是不同的。
用matlab解决优化问题,不多讲了,有现成的函数调用,不明白的,多看帮助。
这里讲一下如何获取优化目标函数。
以Q的方差最小为例,k1,k2,k3是待求未知数,那么每一对(Pi,di)可以确定一个Qi,同时根据数学模型有Qi*=k1*(Pi-(1/di)^k3)^k2,这里i表示一组数据。现在要使Q的方差最小,即Sum[(Qi-Qi*)^2]最小,所以最优目标为:
Sum[(Qi-k1*(Pi-(1/di)^k3)^k2)^2]
:smile:

fanxing39
2008-04-28, 01:44
已知数学模型为Q=k1*(P-(1/d)^k3)^k2

且已知p,d,Q多组数据.怎么能求出系数k1,k2,k3的值

p d Q
0.22 0.02 44.95

0.2 0.02 ...

貌似 要用最小二乘法 拟合得到 哦 :heart:

yinjiangming
2008-04-29, 11:47
>> solve('k1*(0.22-(1/0.02)^k3)^k2-44.95=0','k1*(0.2-(1/0.02)^k3)^k2-42.61','k1*(0.18-(1/0.02)^k3)^k2-38.60')

x =63.581666294730701890019133676754
y =.12004519863509000656600188169454
z =-.46158940341158178454742966007143

第四排以后的数据好像有问题底数是负数

slgu
2008-05-10, 06:08
[k1, k2, k3]= [ 124.899979, .613898557, .879510231]
R^2 =.973757

hzxsyzl943
2008-05-10, 17:02
好:smile: