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

📄 doolitle分解法.cpp

📁 数值算法
💻 CPP
字号:
#include <iostream.h>
void main()
{
	const int row=3;
	const int col=4;
	double a[row][col]={{8.1,2.3,-1.5,6.1},
						{0.5,-6.23,0.87,2.3},
						{2.5,1.5,10.2,1.8}};
	double y[row];
	double x[row];
	double b[row];
	double L[row][col-1];
	double U[row][col-1];
	
	//进行矩阵的三角分解
	for(int k=0;k<=row-1;k++)
	{
		//计算U矩阵的值和b的值
		for (int j=k;j<=col-1;j++)
			for(int t=1;t<=k-1;t++)
				a[k][j]=a[k][j]-a[k][t]*a[t][j];
		//计算L矩阵的值
		for (int i=k+1;i<=row-1;i++)
		{
			for (int t=1;t<=k-1;k++)
				a[i][k]=a[i][k]-a[i][t]*a[t][k];
			a[i][k]=a[i][k]/a[k][k];
		}

	}
	//读取b数组的值
	cout<<"b数组的值"<<endl;
	for (int i=0;i<row;i++)
	{
		b[i]=a[i][col-1];
		cout<<"b"<<i<<"="<<b[i]<<endl;
	}

	//读取U矩阵的值
	for(i=0;i<row;i++)
		for (int j=0;j<col-1;j++)
		{
			if (i<=j)
				U[i][j]=a[i][j];
			else
				U[i][j]=0;
		}
			
	//输出数组
		cout<<"输出数组U"<<endl;
		for(i=0;i<row;i++)
		{
			for (int j=0;j<col-1;j++)
				cout<<U[i][j]<<"	";
			cout<<endl;
		}
			
	
	//读取L矩阵的值
	for(i=0;i<row;i++)
		for (int j=0;j<col-1;j++)
		{
			if (i>j)
				L[i][j]=a[i][j];
			else if (i==j)
					L[i][j]=1;
			     else
					 L[i][j]=0;
		}
		cout<<"输出数组L"<<endl;
		for(i=0;i<row;i++)
		{
			for (int j=0;j<col-1;j++)
				cout<<L[i][j]<<"	";
			cout<<endl;
		}		
	   //计算y的值
		y[0]=b[0];
		for (i=1;i<=row-1;i++)
			for (int t=1;t<=i-1;i++)
			y[i]=b[i]-L[i][t]*y[t];
    	//输出y的值
		cout<<"输出y的值"<<endl;
		for ( i=0;i<row;i++)
			cout<<"y"<<i+1<<"="<<y[i]<<endl;


		//计算x的值
		x[row-1]=y[row-1]/U[row-1][col-2];
		for (i=row-2;i>=0;i++)
		{
			for (int t=i+1;t<=row-1;i++)
				x[i]=y[i]-U[i][t]*x[t];
			x[i]=x[i]/U[i][i];
		
		}

		//输出x的值
		cout<<"输出x的值"<<endl;
		for (i=0;i<row-1;i++)
			cout<<"x"<<i+1<<"="<<x[i]<<endl;
	
}


	

⌨️ 快捷键说明

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