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

📄 s5.cpp

📁 数值分析的实验,可工大家参考的,能通过的小实验
💻 CPP
字号:
#include<iostream>
#include<math.h>
#define N 4
using namespace std;
double a[N+1][N+1],b[N+1],L[N+1][N+1],U[N+1][N+1],del;
int Zhuyuan(int k)
{
	int i,maxnum;
	double max,temp;
	max=fabs(a[k][k]);
	maxnum=k;
	for(i=k;i<=N;i++)
		if(fabs(a[i][k])>max)
		{
			max=fabs(a[i][k]);
			maxnum=i;
		}
	if(maxnum!=k)
		del*=-1.;
	if(max==0)
		return 0;
	for(i=k;i<=N;i++)
	{
		temp=a[k][i];
		a[k][i]=a[maxnum][i];
		a[maxnum][i]=temp;
	}
	temp=b[k];
	b[k]=b[maxnum];
	b[maxnum]=temp;
	return 1;
}
void Xiaoyuan(int k)
{
	int i,j;
	for(i=k+1;i<=N;i++)
	{
		L[i][k]=a[i][k]/a[k][k];
		for(j=k+1;j<=N;j++)
			a[i][j]-=(a[i][k]/a[k][k])*a[k][j];
		b[i]-=(a[i][k]/a[k][k])*b[k];
	}
	del*=a[k][k];
}
void Huidai()
{
	int i,j;
	double l;
	b[N]/=a[N][N];
	for(i=N-1;i>=1;i--)
	{
		l=0;
		for(j=i+1;j<=N;j++)
			l+=a[i][j]*b[j];
		b[i]=(b[i]-l)/a[i][i];
	}
}
int main()
{
	int i,j;
	double ain[N][N]={{10,-7,0,1},{-3,2.1,6,2},{5,-1,5,-1},{2,1,0,2}};
	double bin[N]={8,5.9,5,1};
	for(i=1;i<=N;i++)
	{
		for(j=1;j<=N;j++)
			a[i][j]=ain[i-1][j-1];
		b[i]=bin[i-1];
	}
	cout<<"A:"<<endl;
	for(i=1;i<=N;i++)
	{
		for(j=1;j<=N;j++)
		{
			cout.width(14);
			cout.setf(ios::left,ios::adjustfield);
			cout<<a[i][j];
		}
		cout<<endl;
	}
	cout<<endl;
	cout<<"b:"<<endl;
	for(i=1;i<=N;i++)
	{
		cout.width(14);
		cout.setf(ios::left,ios::adjustfield);
		cout<<b[i];
	}
	cout<<endl;
	del=1;
	for(i=1;i<=N-1;i++)
	{
		if(!Zhuyuan(i))
			break;
		Xiaoyuan(i);
	}
	if(a[N][N]!=0)
	{
		Huidai();
		del*=a[N][N];
	}
	cout<<endl;
	cout<<"L:"<<endl;	
	for(i=1;i<=N;i++)
	{
		for(j=1;j<i;j++)
		{
			cout.width(14);
			cout.setf(ios::left,ios::adjustfield);
			cout<<L[i][j];
		}
		cout.width(14);
		cout.setf(ios::left,ios::adjustfield);
		cout<<1;
		for(j=i+1;j<=N;j++)
		{
			cout.width(14);
			cout.setf(ios::left,ios::adjustfield);
			cout<<0;
		}
		cout<<endl;
	}
	cout<<endl;
	cout<<"U:"<<endl;
	for(i=1;i<=N;i++)
	{
		for(j=1;j<i;j++)
		{
			cout.width(14);
			cout.setf(ios::left,ios::adjustfield);
			cout<<0;
		}
		for(j=i;j<=N;j++)
		{
			cout.width(14);
			cout.setf(ios::left,ios::adjustfield);
			cout<<a[i][j];
		}
		cout<<endl;
	}
	cout<<endl;
	cout<<"x:"<<endl;
	for(i=1;i<=N;i++)
	{
		cout.width(14);
		cout.setf(ios::left,ios::adjustfield);
		cout<<b[i];
	}
	cout<<endl;
	cout<<"detA:"<<' ';
	cout<<del<<endl;
	return 0;
}




























⌨️ 快捷键说明

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