在MatLab中编写递归子函数和非递归子函数

b09cbbtk  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(278)

我是MatLab的新手,我有一个任务:勒让德多项式Pn(X),n=0,1,2,.。。的递推公式是

分别编写递归子函数和非递归子函数,求勒让德多项式函数的值
这是我的代码:

function P =Legendre(n,x)
syms x;
n = input('n=');
    if n==0
        P=1;
    elseif n==1
        P=x;
    elseif n>=2
        P=((2*n-1)/n)*x*Legendre(n-1)-((n-1)/n)*Legendre(n-2);
    end 
end

但我收到一条错误消息:

Unrecognized function or variable 'Legendre'.

Error in ti4 (line 9)
        P=((2*n-1)/n)*x*Legendre(n-1)-((n-1)/n)*Legendre(n-2);

很抱歉问了这个愚蠢的问题。有谁可以帮我?太感谢你了

wgeznvg7

wgeznvg71#

这里可能正在发生一些事情。

文件名需要匹配函数名(对于主函数)

在您的示例中,文件名需要为Legendre.m

象征性工具箱还是你想要答案

对于此函数的大多数用途,我会保留两个完整的输入,就像您拥有它们一样。但是,我会完全删除前两行。
实际上,前两行将中断您的输入。n的值由input函数重置。实际上,我不确定将现有变量x声明为sym时会发生什么。

输入一致性

您正在设置一个具有两个输入的函数,名为nx。但是,当您创建递归调用时,您只传入一个变量。这里要做的最简单的事情就是继续传递n作为第一个输入。
(现在,您试图在递归调用中传入x,但它将被解释为n。)

相关问题