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

📄 doolittle.c

📁 解线性方程组的doolittle分解法的C语言程序实现
💻 C
字号:
#include "iostream.h"

#include "stdio.h"

#define max 20

main()

{

  int i,k,n,j,r;

  double x,v,y;

  double a[max][max],u[max][max],l[max][max];

  double b[max],Y[max],X[max];

  /*输入*/

  printf("Input n:");  
  scanf("%d",&n);

  printf("Input a[%d][%d]:\n",n,n);

  for(i=1;i<n+1;i++)

         for(j=1;j<n+1;j++)

         {         
			 scanf("%lf",&x); 
		       a[i][j]=x;  
		 }

             printf("b[i]:");

   for(i=1;i<n+1;i++)  

   {       scanf("%lf",&y);     b[i]=y;   }

/*计算*/

for(r=1;r<n+1;r++)

{ 

 for(i=r;i<n+1;i++)

  {    v=0;

         for(k=1;k<r;k++)

          v=l[r][k]*u[k][i]+v;

         u[r][i]=a[r][i]-v; printf("u[%d][%d]=%f\n",r,i,u[r][i]);

  }

  for(i=r+1;i<n+1;i++)

  {    v=0;

         for(k=1;k<r;k++)

           v=v+l[i][k]*u[k][k];

     l[i][r]=(a[i][r]-v)/u[r][r]; printf("l[%d][%d]=%f\n",i,r,l[i][r]);

  }

}

for(i=1;i<n+1;i++)

{ 

 v=0;

  for(k=1;k<i;k++)

       v=v+l[i][k]*Y[k];

  Y[i]=b[i]-v;

}

for(i=n;i>0;i--)

 { 

  v=0;

  for(k=i+1;k<n+1;k++)

       v=v+u[i][k]*X[k];

  X[i]=(Y[i]-v)/u[i][i];

}  

printf("\n");

for(i=1;i<n+1;i++)

     printf("x[%d]=%f\n",i,X[i]);

     printf("\n");

  for(i=1;i<n+1;i++)

    printf("y[%d]=%f\n",i,Y[i]);

}

⌨️ 快捷键说明

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