数学建模--数据拟合

数学建模中经常会给出数据,然后进行拟合,matlab有cftool数据拟合工具箱,但是我还是习惯于使用拟合函数。
1.多项式拟合
拟合函数:

P = polyfit(X,Y,N)
[P,S] = polyfit(X,Y,N)
[P,S,MU] = polyfit(X,Y,N)
%参数解释
%X自变量数据序列
%Y因变量数据序列
%N序号拟合的多项式次数

%P多项式的系数向量
%f(x)=P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1)
%S是一个结构体,我们主要关注S.normr,是残差
%MU(1)=mean(X)均值 MU(2)=std(X)标准差

例子

X=0:0.01:10
Y=2*X.^2+1
N=2
[P,S] = polyfit(X,Y,N)

>>
P =

    2.0000   -0.0000    1.0000


S = 

        R: [3x3 double]
       df: 998
    normr: 2.8477e-012

一般多项式拟合还会用到polyval函数,该函数是根据上面拟合出来的多项式模型进行求值。

Y = POLYVAL(P,X)
%P是polyfit返回的多项式系数
%X输入值
%Y是预测值

2.自定义函数拟合
除了上面的多项式拟合,matlab还支持自定义函数拟合,根据给出的函数求系数。lsqcurvefit函数利用最小二乘法求系数:

X=[3; 1; 4]; 
Y=6*exp(-1.5*xdata)+3; 
a = lsqcurvefit(@(a,X)a(1)*exp(-1.5*X)-a(2),[0;-1.5],X,Y)
>>
  a=
   6 -3
%a是拟合函数的系数

lsqcurvefit还有其他形式

[X,RESNORM,RESIDUAL,EXITFLAG]=lsqcurvefit(FUN,X0,XDATA,YDATA,...)
%X0是初始解向量
%resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;
%residual=fun(x,xdata)-ydata,即在x处的残差;
%exitflag为终止迭代的条件;
%output为输出的优化信息;
%lambda为解x处的Lagrange乘子;
%jacobian为解x处拟合函数fun的jacobian矩阵。
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_relax

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值