Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка 3 часть(рекоменд).doc
Скачиваний:
52
Добавлен:
30.10.2018
Размер:
2.88 Mб
Скачать
  1. Разработайте схемы алгоритмов интегрирования функций по методам трапеций и Симпсона.

  1. В среде Delphi создайте приложение для решения задачи численного интегрирования функций, приведенных в таблице 4.1 (в соответствии со своим вариантом) методами трапеций и Симпсона. Предусмотрите в программе вычисление точного значения определенного интеграла через первообразную функцию (табл. 4.1).

    Пример выполнения задания

Определите интеграл с = 40 и шагом h, который вычисляется по формуле h = (b – a) / n, используя квадратурные формулы: а) трапеций; б) Симпсона; в) Ньютона-Лейбница. Вид первообразной F(x) = . Оцените погрешность всех результатов.

2.1. Создайте приложение в Delphi и разместите необходимые компоненты на форме (рис. 4.3). Для этого используйте компоненты: Label, Edit, Memo, RadioButton, Chart, Button. Введите исходные данные в Edit1 — Edit4, Label1-Label4.

Рисунок 4.3 – Вид формы решения интеграла в Delphi

2.2. В начале программы необходимо описать исходную функцию (f) и ее первообразную (perv):

function f(x:real):real;

begin

f := exp(3*ln(x))+1/sqr(x);

end;

function perv(x:extended):extended;

begin

perv := exp(4*ln(x))/4–1/x;

end; 

2.3. Создайте процедуру-обработчик нажатием кнопки «Решить». Текст процедуры приведите к следующему виду:

procedure TForm1.Button1Click(Sender: TObject);

var a,b,h,s,x,s1:real;

j,n,i:integer;

begin

a := StrToFloat(Edit1.Text);

b := StrToFloat(Edit2.Text);

n := StrToint (Edit4.Text);

h := (b–a)/n;

Edit3.Text := FloatToStr(h);

Series1.Clear;

//Метод Ньютона-Лейбница

s1 := perv(b)–perv(a);

x := a;

if RadioButton1.Checked then begin

while x<=b do begin

Series1.AddXY(x,f(x));

x := x+h;

end;

Memo1.Lines.Add('По метод Ньютона-Лейбница='+FloatToStrF(s1,fffixed,14,7));

end;

//Метод трапеций

if RadioButton2.Checked then begin

s := (f(a)+f(b))/2;

h := (b–a)/n;

for i := 1 to n–1 do begin

x := a+i*h;

series1.AddXY(x,f(x));

s := s+f(x);

end;

s := s*h;

Memo1.Lines.Add('По методу трапеций='+FloatToStrF(s,fffixed,14,7));

Memo1.Lines.Add('Погрешность='+FloatToStrF(abs(s1–s),fffixed,14,7));

end;

//Метод Симпсона

if RadioButton3.Checked then begin

s := f(a)+f(b);

for j := 1 to n-1 do

begin

x := a+j*h;

if odd(j)=true then s := s+4*f(x)

else s := s+2*f(x);

Series1.AddXY(x,f(x));

end;

s := s*h/3;

Memo1.Lines.Add('По методу Симпсона='+FloatToStrf(s,fffixed,14,7));

Memo1.Lines.Add('Погрешность='+FloatToStrF(abs(s1–s),fffixed,14,7));

end;

end;

2.4. В результате, при выборе одной из радиокнопок будет строиться график и выводиться решение задачи по выбранному методу (рис. 4.4). Обратите внимание, что полученные результаты близки по значениям, что и подтверждают погрешности вычислений.

Рисунок 4.4 – Значения интеграла по методам Симпсона, трапеций, Ньютона-Лейбница

2.5. САМОСТОЯТЕЛЬНО. Создайте процедуры-обработчика нажатием кнопки «Выйти» и «Очистить поле». Продумайте, как вычислить погрешности метода трапеций по формуле (4.5) и метода Симпсона (4.7). Реализуйте это в своем приложении.