求一个如下问题的matlab程序,

问题描述:

求一个如下问题的matlab程序,
aa和rr都是变量,rr的范围是3.5-7,最后要求aa的值 ,条件如下:
u=besselj(1,rr)+bessely(1,rr);
v=besseli(1,rr)+besselk(1,rr);
uu是 besseli(1,aa.*rr).*(u+v).*rr 在rr的范围内的积分
vv是 besseli(1,aa.*rr).*(u+v)./rr 在rr的范围内的积分
dd=aa.^2/(3-aa.^4).*besselk(1,aa.*0.4)
最后要求满足dd.*(uu-vv)=0的aa的值
或者请说明怎么样处理这种有多个变量,并且还包括积分(或者微分)这种比较复杂问题的matlab方法.我开始是将aa,rr都设为符号变量,但是会出现Function 'le' is not implemented for MuPAD symbolic objects的错误.
1个回答 分类:综合 2014-09-25

问题解答:

我来补答
你这个问题比较复杂,分两个部分说
第一:贝塞尔函数的积分在matlab里面做得很差.需要你自己进行数值积分,使用quadgk函数就可以.
第二,涉及到特殊函数的多重变量的积分,matla是无能为力的.考虑采用二分法求解.首先根据物理意义预估出一个a的大概范围,比如-3:4这样子.而后每0.1取一个a值.把这个a值作为已知量带入到你自己编好的数值积分程序中,求出f=dd*(uu-vv)的值,绘制a-f图形,找出零点.再使用二分法仔细查找.
再问: 谢谢指点! 第一点我有点不是很明白,是说用quadgk函数直接对besselj函数积分吗?比如说我这里的 quadgk(@(rr) besseli(1,aa.*rr).*(u+v).*rr,rr,3.5-7))?或者还是说将besseli的数学表达式直接表达出来,然后对数学表达式积分呀?如果matlab对贝塞尔函数处理不好,那对gamma函数的积分可靠吗?望回复。 第二点我后来想到了,不过没想到先画图看看,我就直接用二分法求了,太慢,所以才想到上来问问。再次表示感谢!
再答: 这种特殊函数的积分matlab似乎都不像初等函数那么理想。至于对贝塞尔函数的积分,直接用quadgk积分就可以了。 贝塞尔不能用高斯,真讨厌。。。
 
 
展开全文阅读
剩余:2000
上一页:这一步看不懂
下一页:这题详细解释