解决符号矩阵逆的大花长

17日视图(30天)
我想解决一个象征性的线性系统看起来像这样:(A1 * s + A2) * x = (B1 * s + B2) *
地点:x……年代tates, u.... input, A1,A2,B1,B2.... numeric matrizes, s...laplace variable
我尝试了多种方法如:
linsolve (A1 * s + A2, B1 * s + B2)
(A1 * s + A2) \ (B1 * s + B2)
发票(A1 * * A2) * (B1 * s + B2)
Minimalexample:
s =符号(“s”);
A1 =兰德(15);
A2 =兰德(15);
1 B1 = 1(15日);
B2 = 1(15日1);
抽搐;(A1 * s + A2) \ (B1 * s + B2);toc
运行时间是35.918775秒。
最昂贵的计算采取的倒数(A1 * s + A2)。
有办法进一步减少计算时间吗?目标是计算只有一个组件的x。我真的不需要所有x但由于系统耦合的解决方案我没看到进一步降低复杂性的一种方法。

答案(1)

Aditya帕蒂尔
Aditya帕蒂尔 2021年5月21日
在这种情况下,使用逆mldivide要快得多。
N = 15;
信谊年代
A1 =兰德(N);
A2 =兰德(N);
B1 =兰德(N, 1);
B2 =兰德(N, 1);
x = (A1 * s + A2);
y = (B1 * s + B2);
抽搐;result1 y = x \编写此表达式;toc;
运行时间是48.751415秒。
抽搐;result2 =发票(x) * y;toc;
运行时间是1.878644秒。
总和(abs(潜艇(result1,编写此表达式年代,1)-潜艇(result2年代1)))
ans =
0
我试着不同大小的代码(N),和逆快这个问题。
关于避免逆,MATLAB并不提供任何内置的功能。然而,您可以实现自定义代码只计算所需的组件的逆,并使用它们的方程。但这可能不会给主要的性能增益。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!