⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++.txt

📁 通过用列主元消去法编写程序
💻 TXT
字号:
#include<stdio.h> 
#include<stdlib.h> 
#include<conio.h> 
#include<math.h> 
#define n 3 /*方程组的阶数*/ 
#define precision 1e-16 
static double aa[n][n+1]={{1,2,-1,3},{1,-1,5,0},{4,1,-2,2}}; 
/*增广矩阵的原始数据*/ 
void main() 
{int i,j,det;double a[n+1][n+2],x[n+1]; 
int GaussElimination_ColumnSelect(); 

for(i=1;i<=n;i++) for(j=1;j<=n+1;j++) 
/*用a[1][1]~a[n][n+1]存放增广矩阵*/ 
a[i][j]=aa[i-1][j-1]; 
det=GaussElimination_ColumnSelect(a,x); 
/*调用求解方程的函数,获取返回标志值*/ 
if(det!=0) 
for(i=1;i<=n;i++) 
printf("\nx[%d]=%f\n",i,x[i]);printf("\n"); 
getch(); 
} 
int GaussElimination_ColumnSelect(double a[][n+2],double x[n+1]) 
/*用列主元高斯消去法求解线性方程组的函数*/ 
{int i,j,k,r;double c; 
for(k=1;k<=n-1;k++) /*消元过程*/ 
{r=k; 
for(i=k;i<=n;i++) /*选列主元*/ 
if(fabs(a[i][k])>fabs(a[r][k]))r=i; 
if(fabs(a[r][k])<precision) 
{printf("\n det A=0.Elimination faild!");exit(0);} 
if(r!=k) 
{for(j=k;j<=n+1;j++) /*交换k,r两行*/ 
{c=a[k][j];a[k][j]=a[r][j];a[r][j]=c;} 
} 
for(i=k+1;i<=n;i++) /*进行消元计算*/ 
{c=a[i][k]/a[k][k]; 
for(j=k+1;j<=n+1;j++) 
a[i][j]=a[i][j]-c*a[k][j]; 
} 
} 
if(fabs(a[n][n])<precision) 
{printf("\n det A=0.Algorithm faild!");exit(0);} 
for(k=n;k>=1;k--) /*回代过程*/ 
{x[k]=a[k][n+1]; 
for(j=k+1;j<=n;j++) 
x[k]=x[k]-a[k][j]*x[j]; 
x[k]=x[k]/a[k][k]; 
} 
return(1); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -