-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHorda.cs
100 lines (84 loc) · 2.38 KB
/
Horda.cs
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace methods
{
public class Horda
{
Equalation eq;
private bool faPr = false;
public Horda()
{
eq = new Equalation();
StardHord();
}
private bool Mult(double val)
{
double f = eq.Calculate(val);
double p = eq.SecondPr(val);
if (f*p < 0)
{
return false;
}
else
{
return true;
}
}
public void StardHord()
{
double fval = 0;
int counter = 0;
foreach (double[] limit in eq.limits)
{
double xi = 0;
double xik = 0;
faPr = Mult(limit[0]);
if(faPr)
{
xik = limit[1];
xi = xik;
fval = eq.Calculate(limit[0]);
}
else
{
xik = limit[0];
xi = xik;
fval = eq.Calculate(limit[1]);
}
do
{
xi = xik;
if (faPr)
{
xik = More(limit[0], xi, fval);
}
else
{
xik = Less(limit[1], xi, fval);
}
counter++;
} while (Math.Abs(xi - xik) >= eq.e);
eq.xVal.Add(xik);
eq.xVal.Add(counter);
}
Print.print_x(eq.xVal, "Hord");
}
private bool MoreThenZero(double value)
{
return value > 0;
}
public double Less(double a, double xk, double fa)
{
double value = a - (fa * (xk - a)) / (eq.Calculate(xk) - fa);
return value;
}
public double More(double b, double xk, double fb)
{
double value = xk - (eq.Calculate(xk) * (b - xk)) / (fb - eq.Calculate(xk));
return value;
}
}
}