E023

orsci中方程求解中,使用矩阵和列向量,一般调用solve(...)来求解,也可以使用逆矩阵方法。推荐使用solve(...)函数完成,因为专门针对方程求解这一问题优化,减少计算量。

 

#include "stdafx.h"

#include "orsciJWVCL.h"
#include "orsciVM.h"
using namespace orsci;
using namespace orsci::vmt;


int main()
{
cout << " orsci: 方程求解,常用solve(...)函数,也可用求逆方法 ... http://www.orsci.cn" << endl;
cout << endl;
mdouble A;
A = "6, 2, 3; 2, 2, 4; 5, 2, 3"; //字符串表达式构造向量,也可构造索引。
cout << A << endl;

cout << "A的秩=" << endl;
cout << vmt::rank(A) << endl;

cout << "A的行列是值=" << endl;
cout << vmt::det(A) << endl;

coldouble B = "1, 2, 3";
cout << "B = " << endl;
cout << B << endl;

mdouble x;
vmt::solve(A, B, x);
cout << "第1种解法:调用solve(...)求解。方程求解 x = " << endl;
cout << x << endl;

cout << "A*x = " << endl;
cout << A * x << endl;

cout << "inv(A) = " << endl;
cout << inv(A) << endl;

cout << "inv(A) * A = " << endl;
cout << inv(A) * A << endl;

cout << "第2种解法:inv(A) * B = " << endl;
cout << inv(A) * B << endl;

cout << endl;

cout << "press any key to stop..." << endl;
char pp;
cin >> pp;
return 0;
}

输出

(一)运行结果

orsci: 方程求解,常用solve(...)函数,也可用求逆方法 ... http://www.orsci.cn

rowCount = 3 colCount = 3
6 2 3
2 2 4
5 2 3

A的秩=
3
A的行列是值=
-2
B =
1
2
3

第1种解法:调用solve(...)求解。方程求解 x =
rowCount = 3 colCount = 1
-2
17
-7

A*x =
rowCount = 3 colCount = 1
1
2
3

inv(A) =
rowCount = 3 colCount = 3
1 -0 -1
-7 -1.5 9
3 1 -4

inv(A) * A =
rowCount = 3 colCount = 3
1 0 0
0 1 0
0 0 1

第2种解法:inv(A) * B =
-2
17
-7

press any key to stop...

(二)说明:

(1)方程求解中,使用矩阵和列向量,一般调用solve(...)来求解,也可以使用逆矩阵方法。

(2)关于向量与矩阵,请参看书籍:姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》

(6)orsci包支持向量和矩阵计算,可下载配套软件orsci-art应用。

书籍 姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》
软件 orsci-art开发包(C++语言、Delphi语言和C语言)。