Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace Numerical_Differentiation {
- class Program {
- //Первая функция
- static double AFunc(double x) {
- //Слагаемые функции
- double first = (x / 4) * (10 - Math.Pow(x, 2)) * Math.Sqrt(4*x-2);
- double second = 6 * Math.Asin(x / 2);
- return first + second;
- }
- //Вторая функция
- static double BFunc(double x) {
- return x / (9*(4*x+9));
- }
- //Третья функция
- static double CFunc(double x) {
- //Степень экспоненты
- double power = (x - 1) / 2;
- return (1 - x - Math.Pow(x, 2)) * Math.Pow(Math.E, power);
- }
- //Центральная КРА
- static void CenterDiff(double h, double x) {
- double x0 = x - h;
- double x2 = x + h;
- double y = (AFunc(x2) - AFunc(x0)) / (2 * h);
- Console.WriteLine(y);
- }
- //Левая КРА
- static void LeftDiff(double h, double x) {
- double x0 = x - h;
- double y = (AFunc(x) - AFunc(x0)) / h;
- Console.WriteLine(y);
- }
- //Правая КРА
- static void RightDiff(double h, double x) {
- double x2 = x + h;
- double y = (AFunc(x2) - AFunc(x)) / h;
- Console.WriteLine(y);
- }
- //Нахождение производной любого порядка
- static void FindAnyShtrih(double h, double x, int n) {
- //Хранение значения ф-ии в заданной точке
- List<double> ys = new List<double>();
- //Вычисление ф-ии в точке
- for (int i = -n; i <= n; i++) {
- ys.Add(CFunc(x + h * i));
- }
- //Вычисление производных
- //с 1 по 5 порядок
- for (int i = 1; i <= 5; i++) {
- //Временный список
- List<double> tmp = new List<double>();
- for (int j = 0; j < ys.Count - 2; j++) {
- //Вычисление производной по средней КРА
- tmp.Add(ys[j + 2] - ys[j] / (2 * h));
- }
- //Перезапись результата
- ys = tmp;
- Console.WriteLine(ys[4]);
- }
- }
- static void Main(string[] args) {
- FindAnyShtrih(0.5, 2, 5);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement