我换了一个拟合函数初值也改叻改:
beta0=[]';
beta= lsqcurvefit(@myfun,beta0,x,y)
倒是能出来结果,但效果有点差强人意(可以画图对照拟合结果yy和原始数据y):
beta =
9999.56
2.28
-1.74
如果改初值为
beta0=[,0]';
结果为
beta =
2.48
-1.35
这个结果倒是很容易解释因為x1是200的倍数,如果系数k1变化100倍大致可以从k2的变化得到补偿(相应的k3也有变化)。
个人觉得有两个问题:一是三个系数k1-k3独立性有点疑问;②是用于拟合的数据集偏小供参考,祝好运
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知噵的答案
可知拟合效果不错故拟合方程表达式为: 3.5002
我们在有些实际问题中自变量的数量可能会有两个或者多个,这时候问题就变成了多元拟合多元拟合同样存在线性拟合和非線性拟合的情形。对于多元线性拟合Matlab 最优化工具箱中提供了lsqlin()来求解这类问题。对于多元非线性拟合Matlab 拟合工具箱中没有提供函数来解决,有兴趣的学生可以根据最小二乘的原理自己来编写程序实现另外一种替代的方法是使用Matlab
统计工具箱中提供的求解多元非线性回归的函數nlinfit()来解决这类问题。下面我们就分别结合实例来介绍这两个函数的用法
例5: 电影院调查分别投放电视广告费用和报纸广告费用对每周电影院收入的影响,得到下面的数据建立回归模型并进行检验,诊断是否有异常点并预测电视广告费用和报纸广告费用分别为2和4时的电影院收入。