Advertisement
Xsufu

Численное Дифференцирование C#

Feb 10th, 2021
1,272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.64 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Numerical_Differentiation {
  5.     class Program {
  6.         //Первая функция
  7.         static double AFunc(double x) {
  8.             //Слагаемые функции
  9.             double first = (x / 4) * (10 - Math.Pow(x, 2)) * Math.Sqrt(4*x-2);
  10.             double second = 6 * Math.Asin(x / 2);
  11.  
  12.             return first + second;
  13.         }
  14.  
  15.         //Вторая функция
  16.         static double BFunc(double x) {
  17.             return x / (9*(4*x+9));
  18.         }
  19.  
  20.         //Третья функция
  21.         static double CFunc(double x) {
  22.             //Степень экспоненты
  23.             double power = (x - 1) / 2;
  24.  
  25.             return (1 - x - Math.Pow(x, 2)) * Math.Pow(Math.E, power);
  26.         }
  27.  
  28.         //Центральная КРА
  29.         static void CenterDiff(double h, double x) {
  30.             double x0 = x - h;
  31.             double x2 = x + h;
  32.             double y = (AFunc(x2) - AFunc(x0)) / (2 * h);
  33.             Console.WriteLine(y);
  34.         }
  35.  
  36.         //Левая КРА
  37.         static void LeftDiff(double h, double x) {
  38.             double x0 = x - h;
  39.             double y = (AFunc(x) - AFunc(x0)) / h;
  40.             Console.WriteLine(y);
  41.         }
  42.  
  43.         //Правая КРА
  44.         static void RightDiff(double h, double x) {
  45.             double x2 = x + h;
  46.             double y = (AFunc(x2) - AFunc(x)) / h;
  47.             Console.WriteLine(y);
  48.         }
  49.  
  50.         //Нахождение производной любого порядка
  51.         static void FindAnyShtrih(double h, double x, int n) {
  52.  
  53.             //Хранение значения ф-ии в заданной точке
  54.             List<double> ys = new List<double>();
  55.             //Вычисление ф-ии в точке
  56.             for (int i = -n; i <= n; i++) {
  57.                 ys.Add(CFunc(x + h * i));
  58.             }
  59.  
  60.             //Вычисление производных
  61.             //с 1 по 5 порядок
  62.             for (int i = 1; i <= 5; i++) {
  63.                 //Временный список
  64.                 List<double> tmp = new List<double>();
  65.                 for (int j = 0; j < ys.Count - 2; j++) {
  66.                     //Вычисление производной по средней КРА
  67.                     tmp.Add(ys[j + 2] - ys[j] / (2 * h));
  68.                 }
  69.                 //Перезапись результата
  70.                 ys = tmp;
  71.                 Console.WriteLine(ys[4]);
  72.             }
  73.         }
  74.  
  75.         static void Main(string[] args) {
  76.             FindAnyShtrih(0.5, 2, 5);
  77.         }
  78.  
  79.     }
  80. }
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement