请教一个递推公式的matlab程序

就是求 Kn=a*Kn-1+b 的matlab语句

其中a、b都是长度为14的已知数列(或者说一维已知数值的矩阵),K0是已知的初值。

大家帮忙看看我写的错在哪儿。。。或者我这个太差的话直接帮忙写个新的。。。

感激不尽!!!

clear,clc;
K(1)=1;
for i=1:1:14
a=xlsread('D:\aaa.xls');
b=xlsread('D:\bbb.xls');
K(i+1)=a(i).*K(i)+b(i);
end
i=1:1:14;
plot(i,K(i),'o');
最新回答
茉莉花的清香

2024-10-22 06:33:11

求递推公式的matlab程序还可以用符号运算的方法来解

数列的递推公式到一般式的转化问题可以用MATLAB的MuPad解决

如图

解得 K(n)=C4*a^n - b/(a - 1) 其中C4是一个常数

然后就用这个公式代入自己需要的值就行了

夙愿未了

2024-10-22 07:16:48

用一个循环语句做递推就可以了:
d=1;
angle=45*pi/180;
l0=d*tan(angle);
h0=0;
x=[1,2,3,4,5];
%x是一个数组
n=5;
h=(pi/2-angle)/n;
l
=
[l0,
zeros(1,
5)];
h
=
[h0,
zeros(1,
5)];
%下面是递推公式
for
i
=
1:5
if(i
==
1)
l(i)=(l0*tan(x(i))*tan(angle+i*h)+tan(angle+i*h)*(d-h0))/(1+tan(x(i))*tan(angle+i*h));
h(i)=(d*tan(x(i))*tan(angle+i*h)-l0*tan(x(i))+h0)/(1+tan(x(i))*tan(angle+i*h));
else
l(i)=(l(i-1)*tan(x(i))*tan(angle+i*h)+tan(angle+i*h)*(d-h(i-1)))/(1+tan(x(i))*tan(angle+i*h));
h(i)=(d*tan(x(i))*tan(angle+i*h)-l(i-1)*tan(x(i))+h(i-1))/(1+tan(x(i))*tan(angle+i*h));
end
end
望采纳,谢谢!
压抑情绪

2024-10-22 07:21:16

xls文件没有,没法写

问题是:
首先,xls文件数据是竖排还是横排?如果是竖排,需在a=xlsread('D:\aaa.xls');
b=xlsread('D:\bbb.xls');两行后加上a=a';b=b';
其次,plot改成plot(i,K,'o');
应该没什么问题了
真扯淡

2024-10-22 06:25:22

clear,clc;
K(1)=1;
a=xlsread('D:\aaa.xls');
b=xlsread('D:\bbb.xls');
cn=length(a);
for i=1:cn-1
K(i+1)=a(i)*K(i)+b(i);
end
i=1:cn;
plot(i,K(i),'o');
我没调试,你自己试试吧