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

📄 guass_band_good.c

📁 半带宽存储的高斯消去法,在有限元法的解决问题中经常使用。
💻 C
字号:
#include "stdio.h"
void guass_band(double a[6][4],double b[6],int n)
{
   int m,l,j;
   double mi,d,f;
   double min(double a,double b);
    for(m=0;m<5;m++)
    {
     d=min(n-m-1,4-1);
     for(l=1;l<=d;l++)
        {
            mi=a[m][l]/a[m][0];
            b[m+l]=b[m+l]-b[m]*mi;
            for(j=0;j<=4-l-1;j++)
                a[m+l][j]=a[m+l][j]-mi*a[m][j+l];
         } 
      }
    
    b[n-1]=b[n-1]/a[n-1][0];/*回代*/
    for(m=n-2;m>=0;m--)
     {  
       
       f=min(n-1-m,3);
       for(j=1;j<=f;j++)
            b[m]=b[m]-a[m][j]*b[m+j];/*求和*/
            b[m]=b[m]/a[m][0];  
     }        
}
  
  
 main()
{ 
	int i;
    static double a[6][4]=
           {
           	{5,-3,2,0,},
            {8,-3,2,4,},
            {8,-3,0,0},
            {7,-2,1,0},
            {7,-2,0,0},
            {4,0,0,0}};
    static double b[6]={6,21,0,14,22,3};
    guass_band(a,b,6);
    printf("带状矩阵等带宽存储高斯线性方程组解法:\n");
    for (i=0;i<=5;i++)
        printf("x(%d)=%e\n",i,b[i]);
}


double min(double a,double b)
{
	double c;
	if(a>=b)
		c=b;
	else
		c=a;
	return c;
}

⌨️ 快捷键说明

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