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

📄 triangular.cpp

📁 线性代数方程组列主元三角分解法线性代数方程组
💻 CPP
字号:
#include<iostream.h>
#include<math.h>

void main(void){
	int i,j,n,k,q;
	float a[10][11],s[10],s1[10];
	cout<<"请输入n的值:";
	cin>>n;
	cout<<"输入数组a:"<<endl;
	for(i=1;i<=n;i++)
		for(j=1;j<=(n+1);j++)
			cin>>a[i][j];    //给矩阵a赋值
    for(i=1;i<=n;i++){
		for(j=1;j<=(n+1);j++)
			cout<<a[i][j]<<'\t';
		cout<<'\n';
	}               //输出数组a
    cout<<"'''''''''''''''''''''''''"<<'\n';
      //进行第一行和第一列元素的求取'''''''''''''''''''''''''//
    int t=1;
	for(i=1;i<=n;i++){
		s[i]=a[i][1];
	}
	float max=fabs(s[1]);
	for(i=2;i<=n;i++)
		if(fabs(s[i])>max){
			max=fabs(s[i]);
			t=i;
		}
	for(j=1;j<=(n+1);j++){
		float b=a[1][j];
		a[1][j]=a[t][j];
		a[t][j]=b;
	}             //进行第一列主元互换
    for(i=2;i<=n;i++)
		a[i][1]=a[i][1]/max;  //第一列除以a[1][1]
    for(i=1;i<=n;i++){
		for(j=1;j<=(n+1);j++)
			cout<<a[i][j]<<'\t';
		cout<<'\n';
	}
           //输出进行第一步变换的数组a
    cout<<"'''''''''''''''''''''''''"<<'\n';
           //进行第k步分解'''''''''''''''''''''''''''''''''''''''''//
    for(k=2;k<=n;k++){
		for(i=k;i<=n;i++){
			float sum=0;
			for(q=1;q<k;q++)
				sum+=a[i][q]*a[q][k];
			s1[i]=a[i][k]-sum;
		}
	    int l=k;
		float m=fabs(s1[k]);                  //比较第k步分解的第k列值的大小
		for(i=k;i<=n;i++){
			if(fabs(s1[i])>m){
				m=fabs(s1[i]);
				l=i;                             //返回行值
			}
		}
		for(j=1;j<=n+1;j++){                     //交换两行元素
		    float s2=a[k][j];
			a[k][j]=a[l][j];
			a[l][j]=s2;
		}//算出第k行行元素的值
		for(j=k;j<=n+1;j++){
			float sum1=0;
			for(q=1;q<k;q++)
				sum1+=a[k][q]*a[q][j];
			a[k][j]=a[k][j]-sum1;
		}//算出第k列列元素的值
		for(i=k+1;i<=n;i++){
			float sum2=0;
			for(q=1;q<k;q++)
				sum2+=a[i][q]*a[q][k];
			a[i][k]=(a[i][k]-sum2)/(a[k][k]);
		}
	}               //第k步分解结束
    for(i=1;i<=n;i++){
		for(j=1;j<=(n+1);j++)
			cout<<a[i][j]<<'\t';
		cout<<'\n';
	}        //输出改变后的数组
//输出解'''''''''''''''''''''''''''''''''''''''''''''''''''''''//
    float x[10];
	for(i=n-1;i>=1;i--){
		x[n]=a[n][n+1]/a[n][n];
		float sum3=0;
		for(j=i+1;j<=n;j++)
			sum3+=a[i][j]*x[j];
		x[i]=(a[i][n+1]-sum3)/a[i][i];
	}     //回代过程
    for(i=1;i<=n;i++){
		cout<<'x'<<i<<'='<<x[i]<<endl;
	}     //输出解向量
}

⌨️ 快捷键说明

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