Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.80 KB | None | 0 0
  1. #pragma endregion
  2.         double x1, x11, x2, x12, x3, x13, fxmin, E, Ea, h1, h2, h3, a0, a1, a2, a3, a, fa1, fa2, fa3, fa, a11, a21, a31;
  3.         int k, u;
  4.     private: System::Void MyForm_Load(System::Object^  sender, System::EventArgs^  e) {
  5.     }
  6.     private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
  7.         x11 = System::Convert::ToDouble(textBox1->Text);
  8.         x12 = System::Convert::ToDouble(textBox2->Text);
  9.         x13 = System::Convert::ToDouble(textBox3->Text);
  10.         E = System::Convert::ToDouble(textBox4->Text);
  11.         k = 1;
  12.         Ea = 0.0000001;
  13.         do {
  14.             x1 = x11;
  15.             x2 = x12;
  16.             x3 = x13;
  17.             h1 = -(24*x1-2*x2+12*sqrt(5));
  18.             h2 = -(-2*x1+12*x2);
  19.             h3 = -(4*sqrt(5));
  20.             // Метод квадратичной аппроксимации для поиска a
  21.             a11 = 0;
  22.             a21 = 0.5;
  23.             a31 = 1;
  24.             a0 = 0;
  25.             a = 0;
  26.             u = 1;
  27.             do {
  28.                 a0 = a;
  29.                 a1 = a11;
  30.                 a2 = a21;
  31.                 a3 = a31;
  32.                 fa1 = 12 * (x1 + a1 * h1)*(x1 + a1 * h1) - 2 * (x1 + a1 * h1)*(x2 + a1 * h2) + 6 * (x2 + a1 * h2)*(x2 + a1 * h2) - 12 * sqrt(5)*(x1 + a1 * h1) + 4 * sqrt(5)*(x3 + a1 * h3) - 10;
  33.                 fa2 = 12 * (x1 + a2 * h1)*(x1 + a2 * h1) - 2 * (x1 + a2 * h1)*(x2 + a2 * h2) + 6 * (x2 + a2 * h2)*(x2 + a2 * h2) - 12 * sqrt(5)*(x1 + a2 * h1) + 4 * sqrt(5)*(x3 + a2 * h3) - 10;
  34.                 fa3 = 12 * (x1 + a3 * h1)*(x1 + a3 * h1) - 2 * (x1 + a3 * h1)*(x2 + a3 * h2) + 6 * (x2 + a3 * h2)*(x2 + a3 * h2) - 12 * sqrt(5)*(x1 + a3 * h1) + 4 * sqrt(5)*(x3 + a3 * h3) - 10;
  35.                 a = 0.5*((fa1*(a2 * a2 - a3 * a3) + fa2 * (a3 * a3 - a1 * a1) + fa3 * (a1 * a1 - a2 * a2)) / ((fa1*(a2 - a3) + fa2 * (a3 - a1) + fa3 * (a1 - a2))));
  36.                 fa = 12 * (x1 + a * h1)*(x1 + a * h1) - 2 * (x1 + a * h1)*(x2 + a * h2) + 6 * (x2 + a * h2)*(x2 + a * h2) - 12 * sqrt(5)*(x1 + a * h1) + 4 * sqrt(5)*(x3 + a * h3) - 10;
  37.                 if ((a > a1) && (a < a3)) {
  38.                     if ((a > a1) && (a < a2)) {
  39.                         if (fa <= fa2) {
  40.                             a11 = a1;
  41.                             a21 = a;
  42.                             a31 = a2;
  43.                         }
  44.                         else {
  45.                             a11 = a;
  46.                             a21 = a2;
  47.                             a31 = a3;
  48.                         }
  49.                     }
  50.                     if ((a > a2) && (a < a3)) {
  51.                         if (fa <= fa2) {
  52.                             a11 = a2;
  53.                             a21 = a;
  54.                             a31 = a3;
  55.                         }
  56.                         else {
  57.                             a11 = a1;
  58.                             a21 = a2;
  59.                             a31 = a;
  60.                         }
  61.                     }
  62.                 }
  63.                 else {
  64.                     textBox9->Text = Convert::ToString(404);
  65.                 }
  66.                 u = u + 1;
  67.             } while (fabs(a - a0) > Ea);
  68.             x11 = x1 + a * h1;
  69.             x12 = x2 + a * h2;
  70.             x13 = x3 + a * h3;
  71.             k = k + 1;
  72.         } while (sqrt((x11-x1)*(x11-x1)+(x12-x2)*(x12-x2)+(x13-x3)*(x13-x3))>E);
  73.         textBox5->Text = Convert::ToString(x11);
  74.         textBox7->Text = Convert::ToString(x12);
  75.         textBox8->Text = Convert::ToString(x13);
  76.         fxmin= 12 * (x11)*(x11) - 2 * (x11)*(x12) + 6 * (x12)*(x12) - 12 * sqrt(5)*(x11) + 4 * sqrt(5)*(x13) - 10;
  77.         textBox6->Text = Convert::ToString(fxmin);
  78.         textBox9->Text = Convert::ToString(k);
  79.     }
  80. };
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement