- •Оглавление
- •Глава 2. Практическая часть 19
- •Введение
- •Глава 1. Теоретическая часть
- •1.1. Обзор программных средств
- •1.2. Постановка задачи
- •1.3. Математическая модель
- •1.4. Алгоритм решения задачи
- •1.5. Блок-схема алгоритма решения поставленной задачи
- •Глава 2. Практическая часть
- •2.1. Решение поставленной задачи в среде Delphi
- •2.1.1. Описание интерфейса программы в среде Delphi
- •2.1.2. Перечень использованных в программе идентификаторов
- •2.1.3. Тексты основных модулей и вид форм приложения
- •2.1.4. Графическое представление результатов
- •2.2. Решение поставленной задачи средствами MathCad
- •2.2.1 Обзор использованных вычислений в программе MathCad
- •Прямой метод нахождения производной (встроенная функция)
- •Метод нахождения производной с помощью приближенной формулы
- •Анализ полученных результатов
- •Заключение
- •Список использованной литературы
- •Приложения Приложение 1.
Приложения Приложение 1.
Листинг программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart, jpeg;
type
TForm1 = class(TForm)
Label1: TLabel;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Chart1: TChart;
Series1: TBarSeries;
Chart2: TChart;
Button4: TButton;
Series2: TLineSeries;
Image1: TImage;
Edit4: TEdit;
StaticText4: TStaticText;
Memo1: TMemo;
Memo2: TMemo;
Image2: TImage;
Edit5: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit6: TEdit;
StaticText5: TStaticText;
Button3: TButton;
Label4: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
j,n:Integer;
a,b,h,s,M,Int,x,dx,e,p:real;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;
procedure TForm1.Button1Click(Sender: TObject);
function f(x:real):real;
begin
f:=sqrt(x)+sqr(ln(x))+x*x*x-exp(1/10*(ln(x)))+1;
end;
begin
Series1.Clear;
M:=1.136;//Максимальное значение модуля 4 производной
//считывание значений a, b, n
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
n:=StrToInt(Edit3.Text);
//Проверка введенных данных
if (b < a) then begin
MessageBox(Application.Handle,'Неверно заданы границы вычислений',
'Ошибка!',mb_IconError);
exit
end;
h:=(b-a)/n;
Int:=f(a)+f(b);
Edit4.Text:=FloatToStr(h);//вывод значения приращения
Series1.AddXY(a,Int*h/3); //вывод на график значения интеграла в точке а
for j:=1 to n-1 do begin
x:=a+j*h;
if odd(j)=true then Int:=Int+4*f(x)
else Int:=Int+2*f(x);
Series1.AddXY(x,Int*h/3); //вывод на график значения Int
end;
Int:=Int*h/3;
e:=(b-a)*sqr(h*h)*M/180;
Memo2.Lines.Add('Количество разбиений='+FloatToStrf(n,fffixed,14,0));
Memo2.Lines.Add('По методу Симпсона='+FloatToStrf(Int,fffixed,14,7));
Memo2.Lines.Add('Погрешность='+FloatToStrF(e,fffixed,14,7));
end;
procedure TForm1.Button4Click(Sender: TObject);
function f(x:real):real;
begin
f:=sqr(x)+sqr(ln(x))+x*x*x-exp(1/10*ln(x))+1;
end;
begin
Series2.Clear;
begin
//проверки на корректность заданных значений
if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') then
begin
MessageBox(Application.Handle,'Заданы не все значения',
'Ошибка!',mb_IconError);
exit
end;
memo1.Clear;
//ввод значений для вычисления производной
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
n:=StrToInt(Edit3.Text);
dx:=StrToFloat(Edit6.Text);
h:=(b-a)/n;
if (b < a) then
begin
MessageBox(Application.Handle,'Неверно заданы границы вычислений',
'Ошибка!',mb_IconError);
exit
end;
if ((b-a)<h) then
begin
MessageBox(Application.Handle,'Некорректно задано значение шага вычислений',
'Ошибка!',mb_IconError);
exit
end;
x:=a;
while x<=b+h/2 do begin
p:=(f(x+dx)-f(x))/dx;
//Вывод в таблицу
Memo1.Lines.Add('x='+FloatToStrF(x,fffixed,8,3)+' F''(x)='+FloatToStrF(p,fffixed,14,7));
//Построение графика производной по таблице
Series2.AddXY(x,p);
x:=x+h;
end;
end;
end;
end.