Приближенное вычисление производной - C#
Формулировка задачи:
Есть производная вида
Мы можем использовать формулу из определения производной, обозначив сколь угодно малую величину через такую же малую величину
h
Тогда мы сможем получить то, что называют the Forward Difference #### Как это реализовать? Пробовал сделать, но не очень понял и вышло что-то на подобии:class Program
{
static void Main(string[] args)
{
double x0, X;
x0 = Math.Cos(45);
Console.WriteLine("Введите Шаг: ");
X = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ответ: " + Diff(x0, X));
Console.ReadLine();
}
static double Diff(double x0, double X)
{
double r1;
double x = x0, h = X;
return (Y1(x,h) - Y2(x) / h);
}
static double Y1(double x0, double X)
{
double x = x0, h = X;
return x+h;
}
static double Y2(double x0)
{
double x = x0;
return x;
}
}Решение задачи: «Приближенное вычисление производной»
textual
Листинг программы
using System;
namespace ConsoleApplication207
{
internal class Program
{
private static void Main(string[] args)
{
//задаем функцию
Func<double, double> f = x => Math.Cos(x);
//вводим начальную точку
Console.Write("Точка X: ");
var x0 = double.Parse(Console.ReadLine());
//вводим дельту
Console.Write("dX: ");
var dx = double.Parse(Console.ReadLine());
//считаем производную в точке
var df = Diff(f, x0, dx);
Console.WriteLine("Производная: {0:0.000}", df);
Console.ReadLine();
}
private static double Diff(Func<double, double> f, double x, double dx)
{
return (f(x + dx) - f(x)) / dx;
}
}
}