Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. //МНГС
  2. #include <iostream>
  3. using namespace std;
  4. double function(double x[]){
  5. return x[0]*x[0]+x[0]*x[1]+x[1]*x[1]-2*x[0]+x[1];
  6. }
  7. int main() {
  8. double u;
  9. double a[2][2];
  10. double b[2], x1[2], e1[2],q1[2],aq[2], pr1[2], pr[2], xtest[2];
  11. double t[2];
  12. double x2=100000, min=100000, shag;
  13. double ort[1]={0};
  14. //init
  15. a[0][0]=2;a[0][1]=1;a[1][0]=1;a[1][1]=2;
  16. b[0]=-2;b[1]=1;
  17. x1[0]=0;x1[1]=0;
  18. e1[0]=1;e1[1]=0;
  19. int br;
  20. while(abs(function(x1)-x2)>1e-6){
  21. min = 100000;
  22. for (int p=0;p<2;p++){
  23. for (int i=0;i<=1;i++){
  24. xtest[i]=x1[i];
  25. if (i==p){
  26. ort[i]=1;
  27. }
  28. else ort[i]=0;
  29. }
  30. x2 = function(x1);
  31. for (int i=0;i<=1;i++){
  32. double s = b[i];
  33. for(int j=0;j<=1;j++){
  34. s+=a[i][j]*xtest[j];
  35. }
  36. q1[i]=s;
  37. }
  38. //A*ort
  39. for (int i=0;i<=1;i++){
  40. double s;
  41. s=0;
  42. for(int j=0;j<=1;j++){
  43. s+=a[i][j]*ort[j];
  44. }
  45. aq[i]=s;
  46. }
  47. double u;
  48. u = -q1[p]/aq[p];
  49. xtest[p]+=u;
  50. if (function(xtest)<min) {
  51. min = function(xtest);
  52. br = p;
  53. shag = u;
  54. }
  55. }
  56. x1[br] = x1[br] + shag;
  57. }
  58. cout<<"Point x: "<<endl;
  59. for (int i=0;i<2;i++){
  60. cout<<x1[i]<<" ";
  61. }
  62. cout<<endl;
  63. cout<<"f(x): "<<endl<<function(x1)<<endl;
  64.  
  65. system("pause");
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement