мне нужна вот такая программа "численное дифференцирования в известных точках"
у меня есть как бы сама программа на паскале, вот код:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | PROGRAM DIF1 (INPUT,OUTPUT);
CONST N= 5 ;
K= 1 ;
L= 5 ;
VAR Y: ARRAY [ 1.. N] OF REAL ;
R: ARRAY [ 1..5 ] OF REAL ;
H,Z,S: REAL ;
J,I2,I1,I: INTEGER ;
BEGIN
FOR I:= 1 TO N DO READ (X[i]);
READLN;
READLN(H);
READLN(Z);
CASE K OF
1 : BEGIN R[ 1 ]:= 1 ; R[ 2 ]:=- 0.5 ; R[ 3 ]:= 1 / 3 ; R[ 4 ]:=- 0.25 ; R[ 5 ]:= 0.2 ;
2 : BEGIN R[ 0 ]:= 1 ; R[ 2 ]:= 1 ; R[ 3 ]:=- 1 ; R[ 4 ]:= 11 / 12 ; R[ 5 ]:=- 5 / 6 ;
END ;
S:= 0 ;
FOR J:= 1 TO L DO
BEGIN
I2:=N-J;
IF I2 < > 1 THEN
BEGIN
FOR I1:= 1 TO I2 DO Y[I1]:=Y[I1+ 1 ]-Y[I1];
S:=S+Y[i]*R[i]
END :
S:=S/H;
IF K= 2 THEN S:=S/H;
WRITE (S);
END .
|
и есть алгоритм
вот что у меня вышло написать на Delphi
по этому всему:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class (TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
StringGrid1: TStringGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
public
end ;
var
Form1: TForm1;
implementation
{$R *.dfm}
Function y(x: real ): real ;
begin
y:=x*( 2 *x);
end ;
procedure TForm1 . Button1Click(Sender: TObject);
var
k,x: real ;
y: array [ 1..5 ] of real ;
r: array [ 1..5 ] of real ;
h,z,s: real ;
j,i1,i2,i,n,l: integer ;
begin
k:=strtoint(edit1 . Text);
l:=strtoint(edit2 . Text);
h:=strtoint(edit3 . Text);
if k= 1 then
r[ 1 ]:= 1 ;r[ 2 ]:=- 0.5 ;r[ 3 ]:= 1 / 3 ;r[ 4 ]:=- 0.25 ;r[ 5 ]:= 0.2 ;
if k= 2 then
r[ 1 ]:= 0 ;r[ 2 ]:= 1 ;r[ 3 ]:=- 1 ;r[ 4 ]:= 11 / 12 ;r[ 5 ]:=- 5 / 6 ;
s:= 0 ;
for j:= 1 to l do
begin
i2:=n-j;
if i2 <> 1 then
begin
for i:= 1 to i2 do
y[i1]:=y[i1+ 1 ]-y[i1];
s:=s+y[i]*r[i];
s:=s/h;
if k= 2 then s:=s/h;
end ;
end ;
end ;
end .
|
помогите мне сделать эту программу, срочно она мне нужна, если кто то сделает мне ее полностью то будет вознаграждение по средствам WebMoney!
Надеюсь на понимание!