Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <iostream>
- #include <vector>
- using namespace std;
- void obr_matr(vector<vector<double>>& a) {
- double det;
- det = a[0][0] * a[1][1] - a[0][1] * a[1][0];
- a[0][0] = a[1][1] / det;
- a[1][1] = a[0][0] / det;
- a[0][1] = -a[0][1] / det;
- a[1][0] = -a[1][0] / det;
- }
- int main() {
- setlocale(LC_ALL, "RUS");
- double x = 1.5, y = 0.5, eps = 0.0001;
- double x_new, y_new;
- int n = 0;
- do {
- x_new = x;
- y_new = y;
- x = 0.8 + sin(y + 1);
- y = 1.3 - sin(x - 1);
- n++;
- } while (abs(x_new - x) > eps || abs(y_new - y) > eps);
- cout << "\nМетод простых итераций \nx = " << x << "\ny = " << y;
- cout << "nКол-во итераций: " << n;
- x = 1.5, y = 0.5;
- vector<vector<double>> j(2, vector<double>(2));
- double f1, f2, df1dx, df1dy = 1, df2dx = 1, df2dy, F1, F2;
- int k = 0;
- do {
- x_new = x;
- y_new = y;
- f1 = sin(x - 1) - 1.3 + y;
- f2 = x - sin(y + 1) - 0.8;
- df1dx = cos(x - 1);
- df2dy = -cos(y + 1);
- j[0][0] = df1dx;
- j[0][1] = df2dx;
- j[1][0] = df1dy;
- j[1][1] = df2dy;
- obr_matr(j);
- F1 = -j[0][0] * f1 - j[0][1] * f2;
- F2 = -j[1][0] * f1 - j[1][1] * f2;
- x = x + F1;
- y = y + F2;
- cout << k << endl;
- k++;
- } while (abs(x_new - x) > eps && abs(y_new - y) > eps);
- cout << "\n\nМетод Ньютона \nx = " << x << "\ny = " << y;
- cout << "\nКол-во итераций: " << k;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment