4 int size = LineDensity.size();
5 std::vector<double> temp1(size + 8, 0.0);
6 std::vector<double> temp2(5, 0.0);
8 for (
int i = 0; i < size; ++i)
9 temp1[i + 4] = LineDensity[i];
11 for (
int i = 0; i < 4; ++i) {
12 temp1[3 - i] = temp1[5 + i];
13 temp1[size + 5 + i] = temp1[size + 3 - i];
16 for (
int i = 0; i < size; ++i) {
17 temp2[i % 5] = (7. * (temp1[i] + temp1[i + 8]) + 24. * (temp1[i + 2] + temp1[i + 6])
20 temp1[i] = temp2[(i + 1) % 5];
25 temp1[size + 5] = temp1[size + 1];
26 temp1[size + 4] = temp1[size + 2];
28 for (
int i = 0; i < size; ++i)
29 LineDensity[i] = (7. * (temp1[i + 2] + temp1[i + 6]) + 24. * (temp1[i + 3] + temp1[i + 5])
35 std::vector<double> temp(LineDensity.begin(), LineDensity.end());
36 const double N = LineDensity.size();
38 (-25. * temp[0] + 48. * temp[1] - 36. * temp[2] + 16. * temp[3] + temp[4]) / (12. * h);
40 (-3. * temp[0] - 10. * temp[1] + 18. * temp[2] - 6. * temp[3] + temp[4]) / (12. * h);
41 for (
int i = 2; i < N - 2; ++i) {
43 (temp[i - 2] - 8. * temp[i - 1] + 8. * temp[i + 1] - temp[i + 2]) / (12. * h);
45 LineDensity[N - 2] = (-temp[N - 5] + 6. * temp[N - 4] - 18. * temp[N - 3] + 10. * temp[N - 2]
48 LineDensity[N - 1] = (3. * temp[N - 5] - 16. * temp[N - 4] + 36. * temp[N - 3]
49 - 48. * temp[N - 2] + 25. * temp[N - 1])