Advertisement
Guest User

autodiff

a guest
Jan 19th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <cmath>
  3. #include <iostream>
  4.  
  5. class Deriv {
  6. public:
  7.     double val, deriv; // Wert und Ableitung
  8.  
  9.     Deriv(double v, double d) : val(v), deriv(d) {} // verschiedene Arten, eine Variable zu Initialisieren
  10.     Deriv(const Deriv& d) : val(d.val), deriv(d.deriv) {}
  11.     Deriv(double c) : val(c), deriv(1) {}
  12.  
  13.     Deriv operator= (double c) { // constant
  14.         return Deriv(c, 0.);
  15.     }
  16.  
  17.     friend Deriv operator + (const Deriv &a, const Deriv &b) { // Summe von Ableitungen
  18.         return Deriv(a.val + b.val, a.deriv + b.deriv);
  19.     }
  20.     friend Deriv operator - (const Deriv &a, const Deriv &b) { // Differenz
  21.         return (a.val - b.val, a.deriv - b.deriv;
  22.     }
  23.     friend Deriv operator - (const Deriv &a) { // Negatives
  24.         return (-a.val, -b.deriv);
  25.     }
  26.     friend Deriv operator * (const Deriv &a, const Deriv &b) { // Produktregel
  27.         return Deriv(a.val * b.val, a.val * b.deriv + a.deriv * b.val);
  28.     }
  29.     friend Deriv operator / (const Deriv &a, const Deriv &b) { // Quotientenregel
  30.         return (a.val - b.val, (a.deriv * b.val - a.val * b.deriv) / (b.val*b.val);
  31.     }
  32.  
  33.     friend Deriv sin(const Deriv &a) { // Funktionen
  34.         return (sin(a.val), cos(a.val)*a.deriv);
  35.     }
  36.  
  37.  
  38.  
  39.     friend std::ostream& operator << (std::ostream& i, Deriv& a) {
  40.         i << "(" << a.val << ", " << a.deriv << ")";
  41.         return i;
  42.     }
  43. };
  44.  
  45. int main()
  46. {
  47.     Deriv eins = 1;
  48.     Deriv x = Deriv(3);
  49.     Deriv f = eins - x * x;
  50.  
  51.     std::cout << f << std::endl;
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement