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

📄

📁 收集的C语言算法程序
💻
字号:
#include<iostream>
#include<math.h>
using namespace std;
#define n 3               //以三阶矩阵为例

void interchangerow(double *p,double *q)             
{
int i;
double temp;
for(i=0;i<n;i++)
{
temp=*(p+i);
     *(p+i)=*(q+i);
     *(q+i)=temp;
}
}
//交换行元素的函数
void exchange(double x,double y)
{
double temp;
temp=x;
x=y;
y=temp;
}
//交换两个数的函数
void main() 
{
int i,j,k,m,r;
double A[n][n],b[n],u[n][n],l[n][n],p3=0,p4=0,p5=0,p6=0,max=0,S[n],x[n],y[n],temp0=0;

cout<<"Please input the matrix of coefficients:"<<"\n";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
   cin>>A[i][j];
cout<<"Please input the right part:"<<"\n";
for(i=0;i<n;i++)
cin>>b[i];
//输入系数矩阵和右边矩阵

for(i=0;i<n;i++)
   l[i][i]=1;

for(k=0;k<n;k++)
{
   for(i=k;i<n;i++)
   {   
    p3=0;
    for(m=0;m<=k-1;m++)
     p3+=l[i][m]*u[m][k];
    S[i]=A[i][k]-p3; 
   }
   max=fabs(S[k]);
   r=k;
   for(i=k;i<n;i++)
    if(max<fabs(S[i]))    r=i;           //记录主元的行数
          u[k][k]=S[r];                        
    if(r!=k)
    {
     interchangerow(*(A+k),*(A+r));
     exchange(b[k],b[r]);
    }                                 //交换行元素和右边矩阵的相应元素
for(i=k+1;i<n;i++)
{   
   p4=0;
   for(m=0;m<=k-1;m++)
    p4+=l[k][m]*u[m][i];
   u[k][i]=A[k][i]-p4;                              //计算u矩阵
}
for(i=k+1;i<n;i++)
{
   l[i][k]=S[i]/S[r];                      //计算l矩阵
}                             
  
}

y[0]=b[0];
for(i=1;i<n;i++)
{   
   p5=0;
   for(j=0;j<=i-1;j++)
      p5+=l[i][j]*y[j];
   y[i]=b[i]-p5;                   
}

x[n-1]=y[n-1]/u[n-1][n-1];
for(i=n-2;i>=0;i--)
{   
   p6=0;
   for(j=i+1;j<n;j++)
    p6+=u[i][j]*x[j];
   x[i]=(y[i]-p6)/u[i][i];                
}

cout<<"The result is:\n";
for(i=0;i<n;i++)
   cout<<"x"<<i+1<<"="<<x[i]<<"\n";

}

 

⌨️ 快捷键说明

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