本帖最后由 米斯兰达 于 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,可见这个方程的解是很多的。至于楼主想要那些解,就自己去试试吧,呵呵。
|