24小时热门版块排行榜    

查看: 1720  |  回复: 2

joyhnust

木虫 (著名写手)

[求助] 根据已知方程和一系列数据如何拟合出方程中的三个参数 已有1人参与

方程如下:Z = a/X + bY + c
如何拟合出方程中的a, b, c三个参数。希望懂的大牛不吝赐教,把代码写出来。谢谢!

发自小木虫IOS客户端
回复此楼
生活就像骑单车,只有不断前进,才能保持平衡!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
做个非线性回归就行了,matlab文档里面有例子,我把例子简化了(省去了背景),参考如下:
示例模型见图(待回归的方程)
x1,x2和x3已知,并且β1,β2,...,β5是未知参数。
函数文件:
CODE:
function y= myfun(beta,x)
b1 = beta(1);
b2 = beta(2);
b3 = beta(3);
b4 = beta(4);
b5 = beta(5);

x1 = x(:,1);
x2 = x(:,2);
x3 = x(:,3);

y = (b1*x2 - x3/b5)./(1+b2*x1+b3*x2+b4*x3); %模型方程

函数nlinfit用于找到非线性模型的最小二乘参数估计。 它使用高斯 - 牛顿算法对Levenberg-Marquardt修改进行全局收敛。
需要数据:自变量(这里就是x1,x2,x3),待拟合的函数值(对应y),待估计参数的初值
主程序:
CODE:
%待拟合的自变量
x0=[
   470   300    10
   285    80    10
   470   300   120
   470    80   120
   470    80    10
   100   190    10
   100    80    65
   470   190    65
   100   300    54
   100   300   120
   100    80   120
   285   300    10
   285   190   120];
%待拟合的函数值
y0=[
8.55
3.79
4.82
0.02
2.75
14.39
2.54
4.35
13
8.5
0.05
11.32
3.13];
%参数初值
beta0=[1 0.05 0.02 0.1 2]';
%调用
beta = nlinfit(x0,y0,@myfun,beta0);
%相关系数
x1=x0(:,1);
x2=x0(:,2);
x3=x0(:,3);
y=(beta(1)*x2 - x3/beta(5))./(1+beta(2)*x1+beta(3)*x2+beta(4)*x3);%估计值
R=corrcoef(y0,y)

结果:R =
    1.0000    0.9995
    0.9995    1.0000
看斜对角线就行了,即R=0.9995,效果很不错了。
一般这类问题的难点就在参数初值的选取,结合问题背景大致估几个,试几次就能收敛
根据已知方程和一系列数据如何拟合出方程中的三个参数
hougen_watson.gif

2楼2017-01-07 15:35:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
joyhnust: 金币+30, ★★★很有帮助, 很有帮助,只是我对这些代码表示的意思不是很明白,你有QQ可以加下线下交流一下吗?我的QQ:3538676675 2017-01-07 17:17:10
joyhnust: 金币+70, ★★★★★最佳答案, 非常感谢! 2017-01-07 18:34:00
文件见附件,可以自己试试,你的问题应该就可以解决了。

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : main.m
  • 2017-01-07 15:36:42, 611 bytes
  • 附件 2 : myfun.m
  • 2017-01-07 15:36:42, 201 bytes
3楼2017-01-07 15:38:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 joyhnust 的主题更新
信息提示
请填处理意见