Matlab 与WhittakerM函数和替代的区别

Matlab 与WhittakerM函数和替代的区别,matlab,differential-equations,Matlab,Differential Equations,我试图区分WhittakerM函数。 要求解WhittakerM方程,我们有: dsolve( 'D2y+(-1/4+Landa/r+(1/4-(L+1/2)^2)/r^2)*y=0' ,'r') C1*WhittakerM(Landa,L+1/2,r)+C2*WhittakerW(Landa,L+1/2,r) 根据边界条件,我只需要WhittakerM(Landa,L+1/2,r)/r为问题的条件添加1/r。我试图区分它,然后在某些点上替换,但是在subs和diff中有一些错误 Landa

我试图区分WhittakerM函数。 要求解WhittakerM方程,我们有:

dsolve( 'D2y+(-1/4+Landa/r+(1/4-(L+1/2)^2)/r^2)*y=0' ,'r')

C1*WhittakerM(Landa,L+1/2,r)+C2*WhittakerW(Landa,L+1/2,r)
根据边界条件,我只需要
WhittakerM(Landa,L+1/2,r)/r
为问题的条件添加
1/r
。我试图区分它,然后在某些点上替换,但是在
subs
diff
中有一些错误

Landa=1;L=0; % # for simplicity
R1=inline('WhittakerM(Landa,L+1/2,r)/r','r');
Rp1=diff(R1,r);
r=1:0.01:20;
R1sub=eval(R1,r);
Rp1sub=eval(Rp1,r);

你有什么想法吗?

不管上面有什么错误(老实说,我不完全理解你试图通过替换实现什么),使用符号工具箱可能是一个好的开始:

syms r
%defines a symbolic function
R1(r)=whittakerM(landa,l+1/2,r)/r
%differentiate
Rp1=diff(R1,r);
%evaluate
Rp1_e=Rp1(1:0.01:20)

您正在用
x
替换
r
,但未定义
x
。您必须定义
x
。我不明白用x代替r,你想达到什么目的?编辑。我只想计算函数并得到一个数值数组。
landa
landa
相同吗?你为什么在求导之前先插入数字?如果有错误消息,您应该编辑您的问题以添加整个消息。@horchler:Erroe消息已添加。我只想知道如何区分这个笨拙的函数,并在任意点上计算它,而不考虑任何其他细节。您确定吗?对于类型为
sym
的输入参数,未定义的函数或方法
WhittakerM
。对于求值
eval
是正确的选择,并与
sym
兼容。这里的问题只是
whittakerM
@Abolfazl:在您的问题中,您正在使用该函数。这是我知道的唯一的whittakerM
。你的代码应该使用哪个函数?我可能解释不清楚
WhittakerM
应该被使用,并且它是派生的。因此,我尝试使用
syms
diff
,但它不适用于此函数。我认为最好使用
Mathematica
。在
Matlab
@Abolfazl中,符号计算非常繁琐:Matlab7.6(即R2008a)非常古老。在任何问题中,您都应该指出您使用的是如此旧的版本。你不应该看你在谷歌网上找到的文档。正如@Daniel所指出的,符号函数已经发生了很大的变化(我相信
WhittakerM
WhittakerW
是在R2012a中添加的)。在Matlab中使用
doc
help
,或在线使用。