声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2871|回复: 7

[编程技巧] 帮忙编程解贝塞尔函数导数的方程!!!

[复制链接]
发表于 2013-6-23 17:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
方程如下: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,可见这个方程的解是很多的。至于楼主想要那些解,就自己去试试吧,呵呵。


2.jpg
1.jpg

评分

1

查看全部评分

 楼主| 发表于 2013-7-8 10:18 | 显示全部楼层
 楼主| 发表于 2013-11-3 10:55 | 显示全部楼层
米斯兰达 发表于 2013-6-24 20:56
首先,需要熟悉matlab里面求贝塞尔函数值的相关计算。

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

再请问,如果想得到前几个方程的零点,应该怎么写程序,还有rand是什么意思啊?谢谢
 楼主| 发表于 2013-11-3 11:02 | 显示全部楼层
米斯兰达 发表于 2013-6-24 20:56
首先,需要熟悉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
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函数不需要指定初值,所以也无从指定某个值附近的解。如果想要某个值附近的解,还是得用数值方法求解方程。

评分

1

查看全部评分

发表于 2013-11-3 14:15 | 显示全部楼层
江山美人 发表于 2013-11-3 10:55
再请问,如果想得到前几个方程的零点,应该怎么写程序,还有rand是什么意思啊?谢谢

rand的意思就是随机指定一个初值。
 楼主| 发表于 2013-11-9 20:15 | 显示全部楼层
米斯兰达 发表于 2013-11-3 14:15
rand的意思就是随机指定一个初值。

灰常感谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-20 20:18 , Processed in 0.062394 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表