1、追赶法是针对系数矩阵为三对角阵的方程组,因此是一种特殊的方程组.此方法效率较高,不过不适用于一般的线性方程组。Gauss消去法是针对一般的线性方程组,与线性代数中的初等变换解线性方程组方法类似。
2、例程:
#include<stdio.h>#define n 4
void main()
{
int i
float a[n],b[n],c[n],d[n],u[n],l[n-1]
float x[n],y[n]
printf("请输入系数矩阵(按a[i],b[i],c[i],d[i]输入):\n")
for(i=0i<ni++)
{
scanf("%f",&a[i]) //a[n]和c[n]要少一项,使a[n-1]=c[n-1]=0,便于输入.
scanf("%f",&b[i])
scanf("%f",&c[i])
scanf("%f",&d[i])
}
u[0]=b[0]
for(i=1i<ni++)
{
l[i-1]=a[i-1]/u[i-1]
u[i]=b[i]-l[i-1]*c[i-1]
}
/* for(i=0i<n-1i++)
printf("%f\n",l[i])
for(i=0i<ni++)
printf("%f\n",u[i])*/
y[0]=d[0]
// printf("y1=%f\n",y[0])
for(i=1i<ni++)
{
y[i]=d[i]-l[i-1]*y[i-1]
// printf("y%d=%f\n",i+1,y[i])
}
x[n-1]=y[n-1]/u[n-1]
for(i=n-2i>=0i--)
x[i]=(y[i]-c[i]*x[i+1])/u[i]
for(i=0i<ni++)
printf("x%d=%f\n",i+1,x[i])
}
/* 很久以前学计算方法时写的,给你参考参考*/
#include<stdio.h>
#define n 4
void main()
{
int i
float a[n],b[n],c[n],d[n],u[n],l[n-1]
float x[n],y[n]
printf("请输入系数矩阵(按a[i],b[i],c[i],d[i]输入):\n")
for(i=0i<ni++)
{
scanf("%f",&a[i]) //a[n]和c[n]要少一项,使a[n-1]=c[n-1]=0,便于输入.
scanf("%f",&b[i])
scanf("%f",&c[i])
scanf("%f",&d[i])
}
u[0]=b[0]
for(i=1i<ni++)
{
l[i-1]=a[i-1]/u[i-1]
u[i]=b[i]-l[i-1]*c[i-1]
}
/* for(i=0i<n-1i++)
printf("%f\n",l[i])
for(i=0i<ni++)
printf("%f\n",u[i])*/
y[0]=d[0]
// printf("y1=%f\n",y[0])
for(i=1i<ni++)
{
y[i]=d[i]-l[i-1]*y[i-1]
// printf("y%d=%f\n",i+1,y[i])
}
x[n-1]=y[n-1]/u[n-1]
for(i=n-2i>=0i--)
x[i]=(y[i]-c[i]*x[i+1])/u[i]
for(i=0i<ni++)
printf("x%d=%f\n",i+1,x[i])
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)