Advertisement
Vladislav_Bezruk

grad

Oct 4th, 2021
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. struct Vector {
  7.     double x, y, z;
  8.     Vector() {};
  9.     Vector(double a, double b, double c) : x(a), y(b), z(c) {}
  10. };
  11.  
  12. double f(double x, double y, double z) { //функція u(x, y, z)
  13.     double a = pow(x * x + 2 * y - 3 * z - 0.9, 2);
  14.     double b = pow(2 * x - y * y + z - 1.7, 2);
  15.     double c = pow(2 * x + 3 * y - z * z, 2);
  16.     return (a + b + c);
  17. }
  18.  
  19. Vector df(double f(double x, double y, double z), Vector a) {
  20.     const double d = 1e-10;
  21.     Vector grad;
  22.    
  23.     grad.x = (f(a.x + d, a.y, a.z) - f(a.x, a.y, a.z)) / d; //похідна по x
  24.     grad.y = (f(a.x, a.y + d, a.z) - f(a.x, a.y, a.z)) / d; //похідна по y
  25.     grad.z = (f(a.x, a.y, a.z + d) - f(a.x, a.y, a.z)) / d; //похідна по z
  26.     return grad;
  27. }
  28.  
  29.  
  30. int main() {
  31.     Vector a(1.2, 1.3, 1.4);
  32.     Vector grad = df(f, a);
  33.    
  34.     cout << grad.x << " " << grad.y << " " << grad.z << endl; //похідні
  35.    
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement