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

📄 追赶法.txt

📁 用于求解线性方程组的追赶法!!!程序经过优化处理
💻 TXT
字号:
#include<iostream.h>//追赶法
double *Catch(double *a,double *b,double *c,double *f);	
int n;
void main()
{

	cout<<"请输入方程的阶数:"<<endl;
	cout<<"n=";
	cin>>n;
	cout<<"请输入三对角矩阵:"<<endl;
	double *a=new double [n-1];
	for(int i=0;i<n-1;i++)
	{
		cout<<"a["<<i+2<<"]=";
		cin>>a[i];
	}
	double *b=new double [n];
	for(int j=0;j<n;j++)
	{
		cout<<"b["<<j+1<<"]=";
		cin>>b[j];
	}
	double *c=new double [n-1];
	for(int k=0;k<n-1;k++)
	{
		cout<<"c["<<k+1<<"]=";
		cin>>c[k];
	}
	cout<<"请输入列向量f:"<<endl;
	double *f=new double [n];
	for(int l=0;l<n;l++)
	{
		cout<<"f["<<l+1<<"]=";
		cin>>f[l];
	}
	double *X=new double [n];
	X=Catch(a,b,c,f);
	cout<<"方程组的解为:"<<endl;
	for(int m=0;m<n;m++)
		cout<<"X["<<m+1<<"]="<<X[m]<<endl;
	delete [] a;
	delete [] b;
	delete [] c;
	delete [] f;
	delete [] X;
}
double *Catch(double *a,double *b,double *c,double *f)
{
	double *s=new double [n];
	double *t=new double [n-1];
	s[0]=b[0];
	t[0]=c[0]/s[0];
	for(int i=1;i<n-1;i++)
	{
		s[i]=b[i]-a[i-1]*t[i-1];
		t[i]=c[i]/s[i];
	}
	s[n-1]=b[n-1]-a[n-2]*t[n-2];
	double *y=new double [n];
	y[0]=f[0]/s[0];
	for(int j=1;j<n;j++)
		y[j]=(f[j]-a[j-1]*y[j-1])/s[j];
	double *x=new double [n];
	x[n-1]=y[n-1];
	for(int k=n-2;k>=0;k--)
		x[k]=y[k]-t[k]*x[k+1];
	return x;
	delete [] s;
	delete [] t;
	delete [] y;
	delete [] x;
}

⌨️ 快捷键说明

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