Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #include <stdlib.h>
- #include <iomanip>
- using namespace std;
- #define N 2
- float f1(float x, float y);
- float f2(float x, float y);
- float f1_dx(float x, float y);
- float f2_dx(float x, float y);
- float f1_dy(float x, float y);
- float f2_dy(float x, float y);
- void matr_yakobi(float** SYSTEM);
- void Nyton_for_system(float x, float y, float eps);
- int main()
- {
- float x0, y0, E;
- cout << "Enter the X0 = "; cin >> x0;
- cout << "Enter the Y0 = "; cin >> y0;
- cout << "Enter the Epsilon = "; cin >> E;
- Nyton_for_system(x0, y0, E);
- return 0;
- }
- void matr_yakobi(float** SYSTEM)
- {
- float det, temp;
- det = SYSTEM[0][0] * SYSTEM[1][1] - SYSTEM[0][1] * SYSTEM[1][0];
- temp = SYSTEM[0][0];
- SYSTEM[0][0] = SYSTEM[1][1] / det;
- SYSTEM[1][1] = temp / det;
- temp = SYSTEM[0][1];
- SYSTEM[0][1] = -SYSTEM[1][0] / det;
- SYSTEM[1][0] = -temp / det;
- }
- void Nyton_for_system(float x, float y, float e)
- {
- int k = 1;
- float x_temp;
- float** system = new float*[N];
- for (int i = 0; i < N; i++)
- {
- system[i] = new float[N];
- }
- while (sqrt(pow(f1(x, y), 2) + pow(f2(x, y), 2)) >= e)
- {
- system[0][0] = f1_dx(x, y);
- system[0][1] = f2_dx(x, y);
- system[1][0] = f1_dy(x, y);
- system[1][1] = f2_dy(x, y);
- matr_yakobi(system);
- x_temp = x;
- x += -(system[0][0] * f1(x, y) + system[0][1] * f2(x, y));
- y += -(system[1][0] * f1(x_temp, y) + system[1][1] * f2(x_temp, y));
- k++;
- cout << "Iteration " << k << ":\tX = " << setw(12) << round(x*100)/100 << "\tY = " << setw(12) << round(y*100)/100 << endl;
- }
- cout << "Answer:\nX = " << round(x*1000)/1000 << "\nY = " << round(y*1000)/1000 << endl;
- }
- float f1(float x, float y)
- {
- return sin(2 * x - y) - 1.2 * x - 0.4;
- }
- float f2(float x, float y)
- {
- return 0.8 * pow(x, 2) + 1.5 * pow(y, 2) - 1;
- }
- float f1_dx(float x, float y)
- {
- return 2 * cos(2 * x - y) - 1.2;
- }
- float f2_dx(float x, float y)
- {
- return 1.6 * x;
- }
- float f1_dy(float x, float y)
- {
- return -cos(2 * x - y);
- }
- float f2_dy(float x, float y)
- {
- return 3 * y;
- }
Add Comment
Please, Sign In to add comment