scilab中求解常微分方程的问题
Problem in solving ordinary differential equation in scilab
clf
clc
function dx=f(t,x)
dx(1) = x(2)
dx(2) = -B*(1-x^2)*x(2)-w*w*x(1)
endfunction
B = 5
w = 1
x0 = [10;100]
t = 0:0.01:10
x = ode(x0,0,t,f)
plot2d(t,x)
现在它在 scilab 控制台中显示以下问题...
at line 3 of function f ( /Users/mottelet/so.sce line 7 )
in builtin ode
at line 15 of executed file /Users/mottelet/so.sce
Submatrix incorrectly defined.
ode: An error occurred in 'lsoda' subroutine.
请告诉我我做错了什么,并告诉我解决方法。
你的函数f
的代码在这行有问题
dx(2) = -B*(1-x^2)*x(2)-w*w*x(1)
因为表达式 -B*(1-x^2)*x(2)
产生一个向量,您尝试将其分配给标量容器(此处 dx(2)
)。也许你想写 -B*(1-x(1)^2)*x(2)
或 -B*(1-x(2)^2)*x(2)
(即用它的一个组件替换第一次出现的 x
)?
clf
clc
function dx=f(t,x)
dx(1) = x(2)
dx(2) = -B*(1-x^2)*x(2)-w*w*x(1)
endfunction
B = 5
w = 1
x0 = [10;100]
t = 0:0.01:10
x = ode(x0,0,t,f)
plot2d(t,x)
现在它在 scilab 控制台中显示以下问题...
at line 3 of function f ( /Users/mottelet/so.sce line 7 )
in builtin ode
at line 15 of executed file /Users/mottelet/so.sce
Submatrix incorrectly defined.
ode: An error occurred in 'lsoda' subroutine.
请告诉我我做错了什么,并告诉我解决方法。
你的函数f
的代码在这行有问题
dx(2) = -B*(1-x^2)*x(2)-w*w*x(1)
因为表达式 -B*(1-x^2)*x(2)
产生一个向量,您尝试将其分配给标量容器(此处 dx(2)
)。也许你想写 -B*(1-x(1)^2)*x(2)
或 -B*(1-x(2)^2)*x(2)
(即用它的一个组件替换第一次出现的 x
)?