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

📄 选主元高斯消去法.cpp

📁 数值分析(计算方法):欧拉方法、高斯-赛德尔迭代法、拉格朗日及分段线性插值、龙贝格算法、牛顿下山法、选主元高斯消去法
💻 CPP
字号:
#include<iostream>
#include<cmath>
using namespace std;

void main()
{
    double a[10][10],b[10],sum,t,d;
    int n,i,j,k,l;
    cout<<"input n:"; 
    cin>>n;
    cout<<"input a[n][n]:"<<endl;
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    cin>>a[i][j];
    cout<<"input b[n]:"<<endl;
    for(i=1;i<=n;i++)
    cin>>b[i];

    for(k=1;k<=n;k++)
    {
        d=a[k][k];
        l=k;
		i=k+1;
         while(i<=n)
			{
                if(abs(a[i][k])>abs(d))
				{
				d=a[i][k];
				l=i;}
                i++;
			}
            if(d==0)
            {
                cout<<"error!";
                   }
            else            
                if(l!=k)  
                {
                    for(j=k;j<=n;j++)
                    {
                        t=a[l][j];
                        a[l][j]=a[k][j];
                        a[k][j]=t;
                    }
                    t=b[k];
                    b[k]=b[l];
                    b[l]=t;
                    
                }
                               
            for(j=k+1;j<=n;j++)
            a[k][j]=a[k][j]/a[k][k];
            b[k]=b[k]/a[k][k];
            for(i=k+1;i<=n;i++)
            {for(j=k+1;j<=n;j++)
            a[i][j]=a[i][j]-a[i][k]*a[k][j];
            }
			for(i=k+1;i<=n;i++)
            b[i]=b[i]-a[i][k]*b[k];
            continue;
	}
    for(i=n-1;i>=1;i--)
    {
        sum=0; 
        for(j=i+1;j<=n;j++)
        {
            sum+=a[i][j]*b[j];
		}	b[i]=b[i]-sum;
	
	}
    for(i=1;i<=n;i++)
    cout<<b[i]<<endl;           
}                
    
     

⌨️ 快捷键说明

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