Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public List<double[]> GautiMazgus(int mazgu_kiekis, double start, double end)
- {
- var rand = new Random();
- var len = Math.Abs(start - end);
- var separation = (double)len / 12;
- List<double[]> mazgai = new List<double[]>();
- for (int x = 0; x < mazgu_kiekis; x += 1)
- {
- mazgai.Add(new double[] { x, rand.NextDouble() * 4 }); // x ir y reiksmes sudedu tuo paciu
- }
- return mazgai;
- }
- public double[] gautiKoef(List<double[]> mazgai)
- {
- double[] y = new double[mazgai.Count];
- for (int i = 0; i < mazgai.Count; i++)
- {
- y[i] = mazgai[i][1]; // priskiriami y
- }
- var T = new double[mazgai.Count, mazgai.Count];
- for (int i = 0; i < mazgai.Count; i++)
- {
- for(int j = 0; j < mazgai.Count; j++)
- {
- T[i,j] = Math.Pow(mazgai[i][0], j); // Uzpildom matrica pagal bazines funkcijas
- richTextBox1.AppendText(T[i, j] + " ");
- }
- richTextBox1.AppendText("\n");
- }
- var A = Matrix<double>.Build.DenseOfArray(T); // Spredziame tiesiniu lygciu sistema A*X = B
- var B = Vector<double>.Build.Dense(y);
- var x = A.Solve(B);
- return x.ToArray();
- }
- private double VienanariuInterpoliuota(int taskuSkaicius, double[] a, double x)
- {
- double result = a[0];
- for (int i = 1; i < taskuSkaicius; i++)
- {
- result += a[i] * Math.Pow(x, i);
- }
- return result;
- }
- private void button6_Click_1(object sender, EventArgs e)
- {
- data1.Clear();
- data2.Clear();
- ClearForm();
- int mazguSk = 4;
- var mazgai = GautiMazgus(mazguSk, -2, 2);
- var koeficientai = gautiKoef(mazgai);
- foreach(var i in koeficientai)
- richTextBox1.AppendText(i + "\n");
- richTextBox1.AppendText("\n");
- for (int i = 0; i < mazguSk; i++)
- {
- richTextBox1.AppendText(mazgai[i][0] + " " + mazgai[i][1] + "\n");
- }
- PreparareForm(-4, 4, -7, 5);
- Series XMid = chart1.Series.Add("Mazgai");
- XMid.ChartType = SeriesChartType.Point;
- XMid.MarkerStyle = MarkerStyle.Circle;
- XMid.MarkerSize = 8;
- for (int i = 0; i < mazguSk; i++)
- {
- XMid.Points.AddXY(mazgai[i][0], mazgai[i][1]);
- }
- var series = chart1.Series.Add("Laisvai pasirinkus taskus");
- series.ChartType = SeriesChartType.Line;
- series.BorderWidth = 3;
- double x = 0;
- while (x <= mazguSk-1)
- {
- series.Points.AddXY(x, VienanariuInterpoliuota(mazguSk, koeficientai, x));
- x = x + 0.01;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement