//解線性方程組#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...