在scipy中有一个ldl分解和一个求解方法,但是我无法在python中获得与使用eigen3进行非常简单的代码段相同的结果。 这是C++代码:
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main()
{
Matrix2f A, b;
A << 2, -1, -1, 3;
b << 1, 2, 3, 1;
cout << "Here is the matrix A:n" << A << endl;
cout << "Here is the right hand side b:n" << b << endl;
Matrix2f x = A.ldlt().solve(b);
cout << "The solution is:n" << x << endl;
}
程序的输出为:
Here is the matrix A:
2 -1
-1 3
Here is the right hand side b:
1 2
3 1
The solution is:
1.2 1.4
1.4 0.8
如何使用numpy/scipy来编写以获得相同的结果?
我尝试了以下一些方法:
import scipy.linalg
A = np.array([[2,-1],[-1,3]])
b = np.array([[1,2],[3,1]])
a = scipy.linalg.ldl(A)
print(scipy.linalg.solve(a[0],b))
我尝试转置并执行a和b成员的各种组合。我得到了一个结果,但它与C++程序中不同,所以我在这里做错了什么?
谢谢
啊,我对所有的措辞都感到困惑。 它只是解决 Ax=b。 所以scipy.linalg.solve(A,b)
做到了。