📄 追赶法.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 + -