Z2000  
                
                  
                    2023 年12 月 13 日 06:00
                   
                  1 
               
             
            
              这个是完整的代码,是为了实现龙伯透镜的射线追踪分析
tspan=[0 1.6];
no_lines=10;
a=1;
y0=range(-a,a,no_lines);
x0=sqrt.(1 .-y0.^2);
x1=ones(1,length(x0))*2*a;hold();
x1=ones(1,length(x0))*2*a;
y1=y0;
line([x0';x1],[y0';y1'],color= :green); hold();
phi=range(0,2*pi,100);
x=a*cos.(phi);
y=a*sin.(phi);
plot(x',y',color= :red,lw=3);
for lp=1:length(x0)
    Y0=[x0(lp) y0(lp) -1 0];
     options=odeset("RelTol",1e-5,"AbsTol",[1e-6]);
     T,Y,=ode45(ham,tspan,Y0,options);
     plot(Y[:,1],Y[:,2],color= :blue);hold();
end
ERROR: MethodError: objects of type Vector{Float64} are not callable
Use square brackets [] for indexing an Array.
Stacktrace:
 [1] top-level scope
   @ .\REPL[82]:2
这是其中调用用到的ham函数
function dy=ham(t,y)
 dy=zeros(4,1);
 dy(1)=y(3);
 dy(2)=y(4);
 dy(3)=-y(1);
 dy(4)=-y(2);
就是不知道这个错误应该如何改才能正确
             
            
              
            
                
           
          
            
              
                xgdgsc  
              
                  
                    2023 年12 月 13 日 06:06
                   
                  2 
               
             
            
              Use square brackets [] for indexing an Array.
             
            
              
            
                
           
          
            
              
                Z2000  
              
                  
                    2023 年12 月 13 日 06:23
                   
                  5 
               
             
            
              加了还是不对 
julia> for lp=1:length(x0)
       Y0=[[x0(lp)] [y0(lp)] -1 0];
       options=odeset("RelTol",1e-5,"AbsTol",[1e-6]);
       T,Y,=ode45(ham,tspan,Y0,options);
       plot(Y[:,1],Y[:,2],color= :blue);hold();
       end
ERROR: MethodError: objects of type Vector{Float64} are not callable
Use square brackets [] for indexing an Array.
Stacktrace:
 [1] top-level scope
   @ .\REPL[82]:2
 
            
              
            
                
           
          
            
              
                Z2000  
              
                  
                    2023 年12 月 13 日 06:30
                   
                  7 
               
             
            
              谢谢谢谢,这个问题解决了,但是又出现了一个新问题,希望您可以再帮我看看
julia> for lp=1:length(x0)
       Y0=[x0[lp] y0[lp] -1 0];
       options=odeset("RelTol",1e-5,"AbsTol",[1e-6]);
       T,Y,=ode45(ham,tspan,Y0,options);
       plot(Y[:,1],Y[:,2],color= :blue);hold();
       end
ERROR: MethodError: no method matching odeset(::String, ::Float64, ::String, ::Vector{Float64})
Stacktrace:
 [1] top-level scope
   @ .\REPL[83]:3
 
            
              
            
                
           
          
            
              
                Z2000  
              
                  
                    2023 年12 月 13 日 06:32
                   
                  8 
               
             
            
              这个程序原本是在matlab上实现的,现在需要用mworks复现,而mworks使用的是julia,所以就一堆问题 
             
            
              
            
                
           
          
            
              
                Z2000  
              
                  
                    2023 年12 月 13 日 06:36
                   
                  9 
               
             
            
              抱歉,我之前没查阅手册,现在我查阅手册后知道了julia中这个函数的正确用法,这个问题已经没有了,谢谢您
             
            
              
            
                
           
          
            
              
                xgdgsc  
                
                  
                    2023 年12 月 13 日 06:59
                   
                  10 
               
             
            
              以后可以先试试把你的代码用 ``` code ```  包起来后面加  find out how to fix the error at which line   先问  Ask AI · JuliaHub    我试了这个括号问题它可以修复