-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjacobicIteration.c
More file actions
55 lines (43 loc) · 1.15 KB
/
jacobicIteration.c
File metadata and controls
55 lines (43 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//page 82
double f(double x);
double jacobic_iteration(double x, double y, double z);
int main(int argc, char *argv[]) {
jacobic_iteration(1, 2, 2);
getch();
return 0;
}
//equation for x_i
double equation_one(double y, double z){
return (7 + y - z)/4.0;
}
double equation_two(double x, double z){
return (21 + 4*x + z)/8.0;
}
double equation_three(double x, double y){
return (15 + 2*x - y)/5.0;
}
double jacobic_iteration(double x, double y, double z){
double x_i = 0;
double y_i = 0;
double z_i = 0;
int iteration = 0;
do {
x_i = equation_one(y,z);
y_i = equation_two(x,z);
z_i = equation_three(x,y);
printf("Iteration %d: x = %.8f, y = %.8f, z = %.8f \n", ++iteration, x_i, y_i, z_i);
//if(4*x_i - y_i + z_i == 7 && 4*x_i - 8*y_i + z_i == -21 && -2*x_i + y_i +5*z_i == 15 )
if(x_i == equation_one(y_i, z_i) && y_i == equation_two(x_i, z_i) && z_i == equation_three(x_i, y_i))
break;
else
x = x_i;
y = y_i;
z = z_i;
}
while(1==1);
printf("\nThe solution is: x = %.8f, y = %.8f, z = %.8f", x_i, y_i, z_i);
printf("\nNumber of iterations: %d",iteration);
}