matlab解递归的方程问题
我有一个递归方程我还有一组关于cm的数据从2002年到2010年:0.03370.08460.15810.23380.31260.41760.53370.64540.80...
我有一个递归方程
我还有一组关于cm的数据 从2002年到2010年:
0.0337 0.0846 0.1581 0.2338 0.3126 0.4176 0.5337 0.6454 0.8001
我想解出这个递归方程的系数,其中α是小于0的;β,γ是大于零的。
希望有关于这类问题的Matlab求解方法! 展开
我还有一组关于cm的数据 从2002年到2010年:
0.0337 0.0846 0.1581 0.2338 0.3126 0.4176 0.5337 0.6454 0.8001
我想解出这个递归方程的系数,其中α是小于0的;β,γ是大于零的。
希望有关于这类问题的Matlab求解方法! 展开
1个回答
展开全部
其实这个问题就是一个简单的多项式拟合问题,重要的是掌握如何将数据分解成自变量和因变量。
这里将前一年的数据作为自变量,当年的数据作为因变量即可拟合。参考代码如下:
clear
clc
cm = [0.0337 0.0846 0.1581 0.2338 0.3126 0.4176 0.5337 0.6454];
cm_1 = [0.0846 0.1581 0.2338 0.3126 0.4176 0.5337 0.6454 0.8001];
fit1 = polyfit(cm,cm_1,2)
%拟合结果多项式降幂排列系数:0.0216 1.1290 0.0539
x = linspace(0,0.8,40);
y = polyval(fit1,x);
plot(cm,cm_1,'x',x,y)
legend('data','fit')
可以看出这里三次项系数已经很小了,完全可以用一次拟合。即y = a*x+b的形式。
下面是一次拟合的结果,基本差别不大
ps:1.你这里α前的负号可以去掉,系数用一个α表示即可。
2.系数大于零还是小于零是数据本身决定的,一般数据拟合都不会规定这个的。该是什么系数就是什么系数。
3.polyfit是按最小二乘法进行拟合的.。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询