Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Metody Numeryczne zadanie metody Thomasa
- Przygotował: Dawid Grzeszuk
- Kierunek: Informatyka 3 semestr
- Środowisko: Visual Studio 2015
- Język programowania: C#
- */
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication1
- {
- class Metoda_Thomasa
- {
- #region deklarowanie tablic i zmiennych
- private int n;
- private double?[,] tablica_a;
- private double[] tablica_gamma;
- private double[] tablica_beta;
- private double[] tablica_x;
- #endregion
- #region metody i konstruktor
- public Metoda_Thomasa()
- {
- Console.WriteLine("Podaj n:");
- n = Convert.ToInt16(Console.ReadLine());
- tablica_a = new double?[n, n - 1];
- tablica_gamma = new double[n];
- tablica_beta = new double[n];
- tablica_x = new double[n];
- Console.Clear();
- }
- public void Uzupelnij_tablice()
- {
- for(int x=0;x<n;x++)
- {
- for(int y=0;y<n-1;y++)
- {
- Pokaz_tablice();
- if(tablica_a[x,y]==null)
- {
- if ((x == 0 && y == 0) || (x == n - 1 && y == n - 3))
- {
- tablica_a[x, y] = 0;
- }
- else
- {
- if (y == n - 2)
- Console.WriteLine("\nB[{0}] = ", x + 1);
- else
- Console.WriteLine("\nA[{0},{1}] = ", x + 1, y + 1);
- tablica_a[x, y] = Convert.ToDouble(Console.ReadLine());
- }
- }
- Console.WriteLine();
- Console.Clear();
- }
- }
- Pokaz_tablice();
- Console.WriteLine("\nNacisnij dowolny przycisk aby kontynuować");
- Console.ReadKey();
- }
- public void Pokaz_tablice()
- {
- for (int x = 0; x < n; x++)
- {
- for (int y = 0; y < n - 1; y++)
- {
- if(tablica_a[x,y]!=null)
- Console.Write(tablica_a[x, y]);
- else
- Console.Write("-");
- if (y == n - 3)
- Console.Write(" | ");
- else
- Console.Write(" ");
- }
- Console.WriteLine();
- }
- }
- public void Liczenie_metody()
- {
- tablica_beta[0] = -tablica_a[0, 2].Value / tablica_a[0, 1].Value;
- tablica_gamma[0] = tablica_a[0, 3].Value / tablica_a[0, 1].Value;
- for (int x = 1; x < n; x++)
- {
- tablica_beta[x] = -tablica_a[x,2].Value / (tablica_a[x,0].Value * tablica_beta[x-1] + tablica_a[x,1].Value);
- tablica_gamma[x] =(tablica_a[x,3].Value - tablica_a[x,0].Value * tablica_gamma[x-1]) /(tablica_a[x,0].Value * tablica_beta[x-1] + tablica_a[x,1].Value);
- }
- tablica_x[n - 1] = tablica_gamma[n - 1];
- for (int x = 3; x >= 0; x--)
- {
- tablica_x[x] = tablica_beta[x] * tablica_x[x+1] + tablica_gamma[x];
- }
- }
- public void Pokaz_wyniki()
- {
- Console.Clear();
- for(int x=0;x<n;x++)
- {
- Console.WriteLine("Beta[{0}]= {1}\nGamma[{0}]= {2}\nX[{0}]= {3}\n",x+1,tablica_beta[x],tablica_gamma[x],tablica_x[x]);
- }
- }
- #endregion
- }
- #region wykonywanie instrukcji
- class Program
- {
- static void Main(string[] args)
- {
- Metoda_Thomasa przyklad = new Metoda_Thomasa();
- try
- {
- try
- {
- przyklad.Uzupelnij_tablice();
- }
- catch
- {
- Console.Clear();
- Console.WriteLine("Nie podano liczby nacisnij dowolny przycisk");
- Console.ReadLine();
- przyklad.Uzupelnij_tablice();
- }
- przyklad.Liczenie_metody();
- przyklad.Pokaz_wyniki();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- finally
- {
- Console.WriteLine("Program wykonał swój kod");
- Console.ReadKey();
- }
- }
- }
- #endregion
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement