|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Лабораторна робота №4. Розробити програму обчислення таблиці значень інтеграла з заданою точністю для , що змінюється на інтерваліПроцедурні типи Розробити програму обчислення таблиці значень інтеграла з заданою точністю для , що змінюється на інтервалі з кроком . Для обчислення значення інтеграла використати одну із формул наближеного інтегрування для завдань: 1-4 – прямокутників; 5-9 – трапецій; 10-14 – Сімпсона. У програмі використати підпрограму обчислення інтеграла за вказаною формулою, в яку передати підінтегральну функцію як параметр. Результати обчислень надрукувати у вигляді таблиці, в кожному рядку якої розмістити значення і відповідне йому значення інтеграла. , , , Код програми: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; Type TForm1 = class(TForm) Image1: TImage; Edit1: TEdit; Label1: TLabel; Button1: TButton; Label2: TLabel; Label4: TLabel; Edit2: TEdit; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } Public { Public declarations } end; type TDoubleFunc = function(X: Double): Double; Const p=3.14; var Form1: TForm1; t:integer; Implementation {$R *.dfm} function Integral(A, B, Eps: Double; F: TDoubleFunc): Double; function InternalCalc(A, B: Double; F: TDoubleFunc; N: Integer): Double; var x, dx: Double; i: Integer; begin dx:= (B - A) /N; Result:= 0; x:= A; for i:= 1 to N do begin Result:= Result + dx * (F(x) + 4 * F(x + dx / 2) + F(x + dx)) / 6; x:= x + dx; end; end; var N: Integer; Prev: Double; begin Result:= InternalCalc(A, B, F, 4); N:= 4; repeat Prev:= Result; N:= N shl 1; Result:= InternalCalc(A, B, F, N); until (Result = 0) or (Abs((Result - Prev) / Result) < Eps); end; function F(X: Double): Double; begin Result:=exp(-t*x)*(exp(cos(x))*ln(2*t)); end; procedure TForm1.Button1Click(Sender: TObject); begin t:=strtoint(edit1.Text); edit2.text:=FloatToStr(Integral(0, p/2, 0.0001, F)); end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; end.
Лабораторна робота №5 Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |