您的位置:首页 > 其它

计算方法之用追赶法求线性方程组

2013-06-11 12:57 363 查看
/*************************************
* 用追赶法求线性方程组
*
* |-             -| |-  -|   |-  -|
* | 2  -1         | | x1 |   |  3 |
* |-1   3  -2     | | x2 |   |  1 |
* |    -2   4  -2 |*| x3 | = |  0 |
* |        -2   5 | | x4 |   | -5 |
* |-             -| |-  -|   |-  -|
*
**************************************/
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

#define n 5

int main() {
float a
= { 0, 0, -1, -2, -2 };
float b
= { 0, 2, 3, 4, 5 };
float c
= { 0, -1, -2, -2, 0 };
float d
= { 0, 3, 1, 0, -5 };
float x
= { 0, 0, 0, 0, 0 };
float r
= { 0, 0, 0, 0, 0 };
float y
= { 0, 0, 0, 0, 0 };

float q;
int k;
r[1] = c[1] / b[1];
y[1] = d[1] / b[1];
for (k = 2; k < n - 1; k++) {
q = b[k] - r[k - 1] * a[k];
r[k] = c[k] / q;
y[k] = (d[k] - y[k - 1] * a[k]) / q;
}
y[n - 1] = (d[n - 1] - y[n - 2] * a[n - 1])
/ (b[n - 1] - r[n - 2] * a[n - 1]);
x[n - 1] = y[n - 1];
for (k = n - 2; k >= 1; k--)
x[k] = y[k] - r[k] * x[k + 1];
for (k = 1; k < n; k++)
printf("x[%d] = %f\n", k, x[k]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: