isotonicq

Metoda Thomasa C#

Nov 3rd, 2016
150
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Metody Numeryczne zadanie metody Thomasa
  3. Przygotował: Dawid Grzeszuk
  4. Kierunek: Informatyka 3 semestr
  5. Środowisko: Visual Studio 2015
  6. Język programowania: C#
  7. */
  8.  
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14.  
  15. namespace ConsoleApplication1
  16. {
  17.     class Metoda_Thomasa
  18.     {
  19.         #region deklarowanie tablic i zmiennych
  20.         private int n;
  21.         private double?[,] tablica_a;
  22.         private double[] tablica_gamma;
  23.         private double[] tablica_beta;
  24.         private double[] tablica_x;
  25.         #endregion
  26.  
  27.         #region metody i konstruktor
  28.         public Metoda_Thomasa()
  29.         {
  30.             Console.WriteLine("Podaj n:");
  31.             n = Convert.ToInt16(Console.ReadLine());
  32.  
  33.             tablica_a = new double?[n, n - 1];
  34.             tablica_gamma = new double[n];
  35.             tablica_beta = new double[n];
  36.             tablica_x = new double[n];
  37.  
  38.             Console.Clear();
  39.         }
  40.  
  41.         public void Uzupelnij_tablice()
  42.         {
  43.            for(int x=0;x<n;x++)
  44.             {
  45.                 for(int y=0;y<n-1;y++)
  46.                 {
  47.                     Pokaz_tablice();
  48.  
  49.                     if(tablica_a[x,y]==null)
  50.                     {
  51.                         if ((x == 0 && y == 0) || (x == n - 1 && y == n - 3))
  52.                         {
  53.                             tablica_a[x, y] = 0;
  54.                         }
  55.  
  56.                         else
  57.                         {
  58.                             if (y == n - 2)
  59.                                 Console.WriteLine("\nB[{0}] = ", x + 1);
  60.                             else
  61.                                 Console.WriteLine("\nA[{0},{1}] = ", x + 1, y + 1);
  62.  
  63.                             tablica_a[x, y] = Convert.ToDouble(Console.ReadLine());
  64.                         }
  65.                     }                          
  66.                     Console.WriteLine();
  67.                     Console.Clear();        
  68.                 }
  69.              }
  70.             Pokaz_tablice();
  71.             Console.WriteLine("\nNacisnij dowolny przycisk aby kontynuować");
  72.             Console.ReadKey();
  73.           }
  74.  
  75.         public void Pokaz_tablice()
  76.         {
  77.             for (int x = 0; x < n; x++)
  78.             {
  79.                 for (int y = 0; y < n - 1; y++)
  80.                 {
  81.                     if(tablica_a[x,y]!=null)
  82.                     Console.Write(tablica_a[x, y]);
  83.                     else
  84.                     Console.Write("-");
  85.  
  86.                     if (y == n - 3)
  87.                         Console.Write(" | ");
  88.                     else
  89.                         Console.Write(" ");                
  90.                 }
  91.                 Console.WriteLine();
  92.             }
  93.         }
  94.  
  95.         public void Liczenie_metody()
  96.         {
  97.             tablica_beta[0] = -tablica_a[0, 2].Value / tablica_a[0, 1].Value;
  98.             tablica_gamma[0] = tablica_a[0, 3].Value / tablica_a[0, 1].Value;
  99.  
  100.             for (int x = 1; x < n; x++)
  101.             {
  102.                 tablica_beta[x] = -tablica_a[x,2].Value / (tablica_a[x,0].Value * tablica_beta[x-1] + tablica_a[x,1].Value);
  103.                 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);
  104.             }
  105.  
  106.             tablica_x[n - 1] = tablica_gamma[n - 1];
  107.  
  108.             for (int x = 3; x >= 0; x--)
  109.             {
  110.                 tablica_x[x] = tablica_beta[x] * tablica_x[x+1] + tablica_gamma[x];
  111.             }
  112.         }
  113.  
  114.         public void Pokaz_wyniki()
  115.         {
  116.             Console.Clear();
  117.  
  118.            for(int x=0;x<n;x++)
  119.             {
  120.                 Console.WriteLine("Beta[{0}]= {1}\nGamma[{0}]= {2}\nX[{0}]= {3}\n",x+1,tablica_beta[x],tablica_gamma[x],tablica_x[x]);
  121.             }
  122.         }
  123.         #endregion
  124.     }
  125.  
  126.     #region wykonywanie instrukcji
  127.     class Program
  128.     {
  129.         static void Main(string[] args)
  130.         {
  131.             Metoda_Thomasa przyklad = new Metoda_Thomasa();
  132.  
  133.             try
  134.             {
  135.                 try
  136.                 {
  137.                     przyklad.Uzupelnij_tablice();
  138.  
  139.                 }
  140.                 catch
  141.                 {
  142.                     Console.Clear();
  143.                     Console.WriteLine("Nie podano liczby nacisnij dowolny przycisk");
  144.                     Console.ReadLine();
  145.                     przyklad.Uzupelnij_tablice();
  146.                 }
  147.  
  148.                 przyklad.Liczenie_metody();
  149.                 przyklad.Pokaz_wyniki();
  150.             }
  151.             catch (Exception ex)
  152.             {
  153.                 Console.WriteLine(ex.Message);
  154.             }
  155.             finally
  156.             {
  157.                 Console.WriteLine("Program wykonał swój kod");
  158.                 Console.ReadKey();
  159.             }
  160.         }
  161.     }
  162.     #endregion
  163. }
RAW Paste Data