作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 12:30:41
x(i+1)=x(i)+x(i-1) 用matlab编程
已知:x1=1;x10=89,递推方程是x(i+1)=x(i)+x(i-1);
要求x1到x10的数值,怎么用matlab编程呀.
我这只是一个例子,如果可以的话最好可以说说如果是符号运算的话,上面的例子应该怎么编程.
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
再问: 对于: x=double(solve(char(a(10)-89))); 1、char函数是什么作用啊,char与str有什么区别? 2、double函数的作用是什么呀? 3、x=double(solve(char(a(10)-89)));这一句为什么要作先char再double的转换???
再答: char函数就是变为字符串格式的,double函数是变为数值格式的,应为a(10)是一个符号变量,不能作为solve函数的输入,必须转化为字符串格式才行,所以用了char函数,solve函数解出来的是一个符号表达式,我用double把它变为数值,然后用subs函数将数值代入表达式中,最后就可以得到答案了
再问: 哦哦,double学习了,但是我刚刚试了一下,不用char也可以啊。最后再问一下,double是表示双精度吧,这个双精度到底是什么含义啊??这里除了double外,还有其它的函数可以达到转换为其它精度的数值的作用吗??跪谢了。。。。
再答: 当时没测试solve,里面不知道可以否,所以直接转化为了char型,如果你可以运行那就好,数据可以转化为其他精度的,比如说int8,int16,single等都可以的。