Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Язык любой] Метод численного дифференцирования


Автор: eganeev 3.2.2007, 15:09
Кто может напишите плиз прогу по численному дифференцированию! У самого ничего неполучается(((  Можете писать на любом языке.  Заранее огромное спасибо.

Автор: Rodman 3.2.2007, 15:50
Код

program diff;
{$APPTYPE CONSOLE}
const eps=1.0E-6; //заданная точность
function fx(x: real): real; //заданная функция
begin
fx:=sin(x);
end;
function f1(x0: real): real; //вычисление первой производной
var dx,dy,dy2: real;
begin
dx:=1;
repeat
dx:=dx/2;
dy:=fx(x0+dx/2)-fx(x0-dx/2);
dy2:=fx(5*x0/4+dx)-2*fx(5*x0/4);
dy2:=dy2+fx(5*x0/4-dx);
until abs(dy2/(2*dx))<eps;
f1:=dy/dx
end;
Function f2(x0: real): real; // вычисление 2-й производной
var dx,dy,dy3: real;
begin
dx:=1;
repeat
dx:=dx/2;
dy:=fx(x0 + dx)-2*fx(x0)+fx(x0-dx);
dy3:=fx(5*x0/4+2*dx)-2*fx(5*x0/4+dx);
dy3:=dy3-fx(5*x0/4-2*dx)+2*fx(5*x0/4-dx);
until abs(dy3/(6*dx))<eps;
f2:=dy/(dx*dx)
end;
var x: real;
begin
x:=Pi/6;
// пример выполнения
writeln('f1 =',f1(x));
writeln('f` =',cos(x));
writeln('f2 =',f2(x));
writeln('f``=',-sin(x));
readln;
end. 

Автор: eganeev 3.2.2007, 18:08
Спасибо огромное.

Автор: eganeev 3.2.2007, 19:24
А нет такой программы еще на Visual Basic?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)