You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSIM在Scilab v6.0.0/6.0.1无法运行,v5.5.2正常,报错求助

解决Scilab 6.0.0及以上版本中CSIM运行报错的问题

我帮你搞定这个Scilab版本兼容的坑——你碰到的lsode报错,本质是Scilab 6.x重构了ODE求解模块,和5.5.2的处理逻辑有明显差异导致的。

问题明确

你的代码在Scilab v5.5.2里能正常运行,但一到v6.0.0及更高版本就抛出错误,具体报错信息如下:

lsode-- at t (=r1), mxstep (=i1) steps necessary before reaching tout
where i1 is : 500
where r1 is : 0.1202764106130D-05
Excessive work done on this call (perhaps wrong jacobian type).
at line 159 of function csim ( C:\Program Files\scilab-6.0.1\modules\cacsd\macros\csim.sci line 170 )
at line 39 of executed file C:\Users\wensrl\Documents\SciLab\Control\optTest2.sce
ode: lsode exit with stat...

背后原因

Scilab 6.x对lsode求解器的默认参数做了收紧:比如最大迭代步数(mxstep)的阈值比5.5.2低,而且对雅可比矩阵的类型检测更严格。报错里的"Excessive work done"就是说,求解器在默认的500步限制内,没法完成你的模型积分,而5.5.2的阈值更宽松,或者自动适配了你的模型特性。

可行的修复方案

按优先级给你列几个实用办法:

  1. 手动调高求解器的最大迭代步数:调用csim的时候,显式给lsode设置更大的mxstep值,比如:
    // 把原来的csim调用改成这样,10000可以根据实际情况调大
    csim(your_inputs, ['lsode', 'mxstep', 10000])
    
  2. 切换到其他ODE求解器:如果调步数不管用,试试换用Scilab 6.x支持的更稳健的求解器,比如cvode:
    csim(your_inputs, ['cvode'])
    
  3. 检查模型的刚性与雅可比矩阵:如果你的控制系统是刚性系统,Scilab 6.x需要你显式指定雅可比矩阵类型,比如:
    csim(your_inputs, ['lsode', 'jacobian', 'full'])
    
    同时也确认下模型的初始条件有没有异常,比如初始值是不是导致系统突变的情况。

小提示

先试第一个方法,最直接省事;如果还是报错,再检查模型是不是刚性系统,或者换求解器测试。

内容的提问来源于stack exchange,提问作者TheWenz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:14:49