c语言求方程组的自然数解,多元一次线性方程自然数解的算法解决办法
C/C++ code#include
using namespace std;
double* inverse_matrix(int determinant_scale, double *deter)//返回deter的逆矩陣,determinant_scale為矩陣的階數,deter為第一個元素的地址
{
///初始化單位矩陣
double *i_matrix = new double[determinant_scale*determinant_scale];
for(int row_i=0; row_i
{
for(int column_i=0; column_i
{
if(row_i==column_i)
{
i_matrix[row_i*determinant_scale+column_i] = 1;
}
else
{
i_matrix[row_i*determinant_scale+column_i] = 0;
}
}
}
轉變成上三角矩陣
for(int row=0; row
{
if(deter[row*determinant_scale+row]==0)
{
for(int row2=row+1; row2
double temp;
for(int column2=row; column2
{
temp = deter[row*determinant_scale+column2];
deter[row*determinant_scale+column2] = deter[row2*determinant_scale+column2];
deter[row2*determinant_scale+column2] = temp;
}
for(int column3=0; column3
{
temp = i_matrix[row*determinant_scale+column3];
i_matrix[row*determinant_scale+column3] = i_matrix[row2*determinant_scale+column3];
i_matrix[row2*determinant_scale+column3] = temp;
}
}
for(int row2=row+1; row2
{
double k = -1*(deter[row2*determinant_scale+row]/deter[row*determinant_scale+row]);
for(int column2=row; column2
{
deter[row2*determinant_scale+column2] += k*deter[row*determinant_scale+column2];
}
for(int column3=0; column3
{
i_matrix[row2*determinant_scale+column3] += k*i_matrix[row*determinant_scale+column3];
}
}
}
//轉變成對角矩陣
for(int re_row=determinant_scale-1; re_row>-1; --re_row)
{
for(int row2=re_row-1; row2>-1; --row2)
{
double k = -1*(deter[row2*determinant_scale+re_row]/deter[re_row*determinant_scale+re_row]);
deter[row2*determinant_scale+re_row] += k*deter[row*determinant_scale+re_row];
for(int column3=0; column3
{
i_matrix[row2*determinant_scale+column3] += k*i_matrix[re_row*determinant_scale+column3];
}
}
}
/轉變成單位矩陣
for(int r=0; r
{
for(int c=0; c
{
i_matrix[r*determinant_scale+c] *= (1/deter[r*determinant_scale+r]);
}
}
///返回逆矩陣
return i_matrix;
}
int main()
{
double a[3][3] = {1,2,3,2,1,2,1,3,3};
double *inverse_a;
inverse_a = inverse_matrix(3, a[0]);//3為矩陣的階數,a[0]為第一個元素的地址.
for(int i=0; i<9; ++i)
{
cout<
if(i%3==2)
{
cout<
}
}
return 0;
}
------解決方案--------------------
總結
以上是生活随笔為你收集整理的c语言求方程组的自然数解,多元一次线性方程自然数解的算法解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中石油2018年秋季C语言 试卷答案,[
- 下一篇: 俱全电池和那款电池通用?