Ребят помогите напишите готовый кодик на си шарпе для вычисления производной, заплачу 300 роблоксов
Во-первых, производная существует не у любой функции для любого её аргумента.
Во-вторых, (квази)полиномы и многие другие классы функций легко дифференцируются и вообще всё, что касается производных элементарных функций, их линейных комбинаций и суперпозиций, умножений, делений, то это тоже можно легко автоматизировать, только долго писать и сразу надо вводить некую систему обозначений, задающих функции, чтоб компьютер смог распознать функцию, которую надо продифференцировать. Да ещё и вывод результатов в сложных случаях будет достаточно сложно организовать.
Производные достаточно гладких функций одного и частные производные нескольких аргументов легко аппроксимируются со вторым порядком, то есть как O(h²), например, центральной или смещённой производной:
dy(x)/dx ≈ (y(x+h)-y(x-h))/(2h)
dy(x)/dx ≈ (-3y(x)+4y(x+h)-y(x+2h))/(2h)
∂u(x,y,z)/∂x ≈ (u(x+h,y,z)-u(x-h,y,z)/(2h)
А вот как это работает:
using System;
namespace New_Project
{ public static class Program
{ public static double f(double x)
{ return Math.Sin(x); }
public static void Main()
{ double x, dx, y; while (true)
{ Console.Write("x dx: ");
var line = Console.ReadLine().Split(" ");
x = double.Parse(line[0]);
dx = double.Parse(line[1]);
y = (f(x + dx) - f(x - dx)) / (2 * dx);
Console.WriteLine(y + ", error=" + (y-Math.Cos(x))); } } } }
Вводим данные и смотрим абсолютные ошибки вычислений:

Из примера видно, что малый параметр h (в вышеприведённом коде он обозначен как dx) лучше не форсировать, уменьшая как попало до слишком малой величины: это не увеличит точность, а наоборот порядковая точность O(h²) от этого только ухудшится. Да, кстати: вот такая аппрокимация производной (особенно при решении дифференциальных уравнений численными методами)
у' ≈ (y(x+∆x)-y(x))/∆x - это просто дурость...
Для произвольной функции, с заданной точностью:
public delegate double Function(double x);
private static double GetDerivative(Function f, double AtPoint, double dx) => (f(AtPoint + dx) - f(AtPoint)) / dx;
public static double Derivative(Function f, double AtPoint, double Epsilon = 0.01)
{
double dx = 0.25;
double OldResult;
double Result = GetDerivative(f, AtPoint, dx);
do
{
OldResult = Result;
dx /= 2d;
Result = GetDerivative(f, AtPoint, dx);
}
while (Math.Abs(OldResult - Result) > Epsilon);
return Result;
}
http://artem00511.narod.ru/Def.rar там два файла кода. Ознакомьтесь с ним и узнаете, как программировать вычисление производных в C#/
Андрей уже отвечал https://otvet.mail.ru/question/218867220
Так что конкретики у тебя нет, хотя может и такая статья поможет http://aco.ifmo.ru/el_books/numerical_methods/lectures/glava1.html