x(i+1)=x(i)+x(i-1) 用matlab编程

已知:x1=1;x10=89,递推方程是x(i+1)=x(i)+x(i-1);要求x1到x10的数值,怎么用matlab编程呀。。我这只是一个例子,如果可以的话最好可以说... 已知:x1=1;x10=89,递推方程是x(i+1)=x(i)+x(i-1);
要求x1到x10的数值,怎么用matlab编程呀。。
我这只是一个例子,如果可以的话最好可以说说如果是符号运算的话,上面的例子应该怎么编程。
展开
 我来答
真greatdju
2013-08-07 · TA获得超过3856个赞
知道小有建树答主
回答量:1300
采纳率:91%
帮助的人:757万
展开全部

要求matlab2008b以前版本(有maple内核)


clear;clc;
f=maple('rsolve({x(n+1)=x(n)+x(n-1),x(1)=1,x(2)=t},x)');
f=subs(f,'t',solve(subs(f,'n',10)-89))%你要求的通项公式
subs(f,'n',1:10)

 

百度网友a0720e821
2013-08-07 · TA获得超过267个赞
知道答主
回答量:78
采纳率:0%
帮助的人:43.8万
展开全部
代码:
clc,clear
syms a;
x(2)=a;
x(1)=1;
for i=1:8
x(i+2)=x(i+1)+x(i);
end
b=solve(x(10)-89);
for i=1:10
x(i)=subs(x(i),a,b);
end
x
结果:
x =

[ 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
这个行向量里面的数分别就是要求的x1,x2......,x10了。
追问

这个简单易懂,但我还有一点小疑问,上面得到的x还是字符,并不是数值。要如何将这个符号变量转换为数值变量啊(我装的2012a版本,里面好像没有numeric命令),因为数值变量更方便导出来。或者说根本没有这个必要,而是有什么更好的办法可以直接将这个符号变量作为数值处理。。

 

追答
这个也很简单,加上这条代码:x=double(x),即可将x由sym类型转化为double类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7d7ebc3
推荐于2018-04-10 · TA获得超过531个赞
知道小有建树答主
回答量:630
采纳率:50%
帮助的人:607万
展开全部
syms x;
a=sym(zeros(10,1));
a(1)=1;
a(2)=x;
for i=3:10
a(i)=a(i-1)+a(i-2);
end
x=double(solve(char(a(10)-89)));
c=subs(a);
%c就是x1到x10的值
更多追问追答
追问
回答得很好,非常感谢。
再问一下,有没有沿着“从x1与x2往x10推导,再利用x10的已知条件,得出x10,再从x10往回赋值”这样的思路啊。。。
再有就是char函数是什么作用啊,char与str有什么区别?
再有double函数的作用是什么呀?
问题比较多,不好意思哟。
追答
我是这样算的呀,我是假设x2是x,然后用那个递推公式一次求解出x3,x4,x5,x6,x7,x8,x9,x10,此时x10是一个关于x的表达式,然后代入数值89,求得x,那么就可以依次求出x2,x3,x4,x5,x6,x7,x8,x9,x10
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d580670
2013-08-07 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:707万
展开全部
n0=[1,0];
n1=[0,1];
x1=1;
x10 = 10;
for i= 3:10
n=n0+n1;
n0=n1;
n1=n0;
end
x2=(x10-n(1))/n(2);

n0=[1,0];
n1=[0,1];
for i= 3:10
n=n0+n1;
n(1)*x1+n(2)*x2
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式