Matlab 与WhittakerM函数和替代的区别
我试图区分WhittakerM函数。 要求解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
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
,或在线使用。