# POCH

Dec 18th, 2016
118
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;
6.
7. /*
9. Przygotował: Dawid Grzeszuk
10. Kierunek: Informatyka 3 semestr
11. Środowisko: Visual Studio 2015
12. Język programowania: C#
13. */
14.
15. namespace POCH
16. {
17.     public static class MathFunctions
18.     {
19.
20.         public static readonly double h = 1e-3;
21.         public static readonly double x0 = 1;
22.         public static readonly double t0 = 1;
23.         public static readonly int i = 0;
24.
25.         public static double f(double x) => Math.Exp(-0.5*x)*Math.Sin(5*Math.PI*x);
26.         public static double Xi(int i) => x0 + i * h;
27.     }
28.
29.     public static class RSP
30.     {
31.         public static double RSPFunkcja1(int i) => (-MathFunctions.f(MathFunctions.Xi(i + 2)) + 4 * MathFunctions.f(MathFunctions.Xi(i + 1)) - 3 * MathFunctions.f(MathFunctions.Xi(i))) / (2 * MathFunctions.h);
32.         public static double RSPFunkcja2(int i) => (-MathFunctions.f(MathFunctions.Xi(i + 3)) + 4 * MathFunctions.f(MathFunctions.Xi(i + 2)) - 5 * MathFunctions.f(MathFunctions.Xi(i + 1)) + 2 * MathFunctions.f(MathFunctions.Xi(i))) / (MathFunctions.h * MathFunctions.h);
33.         public static double RSPFunkcja3(int i) => (-3 * MathFunctions.f(MathFunctions.Xi(i + 4)) + 14 * MathFunctions.f(MathFunctions.Xi(i + 3)) - 24 * MathFunctions.f(MathFunctions.Xi(i + 2)) + 18 * MathFunctions.f(MathFunctions.Xi(i + 1)) - 5 * MathFunctions.f(MathFunctions.Xi(i))) / (2 * Math.Pow(MathFunctions.h, 3));
34.     }
35.
36.     public static class RST
37.     {
38.         public static double RSTFunkcja1(int i) => (3 * MathFunctions.f(MathFunctions.Xi(i)) - 4 * MathFunctions.f(MathFunctions.Xi(i - 1)) + MathFunctions.f(MathFunctions.Xi(i - 2))) / (2 * MathFunctions.h);
39.         public static double RSTFunkcja2(int i) => (2 * MathFunctions.f(MathFunctions.Xi(i)) - 5 * MathFunctions.f(MathFunctions.Xi(i - 1)) + 4 * MathFunctions.f(MathFunctions.Xi(i - 2)) - MathFunctions.f(MathFunctions.Xi(i - 3))) / (MathFunctions.h * MathFunctions.h);
40.         public static double RSTFunkcja3(int i) => (5 * MathFunctions.f(MathFunctions.Xi(i)) - 18 * MathFunctions.f(MathFunctions.Xi(i - 1)) + 24 * MathFunctions.f(MathFunctions.Xi(i - 2)) - 14 * MathFunctions.f(MathFunctions.Xi(i - 3)) + 3 * MathFunctions.f(MathFunctions.Xi(i - 4))) / (2 * Math.Pow(MathFunctions.h, 3));
41.     }
42.
43.     public static class RSC
44.     {
45.         public static double RSCFunkcja1(int i) => (MathFunctions.f(MathFunctions.Xi(i + 1)) - MathFunctions.f(MathFunctions.Xi(i - 1))) / (2 * MathFunctions.h);
46.         public static double RSCFunkcja2(int i) => (MathFunctions.f(MathFunctions.Xi(i + 1)) - 2 * MathFunctions.f(MathFunctions.Xi(i)) + MathFunctions.f(MathFunctions.Xi(i - 1))) / (MathFunctions.h * MathFunctions.h);
47.         public static double RSCFunkcja3(int i) => (MathFunctions.f(MathFunctions.Xi(i + 2)) - 2 * MathFunctions.f(MathFunctions.Xi(i + 1)) + 2 * MathFunctions.f(MathFunctions.Xi(i - 1)) - MathFunctions.f(MathFunctions.Xi(i - 2))) / (2 * Math.Pow(MathFunctions.h, 3));
48.     }
49.         class Program
50.     {
51.         static void Main(string[] args)
52.         {
53.             #region result tables
54.             List<double>[] results = new List<double>[3];
55.             #endregion
56.
57.             #region execute and show rsp
58.             results[0] = new List<double>();
59.             Console.WriteLine("RSP results: ");
60.             for(int x=0;x<3;x++)
61.             {
62.                 switch(x)
63.                 {
64.                     case 0:
66.                         Console.WriteLine(\$"function {x + 1}: {results[0][0]}");
67.                         break;
68.
69.                     case 1:
71.                         Console.WriteLine(\$"function {x + 1}: {results[0][1]}");
72.                         break;
73.
74.                     case 2:
76.                         Console.WriteLine(\$"function {x + 1}: {results[0][2]}");
77.                         break;
78.                 }
79.             }
80.             #endregion
81.
82.             #region execute and show rst
83.             results[1] = new List<double>();
84.             Console.WriteLine("\nRST results: ");
85.             for (int x = 0; x < 3; x++)
86.             {
87.                 switch(x)
88.                 {
89.                     case 0:
91.                         Console.WriteLine(\$"function {x + 1}: {results[1][0]}");
92.                         break;
93.
94.                     case 1:
96.                         Console.WriteLine(\$"function {x + 1}: {results[1][1]}");
97.                         break;
98.
99.                     case 2:
101.                         Console.WriteLine(\$"function {x + 1}: {results[1][2]}");
102.                         break;
103.                 }
104.             }
105.             #endregion
106.
107.             #region execute and show rsc
108.             results[2] = new List<double>();
109.             Console.WriteLine("\nRSC results: ");
110.             for (int x = 0; x < 3; x++)
111.             {
112.                 switch (x)
113.                 {
114.                     case 0:
116.                         Console.WriteLine(\$"function {x + 1}: {results[2][0]}");
117.                         break;
118.
119.                     case 1:
121.                         Console.WriteLine(\$"function {x + 1}: {results[2][1]}");
122.                         break;
123.
124.                     case 2: