Advertisement
Guest User

Untitled

a guest
Dec 10th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.09 KB | None | 0 0
  1.         public List<double[]> GautiMazgus(int mazgu_kiekis, double start, double end)
  2.         {
  3.             var rand = new Random();
  4.             var len = Math.Abs(start - end);
  5.             var separation = (double)len / 12;
  6.  
  7.             List<double[]> mazgai = new List<double[]>();
  8.  
  9.             for (int x = 0; x < mazgu_kiekis; x += 1)
  10.             {
  11.                 mazgai.Add(new double[] { x, rand.NextDouble() * 4 }); // x ir y reiksmes sudedu tuo paciu
  12.             }
  13.             return mazgai;
  14.         }
  15.  
  16.         public double[] gautiKoef(List<double[]> mazgai)
  17.         {
  18.             double[] y = new double[mazgai.Count];
  19.  
  20.             for (int i = 0; i < mazgai.Count; i++)
  21.             {
  22.                 y[i] = mazgai[i][1]; // priskiriami y
  23.             }
  24.  
  25.             var T = new double[mazgai.Count, mazgai.Count];
  26.  
  27.             for (int i = 0; i < mazgai.Count; i++)
  28.             {
  29.                 for(int j = 0; j < mazgai.Count; j++)
  30.                 {
  31.                     T[i,j] = Math.Pow(mazgai[i][0], j); // Uzpildom matrica pagal bazines funkcijas
  32.                     richTextBox1.AppendText(T[i, j] + " ");
  33.                 }
  34.                 richTextBox1.AppendText("\n");
  35.             }
  36.  
  37.             var A = Matrix<double>.Build.DenseOfArray(T); // Spredziame tiesiniu lygciu sistema A*X = B
  38.             var B = Vector<double>.Build.Dense(y);
  39.             var x = A.Solve(B);
  40.  
  41.             return x.ToArray();
  42.         }
  43.  
  44.         private double VienanariuInterpoliuota(int taskuSkaicius, double[] a, double x)
  45.         {
  46.             double result = a[0];
  47.             for (int i = 1; i < taskuSkaicius; i++)
  48.             {
  49.                 result += a[i] * Math.Pow(x, i);
  50.             }
  51.             return result;
  52.         }
  53.  
  54.         private void button6_Click_1(object sender, EventArgs e)
  55.         {
  56.             data1.Clear();
  57.             data2.Clear();
  58.             ClearForm();
  59.             int mazguSk = 4;
  60.             var mazgai = GautiMazgus(mazguSk, -2, 2);
  61.             var koeficientai = gautiKoef(mazgai);
  62.  
  63.             foreach(var i in koeficientai)
  64.                 richTextBox1.AppendText(i + "\n");
  65.             richTextBox1.AppendText("\n");
  66.  
  67.             for (int i = 0; i < mazguSk; i++)
  68.             {
  69.                 richTextBox1.AppendText(mazgai[i][0] + " " + mazgai[i][1] + "\n");
  70.             }
  71.             PreparareForm(-4, 4, -7, 5);
  72.  
  73.             Series XMid = chart1.Series.Add("Mazgai");
  74.             XMid.ChartType = SeriesChartType.Point;
  75.             XMid.MarkerStyle = MarkerStyle.Circle;
  76.             XMid.MarkerSize = 8;
  77.  
  78.             for (int i = 0; i < mazguSk; i++)
  79.             {
  80.                 XMid.Points.AddXY(mazgai[i][0], mazgai[i][1]);
  81.             }
  82.  
  83.             var series = chart1.Series.Add("Laisvai pasirinkus taskus");
  84.             series.ChartType = SeriesChartType.Line;
  85.             series.BorderWidth = 3;
  86.  
  87.             double x = 0;
  88.             while (x <= mazguSk-1)
  89.             {
  90.                 series.Points.AddXY(x, VienanariuInterpoliuota(mazguSk, koeficientai, x));
  91.                 x = x + 0.01;
  92.             }
  93.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement