Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cmath>
- #include<iomanip>
- using namespace std;
- double function1(double* x)
- {
- return sin(x[0] + x[1]) - 1.2 * x[0] - 0.1;
- }
- double function2(double* x)
- {
- return x[0] * x[0] + x[1] * x[1] - 1;
- }
- double function11(double* x)
- {
- return cos(x[0] + x[1]) - 1.2;
- }
- double function12(double* x)
- {
- return cos(x[0] + x[1]);
- }
- double function21(double* x)
- {
- return 2 * x[0];
- }
- double function22(double* x)
- {
- return 2 * x[1];
- }
- int ObrMatrix(double** a, double* x)
- {
- double det = function11(x) * function22(x) - function12(x) * function21(x);
- if (det == 0) return 0;
- double arr[2][2];
- arr[0][0] = function21(x);
- arr[0][1] = function22(x);
- arr[1][0] = function12(x);
- arr[1][1] = function11(x);
- a[0][0] = arr[0][0] / det;
- a[0][1] = -arr[1][0] / det;
- a[1][0] = -arr[0][1] / det;
- a[1][1] = arr[1][1] / det;
- }
- /*void FoundX(double** a, double* x)
- {
- cout << "Метод Ньютона!\n\n";
- int i = 0; // for amount of iterations
- ObrMatrix(a, x);
- double x1, x2, X1, X2, eps = 1e-6;
- cout << "|" << setw(4) << "n|" << setw(10) << "X1|" << setw(10) << "X2|" << endl;;
- cout << "|" << setw(3) << i << "|" << setw(9) << x[0] << "|" << setw(9) << x[1] << "|" << endl;
- i++;
- do
- {
- X1 = x[0]; X2 = x[1];
- x1 = a[0][0] * function1(x) + a[0][1] * function2(x), x2 = a[1][0] * function1(x) + a[1][1] * function2(x);
- x[0] -= x1;
- x[1] -= x2;
- cout << "|" << setw(3) << i << "|" << setw(9) << x[0] << "|" << setw(9) << x[1] << "|" << endl;
- i++;
- } while (fabs(x[0] - X1) > eps || fabs(x[1] - X2) > eps);
- }
- */
- void DelArr(double** a, double* x, int size);
- void main()
- {
- setlocale(NULL, "ru");
- int size = 2, counter = 0;
- double* x = new double[size];
- x[0] = 0.6; x[1] = 0.6; // начальное приближение
- double** a = new double* [size];
- for (int i = 0; i < size; i++)a[i] = new double[size];
- double X1, X2, x1, x2, eps = 1e-6;
- do
- {
- X1 = x[0]; X2 = x[1];
- x1 = sqrt(1 - x[1] * x[1]);
- x2 = asin(1.2 * x[0] + 0.1) - x[0];
- x[0] = x1;
- x[1] = x2;
- counter += 1;
- cout << counter << "\t" << x[0] << "\t" << x[1] << endl;
- } while (fabs(x[0] - X1) > eps || fabs(x[1] - X2) > eps);
- DelArr(a, x, size);
- system("pause");
- }
- void DelArr(double** a, double* x, int size)
- {
- delete[]x;
- for (int i = 0; i < size; i++)
- {
- delete[] a[i];
- }
- delete[] a;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement