Автор работы: Пользователь скрыл имя, 12 Января 2015 в 18:48, лабораторная работа
Цель работы:
Целью работы является освоение:
работы в среде визуального программирования Delphi;
программного решения трансцендентного уравнения численными методами;
разработки интерфейса приложения с использованием базовых компонентов библиотеки VCL.
МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ
(государственный технический
филиал «Восход»
Кафедра Б 22- МиПОИС
«УТВЕРЖДАЮ»
Преподаватель Кулепетова Н.Н.
« » 2008г.
ОТЧЕТ
по лабораторной работе № 1
на тему: «Использование простейших элементов Delphi для решения прикладных задач»
по дисциплине: Архитектура ЭВМ. Системное программное обеспечение
Студентки гр. ДМ 3-31 /Саниной Е.О./
« » 2008г.
Байконур 2008 г.
Цель работы:
Целью работы является освоение:
Постановка задачи:
Разработать приложение для решения трансцендентного уравнения следующими методами:
Решение необходимо определить на заданном отрезке с точностью . В программе предусмотреть подсчет и вывод на печать числа итераций, за которое удается найти значения корней с заданной точностью.
Уравнение:
Отрезок, содержащий корень: [1; 2].
Приближенное значение корня: 1,1183.
Для решения поставленной задачи были использованы следующие элементы и их свойства.
Для задания имени окна следует в инспекторе объектов в свойстве Caption ввести желаемую строку.
Чтобы создать надпись, следует разместить на форме компонент Label и в инспекторе объектов в свойстве Caption ввести требуемый текст. Чтобы сделать надпись первоначально невидимой, достаточно изменить свойство Visible с задаваемого по умолчанию ‘True’ на ‘False’. Чтобы разрешить возможность размещения надписи на несколько строк, следует изменить свойство WordWrap на ‘True’. Чтобы придать надписи надлежащий формат, следует выбрать подходящий шрифт и размер в свойстве Font, цвет в свойстве Color.
Для текстового поля Edit использовались так же свойства Font, Visible. Однако, содержимое текстового поля отображается в свойcтве Text.
Для компонента Button (кнопки) использовалось так же свойство Caption, где задавалось имя кнопки.
Для создания элементов управления был использован компонент RadioButton. Надпись к этому элементу можно задать в свойстве Caption. По умолчанию флажок сброшен (в свойстве Checked содержится значение False).
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
a=1; b=2; e=0.0001;
var
Form1: TForm1;
implementation
{$R *.dfm}
//нахождение функции в точке
function f (x:real):real;
begin
f:=0.1*sqr(x)-x*ln(x);
end;
//нахождение первой
function f1 (x:real):real;
begin
f1:=0.2*x-ln(x)-1;
end;
//нахождение второй
function f2 (x:real):real;
begin
f2:=0.2-1/x;
end;
//нахождение fi
function fi (x:real):real;
begin
fi:=0.1*sqr(x)-x*ln(x)+x;
end;
//метод итераций
procedure iter (var x1:real; var n:integer);
var x2,x3,c:real;
begin
x1:=a+0.5;
x2:=a;
c:=a;
while abs(x1-c)>=e do
begin
x1:=c;
x2:=fi(x1);
c:=x2;
inc(n);
end;
x1:=x2;
end;
//метод Ньютона
procedure Nuton (var x3:real; var n:integer);
var x1,x2,c:real;
begin
x1:=a+0.2;
x2:=a;
c:=a;
if F(x1)*f2(x1)>0 then
begin
while abs(x1-c)>=e do
begin
x1:=c;
x2:=x1-f(x1)/f1(x1);
c:=x2;
inc(n);
end;
x3:=x2;
end
else
x3:=888;
end;
//метод половинного деления
procedure delen (var x3:real; var n:integer);
var x1,x2,x4,y,z:real;
begin
x1:=a;
x2:=2;
y:=f(x1);
repeat
x4:=(x1+x2)/2;
z:=f(x4);
if z=0 then x3:=x4 else
if y*z<0 then x2:=x4
else
begin
x1:=x4;
y:=z;
end;
inc(n);
until (x2-x1)<e;
x3:=x4;
end;
procedure TForm1.Button1Click(Sender: TObject);
var x1,x2,x3:real;
n1,n2,n3:integer;
begin
x1:=0; x2:=0; x3:=0;
n1:=0; n2:=0; n3:=0;
nuton(x1,n1);
iter(x2,n2);
delen(x3,n3);
if RadioButton1.Checked then
begin
Edit1.Visible:=true;
Edit1.Text:=floattostr(x2);
Edit2.Visible:=true;
Edit2.Text:=floattostr(n2);
end;
if RadioButton2.Checked then
begin
Edit3.Visible:=true;
Edit3.Text:=floattostr(x1);
Edit4.Visible:=true;
Edit4.Text:=floattostr(n1);
end;
if RadioButton3.Checked then
begin
Edit5.Visible:=true;
Edit5.Text:=floattostr(x3);
Edit6.Visible:=true;
Edit6.Text:=floattostr(n3);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;
end.
Результаты выполнения программы
Анализ результатов: с помощью вышеописанных методов корень трансцендентного уравнения был найден с точностью до e=0.0001. С помощью метода Ньютона корень был найден за наименьшее число итераций.
Вывод: в ходе выполнения лабораторной работы были получены навыки использования простейших компонентов среды разработки программ Delphi, таких как: Button, Edit, Label, RadioButton .
Информация о работе Использование простейших элементов Delphi для решения прикладных задач