齊次線性方程組和非齊次線性方程組

 

  1. 定義

齊次線性方程組:等式右側常數項全部爲0

非齊次線性方程組: 等式右側常數項不全部爲0

2.齊次方程組的求解

將係數矩陣化爲行階梯形矩陣,記全爲0的行數量爲r=n-R(A)。將後r個未知數分別取值爲1和0,對應的形成r個解。這些r個解的線性組合即爲基礎解系。

3.非齊次方程組的求解

分爲兩步:1.計算特解。將增廣矩陣化爲行階梯形矩陣,將r個未知數全部取值爲0,得到一個特解。

                  2.計算對應的齊次方程組的基礎解系。

4. 方程組有解的判斷條件

   齊次方程組:R(A)=n,只有唯一零解

   R(A)<n,有無窮多個解。基礎解系中含有的解數量爲r=n-R(A)個

   非齊次方程組:R(A)< R(B) ,無解

   R(A)=R(B) ,有解。具體解的情況同齊次方程組。

程序實現:列主消元法

#include<iostream>
#include<cmath>
using namespace std;

const int n = 3;
//交換2個數的大小
template<class T>
void SWAP(T& a, T& b)
{
    T c;
    c = a;
    a = b;

    b = c;
}

//高斯列主元素消元法
void gaussin_L(double a[n][n], double b[n])
{

    int i, j, k;
    int col, row;
    for (k = 0; k < n - 1; k++)
    {
        double ave = 0;
        //找出消元列中最大的那個元素所在的位置
        for (i = k; i < n ; i++)
            if (fabs(a[i][k]) > ave)
            {
                ave = fabs(a[i][k]);
                cout << "ave " << ave << endl;
                row = i;
                col = k;
            }

        //如果該對角線元素是0,同樣不能用高斯消元法來求解
        if (a[row][row] == 0)
        {
            cout << "can't solve" << endl;
            return;
        }
        //將找出的行進行交換
        if (k != row)
		{
            for (i = 0; i < n; i++)
            {

                        SWAP(a[row][i], a[k][i]);
            }
			SWAP(b[k], b[row]);
		}
        //消元過程
        double c[n];
        for (j = k + 1; j < n; j++)
        {
            c[j] = a[j][k] / a[k][k];
            cout << c[j] << endl;
        }
        for (i = k + 1; i < n; i++)
        {
            for (j = 1; j < n; j++)
            {
                a[i][j] = a[i][j] - c[i] * a[k][j];
            }
            b[i] = b[i] - c[i] * b[k];
        }

    }

    double x[n];
    x[n - 1] = b[n - 1] / a[n - 1][n - 1];
    for (i = n - 2; i >= 0; i--)
    {

        double sum = 0;
        for (j = i + 1; j < n; j++)
            sum += a[i][j] * x[j];
        x[i] = (b[i] - sum)/a[i][i];
    }
    //打印輸出
    for (i = 0; i < n ; i++)
        cout << " x" << "[" << i << "]=" << x[i] << endl;
}

 

思考:列主消元法僅適用於係數矩陣是方陣,而且必須是滿秩?

這個消元的過程不就是最簡化行列式的過程嗎

 

齊次座標

就是增加一個維度。笛卡爾座標系(x,y)對應的齊次座標爲(wx,wy,w)。可以對應無窮多個齊次座標,其實就是一個投影的過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章