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编程呀。。
我这只是一个例子,如果可以的话最好可以说说如果是符号运算的话,上面的例子应该怎么编程。 展开
要求x1到x10的数值,怎么用matlab编程呀。。
我这只是一个例子,如果可以的话最好可以说说如果是符号运算的话,上面的例子应该怎么编程。 展开
展开全部
代码:
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了。
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=double(x),即可将x由sym类型转化为double类型。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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的值
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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询