isotonicq

metody c#

Oct 13th, 2016
107
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. /*
  8. Metody Numeryczne zadanie nr 6
  9. Przygotował: Dawid Grzeszuk
  10. Kierunek: Informatyka 3 semestr
  11. Środowisko: Visual Studio 2015
  12. Język programowania: C#
  13. */
  14.  
  15. namespace D_RN
  16. {
  17.     class MetodaSiecznych
  18.     {
  19.         private double x;
  20.         private double x0;
  21.         private double x1;
  22.         private double eps;
  23.         private int liczba_krokow;
  24.  
  25.         public MetodaSiecznych(double x0,double x1,double eps)
  26.         {
  27.             this.x = 0;
  28.             this.x0 = x0;
  29.             this.x1 = x1;
  30.             this.eps = eps;
  31.             this.liczba_krokow = 0;
  32.         }
  33.  
  34.         private double liczenie_funkcji(double x)
  35.         {
  36.             return (x - 2 * Math.Exp(-x));
  37.         }
  38.  
  39.         public double liczenie_siecznej()
  40.         {
  41.             do
  42.             {
  43.                 //wykonywanie funkcji
  44.                 x = x1 - liczenie_funkcji(x1) * (x1 - x0) / (liczenie_funkcji(x1) - liczenie_funkcji(x0));
  45.                 //zamiana wartosci
  46.                 x0 = x1;
  47.                 x1 = x;
  48.                 //zwiekszanie liczby krokow
  49.                 liczba_krokow++;
  50.  
  51.             } while (!(Math.Abs(liczenie_funkcji(x)) < eps));
  52.  
  53.             return x;
  54.         }
  55.  
  56.         public double zwroc_liczbe_krokow()
  57.         {
  58.             return liczba_krokow;
  59.         }
  60.  
  61.     }
  62.  
  63.     class Program
  64.     {
  65.         static void Main(string[] args)
  66.         {
  67.             double x0 = -1;
  68.             double x1 = -1;
  69.             double eps;
  70.  
  71.             while(!(x0>=0 && x0<=1))
  72.             {
  73.                 Console.WriteLine("podaj x0 (0<=x0<=1): ");
  74.                 x0 = Convert.ToDouble(Console.ReadLine());
  75.                 Console.Clear();
  76.             }
  77.  
  78.             while (!(x1 >= 0 && x1 <= 1))
  79.             {
  80.                 Console.WriteLine("podaj x1 (0<=x1<=1): ");
  81.                 x1 = Convert.ToDouble(Console.ReadLine());
  82.                 Console.Clear();
  83.             }
  84.  
  85.             Console.WriteLine("podaj epsilon: ");
  86.             eps = Convert.ToDouble(Console.ReadLine());
  87.             Console.Clear();
  88.  
  89.             MetodaSiecznych obiekt = new MetodaSiecznych(x0, x1, eps);
  90.            
  91.             Console.WriteLine("wynik to: {0}",obiekt.liczenie_siecznej());
  92.             Console.WriteLine("wynik wyliczono w {0} krokach",obiekt.zwroc_liczbe_krokow());
  93.             Console.WriteLine("dokladnosc wyniku wynosi: {0} \n", eps);
  94.         }
  95.     }
  96. }
RAW Paste Data