【问题标题】:Solving in a efficient way a symbolic linear system of equations on MATLAB/Maple/etc在 MATLAB/Maple/etc 上以有效的方式求解符号线性方程组
【发布时间】:2016-06-26 20:05:33
【问题描述】:

基本上我有一个线性方程组,其中每个系数都是一个变量。例如,对于 2x2 系统:

  • a11*x1 + a12*x2 = f1
  • a21*x1 + a22*x2 = f2

x1, x2 = .... (符号表达式有 a11, a12, a21, a22, f1, f2)

我尝试通过 Cramer 规则在 MATLAB 中解决它,以符号形式编写系统的矩阵并计算适当的行列式。问题是,所需的时间随着系统的大小而迅速增长。我手头的问题需要一个 12x12 系统的符号解决方案,但我当前的代码所需的时间很长,而且不太可能在下个月的任何时候完成。

解决这个符号线性系统的最佳方法是什么?有人告诉我,Maple 最适合符号运算,它在计算符号行列式方面会比 MATLAB 快得多吗?

【问题讨论】:

  • “象征”和“高效”造句。不,这通常不会发生。是的,MATLAB 最适合解决数值问题,我个人不喜欢它的符号引擎。
  • 12x12 全符号系统的解决方案有哪些实际用途?行列式将有 12! = 十亿个术语,每个术语有 12 个因子。
  • 如果您的矩阵中没有结构,您可以安全地停止处理此问题,正如 cmets 指出的那样。

标签: matlab symbolic-math maple equation-solving


【解决方案1】:

是的,除了所涉及的变量的数值系数之外,Maple 还可以求解具有符号系数的线性方程组。这是一个例子:

eq||1:=a11*x1+a12*x2=f1;
eq||2:=a21*x1+a22*x2=f2;
solve({eq||1, eq||2}, [x1,x2]);

然后您将在一秒钟内得到以下答案。

[[x1 = -(a12*f2-f1*a22)/(a11*a22-a21*a12), x2 = (a11*f2-a21*f1)/(a11*a22-a21*a12)]] 

有关更多信息和求解复杂方程,您可以访问 Maple 帮助页面。

【讨论】:

  • 实际上,可以求解的最大此类系统有七个方程。这需要 10 多分钟并使用大约 1G 的内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多