Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.51 KB | None | 0 0
  1. private void button3_Click(object sender, EventArgs e)
  2.     {
  3.       double eps = 1e-10;
  4.       int itmax = 100;
  5.       //double [,]deltax ;
  6.  
  7.       double[,] x = { { 1 }, { 1 }, { 1 }, { 1  } };
  8.       Matrix<double> X = Matrix<double>.Build.DenseOfArray(x);
  9.      
  10.       // Matrix<double> delt = Matrix<double>.Build.DenseOfArray(x);
  11.       for (int i = 1; i <= itmax; i++)
  12.       {
  13.         double[,] delta;
  14.         Matrix<double> _df = Matrix<double>.Build.DenseOfArray(_DF(X.ToArray()));
  15.        
  16.         Matrix<double> f = Matrix<double>.Build.DenseOfArray(F(X.ToArray()));
  17.         delta = Accord.Math.Matrix.Divide(_df.ToArray(), f.ToArray());
  18.         Matrix<double> deltax = Matrix<double>.Build.DenseOfArray(delta);
  19.         deltax =_df.Inverse() * f;
  20.  
  21.  
  22.          X = X + deltax;
  23.         double tikslumas = deltax.L2Norm()/(X.L2Norm()+deltax.L2Norm());
  24.         richTextBox1.AppendText(string.Format("\n iteracija{0}  tikslumas {1}",i,tikslumas));
  25.         if (tikslumas < eps)
  26.         {
  27.           richTextBox1.AppendText(string.Format("\n sprendinys x = {0}", X.ToString()));
  28.           richTextBox1.AppendText(string.Format("\n funkcijos reiksme f = {0}", f.ToString()));
  29.           return;
  30.         }
  31.         else if (i == itmax)
  32.         {
  33.           richTextBox1.AppendText(string.Format("\n ****tikslumas nepasiektas. Paskutinis artinys x = {0}", X.ToString()));
  34.           richTextBox1.AppendText(string.Format("\n funkcijos reiksme f = {0}", f.ToString()));
  35.         }
  36.       }
  37.      
  38.     }
  39.  
  40.     private double[,] F(double[,] X)
  41.     {
  42.       double[,] miau = { { 2*X[0,0] + 4* X[1,0] + 2*X[2,0] + 2 * X[3,0] - 20 },
  43.                          { X[1,0]*X[1,0] -X[3,0]*X[3,0] + 32 },
  44.                         { -2*X[0,0]*X[0,0] + 5* X[3,0]*X[3,0]*X[3,0] + 2*X[1,0]*X[3,0] - 1032 },
  45.                         { 4*X[0,0] - 12* X[1,0] + 4*X[2,0] - 3 * X[3,0] + 42 }
  46.                        };
  47.       return miau;
  48.     }
  49.     private double[,] DF(double[] X)
  50.     {
  51.       double[,] miau = { { 2 , 4  , 2 , 2  },
  52.                         { 0 ,2*X[1], 0, -2*X[3] },
  53.                         { -4*X[0] ,2*X[3], 0, 2*X[1]+3*X[3]},
  54.                         { 4,-12, 4 ,-3},
  55.                       };
  56.       return miau;
  57.     }
  58.     private double[,] _DF(double[,] X)
  59.     {
  60.       double[,] miau = { { -2 , -4  , -2 , -2  },
  61.                         { 0 ,-2*X[1,0], 0, 2*X[3,0] },
  62.                         { 4*X[0,0] ,-2*X[3,0], 0, -(2*X[1,0]+3*X[3,0])},
  63.                         { -4,12, -4 ,3},
  64.                       };
  65.       return miau;
  66.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement