我是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);
很抱歉问了这个愚蠢的问题。有谁可以帮我?太感谢你了
1条答案
按热度按时间wgeznvg71#
这里可能正在发生一些事情。
文件名需要匹配函数名(对于主函数)
在您的示例中,文件名需要为
Legendre.m
。象征性工具箱还是你想要答案
对于此函数的大多数用途,我会保留两个完整的输入,就像您拥有它们一样。但是,我会完全删除前两行。
实际上,前两行将中断您的输入。
n
的值由input
函数重置。实际上,我不确定将现有变量x
声明为sym
时会发生什么。输入一致性
您正在设置一个具有两个输入的函数,名为
n
和x
。但是,当您创建递归调用时,您只传入一个变量。这里要做的最简单的事情就是继续传递n
作为第一个输入。(现在,您试图在递归调用中传入
x
,但它将被解释为n
。)