我正在使用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并返回bool设置为false(不抛出异常)
那么当我解决不一致时应该怎么做呢?它应该抛出异常或者返回false或者什么是正确的方法来做到这一点
提前致谢
答案 0 :(得分:2)
默认情况下,armadillo会尝试查找singular matrix 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()的文档。