Xsufu

Чебышев и Гаусс C#

Dec 9th, 2020 (edited)
945
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.70 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Integration2._1 {
  4.     class Program {
  5.  
  6.         static float f(float x) {
  7.             return 1 / MathF.Pow(MathF.Cosh(x), 2);
  8.            // return MathF.Sqrt(x + 1);
  9.         }
  10.  
  11.         static float t(float x, float min, float max) {
  12.             return (max + min) / 2 + (max - min) / 2 *x ;
  13.         }
  14.  
  15.         static void Cheb(int m, float min, float max) {
  16.             float[] x3 = { -0.707107f, 0, 0.707107f };
  17.             float[] x2 = { -0.577350f, 0.577350f };
  18.             float[] x5 = { -0.11547f, -0.11547f, 0, 0.11547f, 0.11547f, };
  19.             float[] x10 = { -0.0577350f, -0.0577350f, -0.0577350f, -0.0577350f, -0.0577350f, 0.0577350f, 0.0577350f, 0.0577350f, 0.0577350f, 0.577350f };
  20.             float integral = 0;
  21.             int count = 0;
  22.             if (m == 2) {
  23.                 for (int j = 0; j < m; j++) {
  24.                     integral += f(t(x2[j], min, max));
  25.                 }
  26.             }
  27.  
  28.             else if(m == 3) {
  29.                 for (int j = 0; j < m; j++) {
  30.                     integral += f(t(x3[j], min, max));
  31.                 }
  32.             }
  33.  
  34.             else if(m == 5) {
  35.                 for (int j = 0; j < m; j++) {
  36.                     integral += f(t(x5[j], min, max));
  37.                 }
  38.             }
  39.  
  40.             else if (m == 10) {
  41.                 for (int j = 0; j < m; j++) {
  42.                     integral += f(t(x10[j], min, max));
  43.                 }
  44.             }
  45.  
  46.             else if (m == 100) {
  47.                 float strange = 0.577350f / 100;
  48.                 for (int j = 0; j < m; j++) {
  49.                     if (j <= 49)
  50.                         strange *= -1;
  51.                     integral += f(t(strange, min, max));
  52.                 }
  53.             }
  54.             integral *= (max-min) / m;
  55.             Console.WriteLine(integral);
  56.         }
  57.  
  58.         static void Gauss(int m, float min, float max) {
  59.             float[] x2 = { -0.577350f, 0.577350f };
  60.             float[] x3 = { -0.77459667f, 0, 0.77459667f };
  61.             float[] Aj = { 5 / 9f, 8 / 9f, 5 / 9f };
  62.             float integral = 0;
  63.             if (m == 2) {
  64.                 for (int j = 0; j < m; j++) {
  65.                     integral += f(t(x2[j], min, max));
  66.                 }
  67.             }
  68.  
  69.             else if (m == 3) {
  70.                 for (int j = 0; j < m; j++) {
  71.                     integral += Aj[j] * f(t(x3[j], min, max));
  72.                 }
  73.             }
  74.             integral *= (max - min) / 2;
  75.             Console.WriteLine(integral);
  76.         }
  77.  
  78.         static void Main(string[] args) {
  79.             //float min = 1, max = 3;
  80.             float min = MathF.Log(2), max = MathF.Log(3);
  81.             Cheb(2, min, max);
  82.         }
  83.     }
  84. }
  85.  
Add Comment
Please, Sign In to add comment