江山美人 发表于 2013-6-23 17:30

帮忙编程解贝塞尔函数导数的方程!!!

方程如下:J'(X)*Y'(0.98*X)-J'(0.98*X)*Y'(X)=0,J',Y'是第一和第二类bessel函数的导数,X是未知数。编程中,nu都是1,即都是第一阶bessel函数 。灰常感谢。

米斯兰达 发表于 2013-6-24 20:56

本帖最后由 米斯兰达 于 2013-6-24 20:57 编辑

首先,需要熟悉matlab里面求贝塞尔函数值的相关计算。

对于n阶第一类贝塞尔函数的值,可以用besselj这个函数来计算:

besselj(NU,x)

其中NU为阶数,x为自变量的值,返回函数值

对于n阶第二类贝塞尔函数的值,可以用bessely函数来计算,格式与besselj函数类似

其次,需要注意到计算贝塞尔函数的导数是不容易的,但是我们可以用贝塞尔函数与其导数之间的一种递推公式来计算其导数

对于n阶第一类贝塞尔函数,这种地推公式可以表示为:(如附件图片1.jpg所示)

n阶第二类贝塞尔函数的递推公式也具有类似的形式:(如附件图片2.jpg所示)


知道了这两点之后,就可以求解楼主提出的问题了,matlab代码如下,相信楼主一看就明白。其中,运用了fzero这个函数求解方程的根,fzero函数在求解过程中需要使用一个初始值x0,而最后求出的根是距离x0最近的那个根,这里设置成随机,即rand。如果楼主需要别的范围内的根,只需要调整fzero函数的初值x0的范围即可。


y=fzero(@(x)((besselj(0,x)-besselj(2,x))/2)*((bessely(0,0.98*x)-bessely(2,0.98*x))/2)-((besselj(0,0.98*x)-besselj(2,0.98*x))/2)*((bessely(0,x)-bessely(2,x))/2),rand)

y =

    1.0101


如果将x0设置成100,可以求出y为157.0853;如果将x0设置成500,可以求出y为471.2408,可见这个方程的解是很多的。至于楼主想要那些解,就自己去试试吧,呵呵。


江山美人 发表于 2013-7-8 10:18

米斯兰达 发表于 2013-6-24 20:56 static/image/common/back.gif
首先,需要熟悉matlab里面求贝塞尔函数值的相关计算。

对于n阶第一类贝塞尔函数的值,可以用besselj这个 ...

谢谢大神指教

江山美人 发表于 2013-11-3 10:55

米斯兰达 发表于 2013-6-24 20:56 static/image/common/back.gif
首先,需要熟悉matlab里面求贝塞尔函数值的相关计算。

对于n阶第一类贝塞尔函数的值,可以用besselj这个 ...

再请问,如果想得到前几个方程的零点,应该怎么写程序,还有rand是什么意思啊?谢谢

江山美人 发表于 2013-11-3 11:02

米斯兰达 发表于 2013-6-24 20:56 static/image/common/back.gif
首先,需要熟悉matlab里面求贝塞尔函数值的相关计算。

对于n阶第一类贝塞尔函数的值,可以用besselj这个 ...

syms x m l n p
l=(besselj(0,x)-besselj(2,x))/2;
m=(bessely(0,0.98*x)-bessely(2,0.98*x))/2;
n=(besselj(0,0.98*x)-besselj(2,0.98*x))/2;
p=(bessely(0,x)-bessely(2,x))/2;
y=solve('l*m-n*p')
改了一下程序,得到的根是x0等于100时候的解,我想得到指定某个数附近的解,按我现在改的程序怎么继续修改啊?谢谢

米斯兰达 发表于 2013-11-3 14:15

江山美人 发表于 2013-11-3 11:02 static/image/common/back.gif
syms x m l n p
l=(besselj(0,x)-besselj(2,x))/2;
m=(bessely(0,0.98*x)-bessely(2,0.98*x))/2;


你现在是用符号运算的方法求解了 solve函数不需要指定初值,所以也无从指定某个值附近的解。如果想要某个值附近的解,还是得用数值方法求解方程。

米斯兰达 发表于 2013-11-3 14:15

江山美人 发表于 2013-11-3 10:55 static/image/common/back.gif
再请问,如果想得到前几个方程的零点,应该怎么写程序,还有rand是什么意思啊?谢谢

rand的意思就是随机指定一个初值。

江山美人 发表于 2013-11-9 20:15

米斯兰达 发表于 2013-11-3 14:15 static/image/common/back.gif
rand的意思就是随机指定一个初值。

灰常感谢
页: [1]
查看完整版本: 帮忙编程解贝塞尔函数导数的方程!!!