Форум: "Основная";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
ВнизКак найти производную от функции Найти похожие ветки
← →
Filmax (2003-03-17 06:16) [0]Ув. мастера, как найти производную от функции, или просто помогите перевести исходник с С на Delphi:
double proiz(double x, double dx, double (*f)(double x) );
double fun(double z);
int main()
{
double x; /* точка вычисления производной */
double dx; /* приращение */
double z; /* значение производной */
scanf("%f,%f",&x,&dx); /* ввод значений x и dx */
z=proiz(x,dx,fun); /* вызов функции */
printf("%f",z); /* печать значения производной */
return 0;
}
double proiz(double x,double dx, double (*f)(double z) )
{ /* функция вычисляющая производную */
double xk,xk1,pr;
xk=fun(x);
xk1=fun(x+dx);
pr=(xk1/xk-1e0)*xk/dx;
return pr;
}
double fun( double z)
{ /* функция от которой вычисляется производная */
return (cos(z));
}
Спасибо!
← →
MBo (2003-03-17 06:19) [1]по определению производная есть предел отношения (т.е. просто малое dx берешь)
F"=(F(x+dx)-F(x))/dx
На Паскале уж сам запиши
← →
ZmeiGorin (2003-03-17 09:44) [2]
type TFunctionOfOneArg=function(x:double):double;
function Deriv(x,dx:double;f:TFunctionOfOneArg):double; forward;
function Func(x:double):double; forward;
.....
function Deriv(x,dx:double;f:TFunctionOfOneArg):double;
var
xk,xk1:double;
begin
xk:=f(x);
xk1:=f(x+dx);
result:=(xk1/xk-1)*xk/dx;
end;
function Func(x:double):double;
begin
result:=cos(x);
end;
А можно поломать голову и заставить его считать аналитически :-)
← →
Radionov Alexey (2003-03-17 10:28) [3]>F"=(F(x+dx)-F(x))/dx
При тех же затратах, но с лучшим порядком малости O(dx^2)
F"(x)=(F(x+dx)-F(x-dx))/(2*dx)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.012 c