?? 追趕法.txt
字號:
#include<iostream.h>//追趕法
double *Catch(double *a,double *b,double *c,double *f);
int n;
void main()
{
cout<<"請輸入方程的階數(shù):"<<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 + -