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 展开
((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 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询