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 )?