【发布时间】:2017-07-06 05:46:53
【问题描述】:
我尝试在 Octave 中求解一个微分方程。在第一次尝试中,我所有的自变量都设置为常数 (n,y,w)。这是我的代码:
function xdot= f(x,t);
% xdot=zeros(1,1);
X=1.44221E+12;
IO=5.318E+11;
GO=6.81E+11;
beta=0;
gamma=0;
y=58.5021088;
w= 31.29;
n=1363.5;
tw=0.4;
tp=0.3;
sw=0.07;
sp=0.25;
mw=0.593941689;
mp=0.593941689;
% aw=(1-tw)(sw+mw)
% ap=(1-tp)(sp+mp)
xdot=-(X+IO*(1+gamma*(diff(n)/n+diff(y)/y))+GO*beta(tw(diff(n)/n+diff(w)/w)+tp(diff(y)/y-diff(w)/w)-(x*n)/((y-w)((1-tp)(sp+mp)+tp)+((1-tw)(sw+mw)+tw)*w))*x)/(IO*gamma+GO*beta*tw);
endfunction
当我添加时
t = [0:(1/360):10]
x = lsode ("f", 39290000, t);
在命令行中求解方程,我得到这个错误:
error: index (0.843942): subscripts must be either integers 1 to (2^31)-1 or logicals
error: lsode: evaluation of user-supplied function failed
error: called from
f at line 23 column 7
在我看来,在某种程度上我误解了如何制作该功能。 有什么帮助吗?
编辑:
这是我的新代码:
function xdot= f(x,t);
X=1.44221E+12;
IO=5.318E+11;
GO=6.81E+11;
beta=0;
gamma=0;
y=58.5021088;
w= 31.29;
n=1363.5;
tw=0.4;
tp=0.3;
sw=0.07;
sp=0.25;
mw=0.593941689;
mp=0.593941689;
xdot=-X+IO-(x*n)/((y-w)*((1-tp)*(sp+mp)+tp)+w*(tw+(1-tp)*(sp+mp)))
endfunction
如果我将它复制到命令行中,它确实有效,但如果我将它作为程序 (f.m) 启动并解决它,那么我会收到此错误:
error: 'x' undefined near line 25 column 15
error: called from
f at line 25 column 7
【问题讨论】:
标签: octave differential-equations