armadillo library c ++解决不一致的线性方程

时间:2017-01-05 11:15:42

标签: c++ armadillo

我正在使用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或者什么是正确的方法来做到这一点
提前致谢

1 个答案:

答案 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()的文档。