- •Определение порядков малости
- •Правая формула численного дифференцирования
- •Центральная формула численного дифференцирования
- •Формулы численного интегрирования методом прямоугольников
- •Формулы численного интегрирования методом трапеций
- •Программный способ нахождения порядков малости бесконечно малых величин
- •Численный анализ бесконечно малых величин
- •Численный анализ бесконечно большой величины
- •Дробные производные
- •Вычисление дробных производных
- •Вычисление дробных производных для дробной степени
- •Анализ бесконечно малых функций нескольких переменных
- •Вычисления для ортогонального вектора
- •Вычисление графика порядков малости
- •Программный анализ бесконечно малых
- •Тест анализатора бесконечно малых
- •Программный анализ алгоритма пузырьковой сортировки
- •Тест анализатора пузырьковой сортировки
- •Программный анализ БМФ многих переменных
- •Тест анализатора БМФ многих переменных
FТест анализатора БМФ многих переменных
1using static System.Math;
2using NUnit.Framework;
3
4namespace MathUtilities.Tests
5{
6
7
8
9
[TestFixture]
[TestOf(typeof(MultivariateAnalyzer))] public class MultivariateAnalyzerTest
{
10private const int V = 6;
11private static Vector vec = new Vector(1 / Sqrt(10), 3 / Sqrt(10));
12
13
14
15
16
17
18
19
20
21
22
[Test]
public void Test()
{
var ma = new MultivariateAnalyzer( Function,
new Vector(1, 1), vec
);
var alpha1 = ma.GetAsymptote().Alpha;
23
24
25
26
27
28
29
ma = new MultivariateAnalyzer( Function,
new Vector(1, 1), vec.GetOrth()
);
var alpha2 = ma.GetAsymptote().Alpha;
30 |
Assert.IsTrue(alpha2 > alpha1); |
31 |
} |
32 |
|
33 |
private double Function(Vector vector) => |
34 |
Pow(vector.Get(0), 2) - V * Sqrt(vector.Get(0) * vector.Get(1)); |
35 |
} |
36 |
|
37[TestFixture]
38[TestOf(typeof(Vector))]
39public class VectorTest
40{
41[Test]
42[TestCase(new double[]{7.9, 9.1}, 1, 9.1)]
43public void TestGet(double[] arr, int index, double expected)
44{
45 |
var v = new Vector(arr); |
34
46 |
var got = v.Get(index); |
47 |
Assert.AreEqual(got, expected); |
48 |
} |
49
50[Test]
51[TestCase(new double[]{7, 2, 1, 9}, 4)]
52public void TestLength(double[] arr, int expected)
53{
54 |
var v = new Vector(arr); |
55 |
var got = v.Length; |
56 |
Assert.AreEqual(expected, got); |
57 |
} |
58
59[Test]
60[TestCase(new double[]{1, 1}, new double[]{1, -1})]
61[TestCase(new double[]{5, 10}, new double[]{10, -5})]
62public void TestOrth(double[] arr, double[] expected)
63{
64 |
var v = new Vector(arr); |
65 |
var got = v.GetOrth(); |
66 |
for (int i = 0; i < 2; i++) |
67 |
Assert.AreEqual(expected[i], got.Get(i)); |
68 |
} |
69 |
|
70
71
72
73
74
75
76
77
78
79
80
[Test]
[TestCase(new double[]{1, 1})] [TestCase(new double[]{5, 10})] public void AltTestOrth(double[] arr)
{
var v = new Vector(arr); var orth = v.GetOrth(); var got = v * orth; Assert.AreEqual(0, got);
}
81[Test]
82[TestCase(new double[]{1, 2}, new double[]{5, 7}, new double[]{6, 9})]
83public void TestSum(double[] leftArray, double[] rightArray, double[]
|
,! expected) |
84 |
{ |
85 |
var left = new Vector(leftArray); |
86 |
var right = new Vector(rightArray); |
87 |
var got = left + right; |
88 |
for (int i = 0; i < got.Length; i++) |
89 |
Assert.AreEqual(expected[i], got.Get(i)); |
90 |
} |
91 |
|
35
92[Test]
93[TestCase(new double[]{1, 2}, new double[]{1, 2, 3})]
94public void TestSumException(double[] leftArray, double[] rightArray)
95{
96 |
var left = new Vector(leftArray); |
97 |
var right = new Vector(rightArray); |
98 |
|
99 |
Assert.Throws<ApplicationException>(() => { var a = left + right; }); |
100 |
} |
101
102[Test]
103[TestCase(new double[]{5, 7}, new double[]{4, 5}, new double[]{1, 2})]
104public void TestMinus(double[] leftArray, double[] rightArray, double[] ,! expected)
105{
106 |
var left = new Vector(leftArray); |
107 |
var right = new Vector(rightArray); |
108 |
var got = left - right; |
109 |
for (int i = 0; i < got.Length; i++) |
110 |
Assert.AreEqual(expected[i], got.Get(i)); |
111 |
} |
112
113[Test]
114[TestCase(new double[]{1, 2}, new double[]{1, 2, 3})]
115public void TestMinusException(double[] leftArray, double[] rightArray)
116{
117 |
var left = new Vector(leftArray); |
118 |
var right = new Vector(rightArray); |
119 |
|
120 |
Assert.Throws<ApplicationException>(() => { var a = left - right; }); |
121 |
} |
122
123[Test]
124[TestCase(new double[]{1, 2}, new double[]{5, 7}, 19)]
125public void TestMultiplication(double[] leftArray, double[] rightArray, ,! double expected)
126{
127 |
var left = new Vector(leftArray); |
128 |
var right = new Vector(rightArray); |
129 |
var got = left * right; |
130 |
Assert.AreEqual(expected, got); |
131 |
} |
132
133[Test]
134[TestCase(new double[]{1, 2}, new double[]{1, 2, 3})]
135public void TestMultiplicationException(double[] leftArray, double[] ,! rightArray)
36
136
137
138
139
140
141
142
{
var left = new Vector(leftArray); var right = new Vector(rightArray);
Assert.Throws<ApplicationException>(() => { var a = left * right; });
}
143[Test]
144[TestCase(2, new double[]{4, 5}, new double[]{8, 10})]
145public void TestMultiplicationWithNumber(double number, double[] arr, ,! double[] expected)
146{
147 |
var v = new Vector(arr); |
148 |
var got = number * v; |
149 |
for (int i = 0; i < got.Length; i++) |
150 |
Assert.AreEqual(expected[i], got.Get(i)); |
151 |
} |
152
153[Test]
154[TestCase(new double[]{4, 2}, new double[]{46, 50})]
155public void TestMult(double[] arr, double[] expected)
156{
157
158
159
160
161
162
163
164
165
var v = new Vector(arr);
var arr1 = new double[]{7, 12}; var arr2 = new double[]{9, 1};
var matrixArray = new double[2][]; matrixArray[0] = arr1; matrixArray[1] = arr2;
var m = new Matrix(matrixArray); var got = v * m;
166 |
for (int i = 0; i < 2; i++) |
167 |
Assert.AreEqual(expected[i], got.Get(i)); |
168}
169}
170
171
172
173
174
175
176
[TestFixture]
[TestOf(typeof(Matrix))] public class MatrixTest
{
public Matrix matrix;
177
178
179
180
181
[SetUp]
public void Init()
{
var arr = new double[2][]; arr[0] = new double[]{1, 2};
37
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
arr[1] = new double[]{3, 4}; matrix = new Matrix(arr);
}
[Test]
public void TestGet()
{
Assert.AreEqual(1, matrix.Get(0,0)); Assert.AreEqual(2, matrix.Get(0,1)); Assert.AreEqual(3, matrix.Get(1,0)); Assert.AreEqual(4, matrix.Get(1,1));
}
[Test]
public void TestLength()
{
Assert.AreEqual(2, matrix.Length);
}
[Test]
public void TestReversed()
{
var arr = new double[2][]; arr[0] = new double[]{-2, 1};
arr[1] = new double[]{1.5, -0.5}; var expected = new Matrix(arr); var got = matrix.GetReversed();
210 |
for (int i = |
0; i < |
2; i++) |
211 |
for (var |
j = 0; |
j < 2; j++) |
212 |
Assert.AreEqual(expected.Get(i, j), got.Get(i, j)); |
||
213 |
} |
|
|
214 |
|
|
|
215[Test]
216[TestCase(new double[]{4, 2}, new double[]{8, 20})]
217public void TestMultVecToMatrix(double[] vecArr, double[] expected)
218{
219 |
var v = |
new Vector(vecArr); |
220 |
var got |
= matrix * v; |
221 |
for (int i = 0; i < vecArr.Length; i++) |
|
222 |
Assert.AreEqual(expected[i], got.Get(i)); |
223}
224}
225
226
227
228
[TestFixture]
[TestOf(typeof(Math))] public class MathTest
38
229{
230[Test]
231public void TestRotationMatrix()
232{
233 |
var arr = new double[2][]; |
||
234 |
arr[0] = |
new |
double[]{0, 1}; |
235 |
arr[1] = |
new |
double[]{-1, 0}; |
236 |
var expected = new Matrix(arr); |
||
237 |
|
|
|
238
239
240
// PI / 2 = 90\deg
var got = Math.GetRotationMatrix(PI / 2);
241 |
for (int i = |
0; i < |
2; i++) |
242 |
for (var |
j = 0; |
j < 2; j++) |
243 |
Assert.AreEqual(expected.Get(i, j), got.Get(i, j), 1E-4); |
244}
245}
246}
39