Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. double f(double x, double y) {
  9.  
  10. return pow(y, 2) - 2*x*y - 6*y + 2*x*x + 12;
  11. }
  12.  
  13. double fdx(double x, double y) {
  14.  
  15. return - 2*y + 4*x;
  16. }
  17.  
  18. double fdy(double x, double y) {
  19.  
  20. return 2 * y - 2 * x - 6;
  21. }
  22.  
  23. void quadratica(double xi, double yi, int numIt) {
  24.  
  25. vector<vector<double>> H = { { 0.5, 0.5 },{ 0.5, 1 } }; //matriz hessiana inversa maxima salva vidas
  26. double xn, yn;
  27.  
  28. for (int i = 0; i < numIt; i++) {
  29.  
  30. xn = xi - H[0][0] * fdx(xi, yi) + H[0][1] * fdx(xi, yi);
  31. yn = yi - H[1][0] * fdy(xi, yi) + H[1][1] * fdy(xi, yi);
  32.  
  33. if(f(xn,yn) < f(xi,yi)) {
  34. xi = xn;
  35. yi = yn;
  36. }
  37.  
  38. cout << "x = " << xn << endl;
  39. cout << "y = " << yn << endl;
  40. cout << "f(x,y) = " << f(xn, yn) << endl;
  41.  
  42. }
  43.  
  44. }
  45.  
  46. int main()
  47. {
  48. const int OUT_PREC = 5;
  49. cout << fixed << setprecision(OUT_PREC);
  50.  
  51. quadratica(1, 1, 2);
  52.  
  53. system("pause");
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement