凡亿教育-丽丽
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | ode45解微分方程维度不匹配,不用逐行核对
ode45解微分方程维度不匹配,不用逐行核对

调用ode45求解微分方程时,经常报错左右侧元素数目对不上,反复数输入输出向量的长度,看起来完全一致,却始终无法运行。这类问题不是简单的计数错误,几个隐性细节没处理好就会触发维度冲突。

71.png

1. 检查微分方程返回格式

ode45要求方程函数必须返回列向量,不能是行向量。

如果函数内部计算后输出的是行向量,即使元素总数正确,也会触发维度不匹配报错,用y(:)强制转为列向量即可修复。

2. 初值向量维度对齐

求解时传入的初始条件向量,必须和微分方程的状态变量数目完全一致。

比如3阶微分方程需要传入3个初值,少传或多传一个元素,都会直接触发维度不匹配,用length函数核对初值长度即可排查。

3. 避免隐式矩阵运算

方程内部不小心用了矩阵乘法,而非逐点运算。

比如用代替.,会把一维向量运算扩展成二维矩阵,输出元素数目直接翻倍,替换成逐点运算符号就能解决。

4. 分步调试定位

在微分方程函数开头插入size(y)语句,打印每一步输入的维度。

运行时就能直观看到哪一步维度发生了异常变化,不用盲目数元素数目,快速定位冲突点。


本文凡亿教育原创文章,转载请注明来源!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论