MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]非线性数学模型如何计算 (https://www.labfans.com/bbs/showthread.php?t=2570)

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

[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:

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:


所有时间均为北京时间。现在的时间是 04:42

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.