matlab中用fzero解贝塞尔方程,怎么确定初始值? 100

想解方程((besselj(0,x)+1i*bessely(0,x))-(besselj(2,x)+1i*bessely(2,x)))/2=0中的x.由于solve函数不... 想解方程
((besselj(0,x)+1i*bessely(0,x))-(besselj(2,x)+1i*bessely(2,x)))/2=0
中的x.
由于solve函数不认符号变量无法求解,又看到网上用fzero解贝塞尔方程。形如:

clear all;
maxv = 10;
j= zeros(maxv,1);
for v=0:maxv-1
h = v+1.9*v^(1/3)+1;
if (v==0)
j(v+1,1) = fzero(@(x)besselj(v,x),2);
else
j(v+1,1) = fzero(@(x)besselj(v,x),h);
end
end

自己试过,确实可以运行。但是把besselj(v,x)换成((besselj(0,x)+1i*bessely(0,x))-(besselj(2,x)+1i*bessely(2,x)))/2后报错,Function value at starting guess must be finite and real,猜想是初始值的问题,那么请问初始值应该如何确定呢?

另:其实我是想用besselh的但是好像有些语句用besselj和bessely不会报错而用besselh会报错,我也不太明白为什么。不过不管用哪个,只要能求解就好。
解决问题再追加100分!
跪求于各位达人!不胜感激!!
可以发我邮箱:zc_celia@163.com
展开
 我来答
百度网友22d9297
2012-11-05 · 超过14用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:24.4万
展开全部
这是 报错的原因不是 初值的问题,这是因为 第二个求解的 是 复数 ,而 fzero 只能求解 实数解,你可以 取 abs
real imag 三个,或者 用其他的 命令
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式