Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include "quanc8.c"
- #include "spline.c"
- const int N = 7;
- double resultArray[N];
- double resultArray2[N-1];
- double pointArray[N];
- const double h = 0.2;
- const double A = 1;
- const double lowX = 1.5;
- const double topX = 2.7;
- double EA = 0;
- double ER = 0;
- double RESULT = 0;
- double ERR = 0;
- int NOFUN = 0;
- double POSNR = 0;
- int FLAG = 0;
- double FUN(double t)
- {
- return sin(t) * sin(t);
- }
- double lagrange8(double resultArray[N], double pointArray[N], double x)
- {
- double res = 0;
- for (int i = 0; i < N-1; i++)
- {
- double chislitel = 1;
- double znamenatel = 1;
- for (int j = 0; j < N-1; j++)
- {
- if (j != i)
- {
- chislitel *= x - pointArray[j];
- znamenatel *= pointArray[i] - pointArray[j];
- }
- }
- res += (resultArray[i] * chislitel) / znamenatel;
- }
- return res;
- }
- int main()
- {
- int j = 0;
- for (double i = lowX; i <= topX; i += h)
- {
- quanc8(*FUN, A, i, EA, ER, &RESULT, &ERR, &NOFUN, &POSNR, &FLAG);
- pointArray[j] = i;
- resultArray[j++] = RESULT;
- std::cout << std::setw(4) << i << " " << RESULT << '\n';
- }
- std::cout << '\n';
- int last = 0;
- const double x0 = 1.6;
- for (int k = 0; k <= 5; k++)
- {
- quanc8(*FUN, A, x0 + h * k, EA, ER, &RESULT, &ERR, &NOFUN, &POSNR, &FLAG);
- resultArray2[k] = RESULT;
- std::cout << x0 + h * k << " : " << RESULT << '\n';
- }
- std::cout << '\n';
- std::cout << " Lagrange" << " Spline" << '\n';
- double b[N];
- double c[N];
- double d[N];
- spline(N, 0, 0, resultArray[0], resultArray[N - 1], pointArray, resultArray, b, c, d, &FLAG);
- for (int k = 0; k <= 5; k++)
- {
- quanc8(*FUN, A, x0 + h * k, EA, ER, &RESULT, &ERR, &NOFUN, &POSNR, &FLAG);
- resultArray2[k] = RESULT;
- }
- for (int k = 0; k <= 5; k++)
- {
- double lagrangeResult = lagrange8(resultArray, pointArray, x0 + h * k);
- double splineResult = seval(N, x0 + h * k, pointArray, resultArray, b, c, d, &last);
- std::cout << "x = " << x0 + h * k << ": " << std::setw(8) << lagrangeResult << " " << std::setw(8) <<splineResult << " | EPS_Lagrange = " << std::setw(8) << resultArray2[k] - lagrangeResult << " EPS_Spline = " << resultArray2[k] - splineResult << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement