首页 文章

在matlab中求解大约束线性和非线性方程组的最佳方法是什么?

提问于
浏览
0

MATLAB中约束线性和非线性方程组的求解

我正在使用直接刚度方法在MATLAB中解决FEM问题 . 现在将问题表述为非线性方程组:

KU=F or CF=U with C = K^{-1}.

问题是在3-Dd中制定的,有200多个节点 . 该模型用作变形估计器,力总是输入和变形输出 . 所以有很多线性方程 . 现在需要扩展这个问题,需要实现2种类型的约束 . 一些节点必须被约束,以便它们只能围绕给定点以圆周运动移动 . 并且一些节点必须以最大变形量绑定 .

总共将有数百个形式方程式的方程式:

a_1 X(1) + a_2 X(2) + ... - F(1) = 0

大约10个非线性形式的等式约束(也可能是正弦曲线):

X(1)^2 + X(2)^2 = L

和形式的10个不等式约束:

X(1) < 30\pi/180

同时约束此类约束的非线性方程组的最佳方法是什么?是否可以使用fsolve?还是fmincon?我一直在研究求解器,但是我无法找到一个可靠的结论,即求解器能够同时处理所有这些方程类型以及在计算时间方面最有效的方法 .

1 回答

  • 0

    在不太了解您的问题类型的情况下,您应该看看更具体的数学优化工具,您可以只编写一次“类似”约束,确定它们应用的维度,然后语言相应地扩展它们 .

    对于非线性问题的求解器引擎,我建议IPOPT . 它是免费的,它有很好的表现 .

    对于建模工具,您可以选择专用的数学优化包,如GAMSAMPL,或者 - 现在越来越常见 - 将通用语言扩展到数学优化领域的库(在第二种情况下,我会建议Pyomo for Python或JuML for Julia)

相关问题