Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- float a = 2;
- float b = -1.3f;
- float c = 0.04f;
- float d = 0.12f;
- float eps = 10e-4;
- float x = 0;
- float y = 0;
- float Alpha = 1.0f;
- float f(float InX, float InY)
- {
- return a * x + b * y + exp(c * pow(x, 2) + d * pow(y, 2));
- }
- float DerivativeX(float InX, float InY)
- {
- return 2 * c * x * exp(c * pow(x, 2) + d * pow(y, 2)) + a;
- }
- float DerivativeY(float InX, float InY)
- {
- return 2 * d * y * exp(c * pow(x, 2) + d * pow(y, 2)) + b;
- }
- int main()
- {
- float NextX = NULL;
- float NextY = NULL;
- cout << "x" << "\t" << "y" << "\t" << "f" << "\t" << "f'x" << "\t" << "f'y" << "\t" << "Alpha" << endl;
- while (sqrt(pow(DerivativeX(x, y), 2) + pow(DerivativeY(x, y), 2)) >= eps)
- {
- cout << x << " " << y << " " << f(x, y) << " " << DerivativeX(x, y) << " " << DerivativeY(x, y) << " " << Alpha << endl;
- NextX = x - Alpha * DerivativeX(x, y);
- NextY = y - Alpha * DerivativeY(x, y);
- if (f(x, y) > f(x, y))
- {
- Alpha /= 2;
- }
- else
- {
- x = NextX;
- y = NextY;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement