如题,小弟最近碰到一含贝塞尔函数的超越方程。程序如下:
i=1;
for x=0:0.001:5 % x=kc/Wp
for y=0:0.001:5 % y=w/Wp
if (y-x)<=4.2&&0
t=0.6*1000*sqrt(y.*y-x.*x);
ta=0.6*sqrt(y.*y-x.*x);
tc=0.6*2* sqrt(y.*y-x.*x);
t1=(y.*y-1);
t2=x.*x*(3.4596-y.*y);
t3=y.*y*(y*y-4.4596);
T=0.6*1000*sqrt((t1.*(t2+t3))/t3); Ta=0.6*sqrt((t1.*(t2+t3))/t3); pTa=(Ta/4).*(Ta/4);
pta=(ta/4).*(ta/4);
ptc=(tc/4).*(tc/4);
% ta有关的贝塞尔函数(4个);
cta0=besselj(0,ta(:));
cta1=besselj(1,ta(:));
dta0=bessely(0,ta(:));
dta1=bessely(1,ta(:));
% tc 有关的贝塞尔函数(2个)
ctc0=besselj(0,tc(:));
dtc0=bessely(0,tc(:));
A=ctc0.*dta0-cta0.*dtc0; B=-ctc0.*dta1+cta1.*dtc0;
cTa0=besselj(0,Ta(:));
cTa1=besselj(1,Ta(:));
f=((y.*y-1)/T).*cTa1.*A+(y.*y/t)*cTa0 *B;
if abs(f)<=0.00000001
a0(i)=x;b0(i)=y;
i=i+1;
disp([num2str(x) ' ' num2str(y)]);
end
end
end
end
我通过限制f绝对值的精度,去求出了满足f=0的实数解,但是我若想求出满足f=0,x和对应的y的复数解。这个程序应该怎么改啊,谢谢大家了。