Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication6
- {
- class Program
- {
- static public void Wyswietl2(double[,] tab)
- {
- for (int i = 0; i < tab.GetLength(0); i++)
- {
- for (int j = 0; j < tab.GetLength(1); j++)
- {
- Console.Write($"{tab[i, j]} ");
- }
- Console.WriteLine();
- }
- }
- static public void Wyswietl(double[] tab)
- {
- for (int i = 0; i < tab.Length; i++)
- {
- Console.Write($"{tab[i]} ");
- }
- Console.WriteLine();
- }
- static public void UzupelnijY(double[,] tab, double[] Yi)
- {
- for (int i = 0; i < tab.GetLength(0); i++)
- {
- tab[i, tab.GetLength(0)] = Yi[i];
- }
- }
- static public void DajA(double[,] tab, double[] Ai)
- {
- for (int i = 0; i < tab.GetLength(0); i++)
- {
- Ai[i] = tab[i, tab.GetLength(0)];
- }
- }
- }
- class Wielomian
- {
- static public double Licz(int n, double x)
- {
- if (n == 0)
- {
- return 1;
- }
- else
- {
- if (n == 1)
- {
- return x + 3;
- }
- else
- {
- return (n * 1.0 / (n * x * x - 2 * n * x + 3) * Licz(n - 2, x) + Licz(n - 1, x));
- }
- }
- }
- static public void Uzupelnij(double[,] tab, double[] x)
- {
- for (int i = 0; i < tab.GetLength(0); i++)
- {
- for (int j = 0; j < tab.GetLength(1) -1; j++)
- {
- tab[i, j] = Wielomian.Licz(j, x[i]);
- }
- }
- }
- static public double LiczP(double x, double[] Ai)
- {
- double S = 0;
- for (int i = 0; i < Ai.Length; i++)
- {
- S += Licz(i, x) * Ai[i];
- }
- return S;
- }
- }
- class Programik
- {
- static void Pierog(int n, double[,] A)
- {
- int r;
- int liczej = n + 1;
- double max, p;
- for (int k = 0; k < n; k++)
- {
- max = A[k, k];
- r = k;
- for (int i = k; i < n; i++)
- {
- if (Math.Abs(A[i,k]) > Math.Abs(max))
- {
- max = A[i, k];
- r = i;
- }
- }
- if (max == 0)
- {
- Console.WriteLine("Macierz układu osobliwa...");
- return;
- }
- else
- {
- for (int j = k; j < liczej; j++)
- {
- double pomoc = A[k, j];
- A[k, j] = A[r, j];
- A[r, j] = pomoc;
- }
- for (int j = k; j < liczej; j++)
- {
- A[k, j] = A[k, j] / max;
- }
- for (int i = 0; i < n; i++)
- {
- if(i != k)
- {
- p = A[i, k];
- for (int j = k; j < liczej; j++)
- {
- A[i, j] = A[i, j] - p * A[k, j];
- }
- }
- }
- }
- }
- }
- static void Main(string[] args)
- {
- int n = 5;
- double[] Xi = new double[n + 1];
- double[] Yi = new double[n + 1];
- double[] Ai = new double[n + 1];
- Xi[0] = 1.5;
- Xi[1] = 2.0;
- Xi[2] = 2.5;
- Xi[3] = 3.5;
- Xi[4] = 3.8;
- Xi[5] = 4.1;
- Yi[0] = 2.0;
- Yi[1] = 5.0;
- Yi[2] = -1.0;
- Yi[3] = 0.5;
- Yi[4] = 3.0;
- Yi[5] = 7.0;
- double[,] macierz = new double[n + 1, n + 2];
- Program.UzupelnijY(macierz, Yi);
- Wielomian.Uzupelnij(macierz, Xi);
- Pierog(n + 1, macierz);
- Program.Wyswietl2(macierz);
- Program.DajA(macierz, Ai);
- Program.Wyswietl(Ai);
- double x = 1;
- string pomocy;
- do
- {
- Console.WriteLine("Wpisz wartość od 1.5 do 4.1 (0 = wyjście z pętli)");
- pomocy = Console.ReadLine();
- x = Convert.ToDouble(pomocy);
- Console.WriteLine("Wartość P(x): " + Wielomian.LiczP(x, Ai));
- } while (x != 0);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement