Octave 未定义倍频程函数变量

Octave 未定义倍频程函数变量,octave,ode,Octave,Ode,此倍频程代码表示'y'未定义 但是,如果我使用一个简短的匿名函数,它会很好。 原因是什么 function fun= f(t,y) myu=398600.4418E+9; J2=1.08262668E-3; req=6378137; r2=(y(1)**2 + y(2)**2 + y(3)**2); r3=r2**(3/2); w=1+1.5*J2*(req*req/r2)*(1-5*y(2)*y(2)/r2); fun=[y(4),y

此倍频程代码表示
'y'未定义
但是,如果我使用一个简短的匿名函数,它会很好。 原因是什么

function fun= f(t,y)
    myu=398600.4418E+9;
    J2=1.08262668E-3;
    req=6378137;

    r2=(y(1)**2 + y(2)**2 + y(3)**2);
    r3=r2**(3/2);

    w=1+1.5*J2*(req*req/r2)*(1-5*y(2)*y(2)/r2);
    fun=[y(4),y(5),y(6),-myu*y(1)*w/r3,-myu*y(2)*w/r3,-myu*y(3)*w/r3];    
endfunction   

t0=86400*2.3567000000000000E+04;
tN= 86400*2.3567250000000000E+04;
t = linspace(t0,tN);

y0 = [-9.0656779992979474E+05, -4.8397431127596954E+06, -5.0408120071376814E+06, -7.6805804020022015E+02, 5.4710987127502622E+03, -5.1022193482389539E+03];


x = ode23s (f, t, y0 );
disp(x);

你用的是哪种包装?(我的倍频程报告说一个
ode23
函数由两个不同的包提供)我使用这个,你能给我一个工作的吗?嗯。我不知道那个网站。好极了。我看到的第一个错误是,在ode23s函数中,您应该传递一个函数句柄,因此
@f
而不仅仅是
f
。然而,我在octave online上尝试了这个,我得到了一个“维度不匹配”错误。。。我不知道出了什么问题。ODE45错误线性增长)谢谢!正确的。默认情况下带有八度的
ode45
给出了我刚才提到的结果。
odepkg
附带的
ode45
给出了您前面提到的结果。它们是完全不同的结果。也许会有一个bug报告。。。