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

📄 chase.cpp

📁 数值计算方法中几个重要的算法用VC++实现
💻 CPP
字号:
/*--解对三对角方程组的追赶法--*/
#include<stdio.h>
#include<stdlib.h>
double *Assign(int n)
{
	return (double*)malloc(sizeof(double)*(n+1));
}
void main()
{
	int i,n;/*--未知数的个数--*/
	double *a,*b,*c,*x,*y,*f,*B;
	printf("Input dimension of Array n(n>=1):\n");
	scanf("%d",&n);
	/*--为a,b,c,x,f分配空间--*/
	a=Assign(n);
	b=Assign(n);
    c=Assign(n);
    x=Assign(n);
	y=Assign(n);
	f=Assign(n);
	B=Assign(n);
	/*--为数组a赋值--*/
	printf("Input the element of Array a[2..%d]:\n",n);
	for(i=2;i<=n;i++)
		scanf("%lf",&a[i]);
        /*--为数组b赋值--*/
	printf("Input the element of Array b[1..%d]:\n",n);
	for(i=1;i<=n;i++)
		scanf("%lf",&b[i]);
        /*--为数组c赋值--*/
	printf("Input the element of Array c[1..%d]:\n",n-1);
	for(i=1;i<=n-1;i++)
		scanf("%lf",&c[i]);
	/*--为数组f赋值--*/
	printf("Input the element of Array f[1..%d]:\n",n);
	for(i=1;i<=n;i++)
		scanf("%lf",&f[i]);
	/*--分解计算公式A=LU--*/
	B[1]=c[1]/b[1];
	for(i=2;i<=n-1;i++)
		B[i]=c[i]/(b[i]-a[i]*B[i-1]);
	/*--求解Ly=f的递推公式--*/
	y[1]=f[1]/b[1];
	for(i=2;i<=n;i++)
		y[i]=(f[i]-a[i]*y[i-1])/(b[i]-a[i]*B[i-1]);
	/*--求解Ux=y的递推公式--*/
	x[n]=y[n];
	for(i=n-1;i>=1;i--)
		x[i]=y[i]-B[i]*x[i+1];
	/*-输出x1,x2,x3.....,xn-*/
	for(i=1;i<=n;i++)
		printf("x%d=%.8lf\n",i,x[i]);
	/*--释放空间--*/
	free(a);free(b);free(c);free(x);free(y);free(f);free(B);
}

⌨️ 快捷键说明

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