列主元消去法解线性方程组(C++实现)

编程入门 行业动态 更新时间:2024-10-10 11:24:38

列主元<a href=https://www.elefans.com/category/jswz/34/1768864.html style=消去法解线性方程组(C++实现)"/>

列主元消去法解线性方程组(C++实现)

列主元消去法解线性方程组(C++实现)

#include<cstdio>
#include<iostream>
using namespace std;
int quen(double a[],int n){double x;int k;for(int i=0;i<n;i++){if(a[i]>=0){a[i]=a[i];}else{a[i]=-a[i];}}x=a[0];int p=0;for(int i=1;i<n;i++){if(x<=a[i]){x=a[i];p=i;}}p=p+1;return p;
}
void liezhuyuan(double a[],double b[],int n){double aa[n][n];for(int i=0;i<n;i++){for(int j=0;j<n;j++){aa[i][j]=a[n*i+j];}}double A[n][n],B[n];for (int i=0;i<n;i++){B[i]=b[i];for(int j=0;j<n;j++){A[i][j]=aa[i][j];}}double AA[n][n],BB[n];for(int k=1;k<=(n-1);k++){double s[n+1-k]={};for(int e=k;e<=n;e++){s[e-k]=A[e-1][k-1];}  int aa;aa=quen(s,n+1-k);aa=aa+k-1; double temp1,temp2;for(int i=k;i<=n;i++){temp1=A[k-1][i-1];A[k-1][i-1]=A[aa-1][i-1];A[aa-1][i-1]=temp1;}temp2=B[k-1];B[k-1]=B[aa-1];B[aa-1]=temp2;for (int i=(k+1);i<=n;i++){double mik=A[i-1][k-1]/A[k-1][k-1];for(int j=(k+1);j<=n;j++){AA[i-1][j-1]=A[i-1][j-1]-mik*A[k-1][j-1];BB[i-1]=B[i-1]-mik*B[k-1];}}for (int p=k;p<n;p++){A[p][k-1]=0;B[p]=BB[p]; 	}for (int p=k;p<n;p++){for(int q=k;q<n;q++){A[p][q]=AA[p][q];}}}cout<<"输出化简后的上三角矩阵\n"; for (int i=0;i<n;i++){for(int j=0;j<n;j++){cout<<A[i][j]<<"     ";}cout<<"\n";}cout<<"输出化简后的上系数向量\n"; for (int i=0;i<n;i++){cout<<B[i]<<"   ";}cout<<"\n"; double x[n];x[n-1]=B[n-1]/A[n-1][n-1];for (int i=n-1;i>=1;i--){double sum=0;for(int j=i+1;j<=n;j++){sum=sum+A[i-1][j-1]*x[j-1];}x[i-1]=(B[i-1]-sum)/A[i-1][i-1];}cout<<"输出求解的x值\n"; for (int i=0;i<n;i++){cout<<x[i]<<"   ";}
}
int main(){int n;cout<<"输入线性方程组的阶数";cin>>n;int c=n*n;double a[c];for(int i=0;i<c;i++){cout<<"按行输入矩阵的元素";cin>>a[i];}double b[n];for(int i=0;i<n;i++){cout<<"输入b的元素";cin>>b[i];}liezhuyuan(a,b,n);return 0;
} 

更多推荐

列主元消去法解线性方程组(C++实现)

本文发布于:2024-03-06 01:17:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713972.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:消去   线性方程组   列主元

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!