unit1.pas

来自「Simpson求积简单的算法及其DELPHI的一些简单代码.欢迎大家参考!」· PAS 代码 · 共 66 行

PAS
66
字号
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
type
  myFun=function(x:real):real;

function f1(x:real):real;
begin
  result:=exp(-x);
end;

function f2(x:real):real;
begin
  if abs(x)<1.0E-6 then
    result:=1-x*x/6*(1/x*x/20)
  else
    result:=sin(x)/x;
end;

function Simpson(f:myFun;a,b:real):real;
var
  i,n:integer;h,sum:real;
begin
  n:=30;
  h:=(b-a)/n;
  sum:=f(a)+f(b);
  for i:=1 to n-1 do
  sum:=sum+4*f(a+(i+0.5)*h);
  result:=sum*h/6;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2:real;
begin
  Memo1.Lines.Clear;  //清屏
  s1:=Simpson(f1,1,2);
  s2:=Simpson(f1,0,1);
  Memo1.Lines.Add(FloatToStr(s1));
  Memo1.Lines.Add(FloatToStr(s2));
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?