besselj_solve2.m

来自「利用matlab求解贝塞尔函数」· M 代码 · 共 45 行

M
45
字号
function besselj_solve2(a,b,t)
y=linspace(a,b,1000);
A=besselj(0,y);
B=besselj(1,y);
p=0;
solve_besselj=y.*A-0.73*B;
[i,j]=find(abs(solve_besselj)<t);
test=length(i);
if test==0
disp('初始精度设置过高,请降低')
return
end
  for n=1:length(i)
       solve_besselj_roots(n)=solve_besselj(i(n),j(n));
       y_roots(n)=y(i(n),j(n));
   end
   
   [m q]=size(solve_besselj_roots);
   %k=1;
   for k=1:1:q-1
   %while(k<=q-1)
          if solve_besselj_roots(k)*solve_besselj_roots(k+1)<0
              a=y_roots(k);
              b=y_roots(k+1);
              t=t/10;
              while (p==0)
              if a-b<0.00001
              p=1;
          end   
          end
          
               besselj_solve2(a,b,t);
             % y=linspace(a,b,1000);
              % elseif abs(y_roots(k)-y_roots(k+1))<=0.00001%solve_besselj_roots(k)-solve_besselj_roots(k+1)<=t
                    %y_roots=y_roots(k)%solve_besselj_roots(k);
                    % elseif
                    % solve_besselj_roots(k)*solve_besselj_roots(k+1)>0
                    %continue;
                    
          end        
          %k=k+1;         
      end 
a,b%solve_besselj_roots,y_roots,a,b%solve_besselj_rootss,y_rootss,b
% display the selected results of y.*A-0.73*B 
%solve_besselj,y_roots  % display the whole data of y.*A-0.73*B

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?