📄 chase.cpp
字号:
//chase.cpp--追赶法解三对角方程组
#include<iostream>
#include<cmath>
using namespace std;
const int ROW=20;
void print_root(float x[]);
void read_jz(float jz[],int l,int m,int n,char ch);
int main()
{
float x[ROW],a[ROW],b[ROW],c[ROW],f[ROW];
int i,k;
cout<<"输出三对角矩阵T和f矩阵的各元素:"<<endl;
read_jz(a,1,ROW-1,-1,'a');
read_jz(b,0,ROW-1,4,'b');
read_jz(c,0,ROW-2,-1,'c'); //以上三行输出三对角矩阵的系数
f[0]=3;
f[ROW-1]=3;
for(i=2;i<=ROW-1;i++)
f[i-1]=2;
cout<<"f[20]:"<<endl; //输出f矩阵
for(i=0;i<=ROW-1;i++)
cout<<f[i]<<" ";
cout<<endl;
x[0]=f[0];
for(k=1;k<=ROW-1;k++) //消去过程
{
a[k]=a[k]/b[k-1];
b[k]=b[k]-a[k]*c[k-1];
x[k]=f[k]-a[k]*x[k-1];
}
x[ROW-1]=x[ROW-1]/b[ROW-1];
for(k=ROW-2;k>=0;k--) //回代过程
{
x[k]=(x[k]-c[k]*x[k+1])/b[k];
}
print_root(x); //输出三对角方程组Tx=f的解
return 0;
}
//read_jz()用于矩阵输出
void read_jz(float jz[],int l,int m,int n,char ch)
{
int i;
cout<<ch<<"["<<m-l+1<<"]:"<<endl;
for(i=l;i<=m;i++)
{
cout<<n<<" ";
jz[i]=n; //系数矩阵赋值
}
cout<<endl;
}
//print_root()输出方程组的解
void print_root(float x[])
{
int i;
cout<<"由此,得三对角方程组的解为:"<<endl;;
for(i=0;i<ROW;i++)
cout<<x[i]<<" ";
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -