![]() |
[求助]非线性数学模型如何计算
已知数学模型为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 |
这个问题可以这样看:
每一组数据都通过数学模型建立了一个方程,在这个方程中只有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: |
[QUOTE=shuihefeng;9377]已知数学模型为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 ...[/QUOTE] 貌似 要用最小二乘法 拟合得到 哦 :heart: |
>> 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 第四排以后的数据好像有问题底数是负数 |
[k1, k2, k3]= [ 124.899979, .613898557, .879510231]
R^2 =.973757 |
好:smile:
|
所有时间均为北京时间。现在的时间是 04:42。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.