armadillo库c++求解不一致的线性方程

armadillo library c++ solve the linear equation that is inconsistent

本文关键字:不一致 线性方程 c++ armadillo      更新时间:2023-10-16

我正在使用armadillo库,我试图使用此代码来求解线性方程组,我输入了一个应该不一致的情况,但它输出了方程的解
我试试这个

x+y=3,
4 x + 4 y = 10

这是代码

mat A(2,2);
vec B(2);
A << 1 << 1 << endr
<< 4 << 4 << endr;
B << 3 << endr
<< 10 << endr;
vec Ans;
Ans = solve(A,B);
cout << Ans << endl;

从文件中说,如果没有找到解决方案,它将抛出并驱逐

如果未找到解决方案:
X=solve(A,B)重置X并抛出std::runtime_error异常solve(X,A,B)重置X并返回设置为false的bool(未引发异常)

那么,当我解决不一致时,我应该怎么做呢?它应该抛出异常或返回false或其他任何正确的方法是什么
提前感谢

默认情况下,armadillo试图找到奇异矩阵A:的近似解

warning: solve(): system seems singular; attempting approx solution
1.2647
1.2647

您应该使用solve_opts::no_approx选项禁用此行为:

Ans = solve(A,B,solve_opts::no_approx);

请参阅solve()的文档。