《轉》線性方程組求解

2022-03-31 10:12:47 字數 2658 閱讀 8771

//解線性方程組

#include#include#include//----------------------------------------------全域性變數定義區

const int number=15; //方程最大個數

double a[number][number],b[number],copy_a[number][number],copy_b[number]; //係數行列式

int a_y[number]; //a中隨著橫座標增加列座標的排列順序,如a[0][0],a[1][2],a[2][1]...則a_y=;

int lenth,copy_lenth; //方程的個數

double a_sum; //計算行列式的值

char * x; //未知量a,b,c的載體

//----------------------------------------------函式宣告區

void input(); //輸入方程組

void print_menu(); //列印主選單

int choose (); //輸入選擇

void cramer(); //cramer演算法解方程組

void gauss_row(); //gauss列主元解方程組

void guass_all(); //gauss全主元解方程組

void doolittle(); //用doolittle演算法解方程組

int doolittle_check(double a[number],double b[number]); //判斷是否行列式》0,若是,調整為順序主子式全》0

void xiaoqu_u_l(); //將行列式doolittle分解

void calculate_u_l(); //計算doolittle結果

double & calculate_a(int n,int m); //計算行列式

double quanpailie_a(); //根據列座標的排列計算的值,如a_y=,得sum=a[0][ a_y[0] ] * a[1][ a_y[1] ] * a[2][ a_y[2] ]=a[0][0]*a[1][2]*a[2][1];

void exchange(int m,int i); //交換a_y[m],a_y[i]

void exchange_lie(int j); //交換a[j]與b;

void exchange_hang(int m,int n); //分別交換a和b中的m與n兩行

void gauss_row_xiaoqu(); //gauss列主元消去法

void gauss_all_xiaoqu(); //gauss全主元消去法

void gauss_calculate(); //根據gauss消去法結果計算未知量的值

void exchange_a_lie(int m,int n); //交換a中的m和n列

void exchange_x(int m,int n); //交換x中的x[m]和x[n]

void recovery(); //恢復資料

//主函式

void main()

}//函式定義區

void print_menu()

x=new char[lenth];

for(i=0;i>a[i][j];

cin>>b[i]; }

//備份資料

for(i=0;i>choice;

switch(choice)

cout<<"\n是否換種方法求解(y/n):";

cin>>ch;

if(ch=='n'||ch=='n') return 0;

recovery();

cout<<"\n\n\n";

return 1;

}//用克拉默法則求解方程.

void cramer()

} if(maxi!=k)

exchange_hang(k,maxi);

if(maxj!=k)

for(i=k+1;i=0;i--)

}for(i=k+1;i}

if(temp_a[lenth-1][lenth-1]==0) return 0;

return 1;

}void exchange_hang(int m,int n) //交換a中和b兩行

temp=b[m];

b[m]=b[n];

b[n]=temp;

}void exchange(int m,int i) //交換a_y[m],a_y[i]

void exchange_lie(int j) //交換未知量b和第i列

}void exchange_a_lie(int m,int n) //交換a中的兩列

}void exchange_x(int m,int n) //交換未知量x[m]與x[n]

void recovery() //用其中一種方法求解後恢復資料以便用其他方法求解

MATLAB 線性方程組求解

clc,clear all close all 高斯消去法 a 2 3 4 3 5 2 4 3 30 線性方程組的係數矩陣 b 6 5 32 線性方程組的右端列向量 m,n size a 測量係數矩陣的維數 if m n fprint 線性方程組的係數矩陣非方陣 break end fprintf ...

MATLAB線性方程組求解

對於一般的,有唯一解的線性方程組,我們可以轉換成矩陣的形式 a x bax b ax b 則可以用矩陣運算求解x,即x a b 求解齊次線性方程組基礎解系的函式是null z null a 表示返回矩陣a的基礎解系組成的矩陣。z還滿足ztz i z null a,r 得出的z不滿足ztz i,但得出...

SVD求解線性方程組

對於任一給定的矩陣am n boldsymbol am n 都存在這樣的分解 a u dv t boldsymbol boldsymbol boldsymbol boldsymbol t a udvt 這裡 u boldsymbol u是乙個 m m m times m m m 的正交矩陣,d bo...