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

📄 列主元高斯消去法.cpp

📁 数值计算各算法的程序,包括:牛顿迭代法,超松驰迭代法,微分法等.对于初学数值分析这门课程的人有很大的帮助.
💻 CPP
字号:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
#define length 9
void fun(double a[length][length],double b[length])
{
	int i,j,k,i0;
	double temp;
	/*比较出列主元及交换行,并进行消元*/
	for(k=0;k<length;k++)
		{
		 temp=fabs(a[k][k]);
		 i0=k;
		 for(i=k+1;i<length;i++)
			{
			 if(fabs(a[i][k])>temp) 
				{
				 temp=fabs(a[i][k]);
				 i0=i;
				}
			}
		 if(i0!=k) /*io作为标志位指示需交换行*/
			{
			 for(j=0;j<length;j++)
				{
				 temp=a[k][j];a[k][j]=a[i0][j];a[i0][j]=temp;
				}
			 temp=b[k];b[k]=b[i0];b[i0]=temp;
			}/*用temp来存放所有的中间变量*/
		 for(i=k+1;i<length;i++)
			{
			 for(j=k+1;j<length;j++)
				{
				 a[i][j]=a[i][j]-a[i][k]/a[k][k]*a[k][j];
				}
			 b[i]=b[i]-a[i][k]/a[k][k]*b[k];
			}
		}
	/*写出解向量*/
	b[length-1]=b[length-1]/a[length-1][length-1];
	for(i=length-2;i>=0;i--)
		{
		 for(j=length-1;j>i;j--)
			{
			 b[i]=b[i]-a[i][j]*b[j];
			}
		 b[i]=b[i]/a[i][i];
		} /*用b[]来存放解向量*/
}
void main()
{
double R[length][length]={{31,-13,0,0,0,-10,0,0,0},
				{-13,35,-9,0,-11,0,0,0,0},
				{0,-9,31,-10,0,0,0,0,0},
				{0,0,-10,79,-30,0,0,0,-9},
				{0,0,0,-30,57,-7,0,-5,0},
				{0,0,0,0,-7,47,-30,0,0},
				{0,0,0,0,0,-30,41,0,0},
				{0,0,0,0,-5,0,0,27,-2},
				{0,0,0,-9,0,0,0,-2,29}};
double V[length]={-15,27,-23,0,-20,12,-7,7,10};
int i;
fun(R,V);
for(i=0;i<length;i++)
{cout<<setprecision(5)<<V[i]<<endl;}
}
/*结果:
-0.28923
0.34544
-0.71281
-0.22061
-0.4304
0.15431
-0.057823
0.20105
0.29023*/

⌨️ 快捷键说明

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