永发信息网

matlab 函数递归变量问题

答案:2  悬赏:50  手机版
解决时间 2021-12-31 16:26
  • 提问者网友:世勋超人
  • 2021-12-30 22:12
这是一个用matlab编写legendre(勒让德)多项式的问题,已知P0(x)=1,P1(x)=x,又有递推公式:(n+1)Pn+1(x)=(2n+1)xPn(x)-nPn-1(x),求出Pn(n=1,2,3,….)
最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-12-30 22:37
%legendre
syms x
n=5; %只算到5,也可以根据需要变化。
p0=1;
p(1)=x;
p(2)=1/2*((2*1+1)*x*p(1)-1*p0);%这个最容易让人想不到
for n=2:n %
p(n+1)=1/(n+1)*((2*n+1)*x*p(n)-n*p(n-1));
end
p=simplify(p)
%p=[p0,simplify(p)]

运行结果:
p =

[ x, 3/2*x^2-1/2, 5/2*x^3-3/2*x, 35/8*x^4-15/4*x^2+3/8, 63/8*x^5-35/4*x^3+15/8*x, 231/16*x^6-315/16*x^4+105/16*x^2-5/16]
全部回答
  • 1楼网友:玩家
  • 2021-12-30 22:44
首先 你的n没有传进去。所以会直接跳到len=1,返回的结果就是1 其次 如果n的值传入tt函数的话,会形成无限递归调用。因为进入递规的时候,n的值一直为3,所以一直满足n>0。无法退出递归。 第三 不知道你的x,y 有什么用处。。。 我改了一下tt函数,你试试看是不是会出现4 function len = tt(x,y,n) if n>0 n = n -1; len = tt(x,y,n) + 1; else len = 1; end
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯