Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы №6 Delphi

.pdf
Скачиваний:
44
Добавлен:
13.05.2015
Размер:
358.7 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА 3-3.

ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ ФУНКЦИИ И РАЗМЕЩЕНИЕ РЕЗУЛЬТАТОВ В ТАБЛИЦЕ.

В данной работе необходимо вычислить значения некоторой функции (например):

y =

b

x2 +a2

 

в интервале значений аргумента от xn=0 до xk=10.0 с шагом x=0.2. Результаты вычислений разместить в таблице.

Для решения задачи построим форму следующего вида:

a= Edit1

b= Edit2

Вычислить

Разместим на форме две строки ввода с реакцией OnKeyPress (двойной щелчок мыши на соответствующем окне в разделе Events инспектора объектов) аналогично предыдущим работам.

Таблица в правой части формы строится путем помещения объекта StringGrig страницы Additional на форму и определения свойств таблицы:

Name – SG1 (имя объекта);

FixedCols = 0 (количество наименований столбцов); FixedRows = 0 (количество наименований строк); ColCount = 2 (количество столбцов);

RowCount = 51 (количество строк);

Реакция на нажатие кнопки «Вычислить» программируется следующим образом:

procedure TForm1.Button1Click(Sender: TObject); var s1,s2:string;

i:integer; begin

input(edit1,edit2); for i:= 0 to 50 do

begin

11

x:=0.2*i;

y:=b/sqrt(x*x+a*a);

str(x:10:4,s1);

str(y:10:4,s2);

SG1.Cells[0,i]:=s1;

SG1.Cells[1,i]:=s2;

end;

end;

Выделенные предложения производят преобразование переменных x и у в строки и помещают их в таблицу SG1. Свойство Cells[i,j] объекта StringGrid позволяет сформировать элементы таблицы.

Вид программы после завершения проекта.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit;

Edit2: TEdit; Button1: TButton; SG1: TStringGrid;

procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure Button1Click(Sender: TObject);

procedure input(edit1,edit2: tEdit); private

{Private declarations } public

{Public declarations } end;

var

Form1: TForm1; x,y,a,b:real; implementation

{$R *.DFM}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin

case key of '0'..'9','-',chr(8):;

12

'.': if pos('.',edit1.text)<>0 then key:=chr(0); chr(13): edit2.SetFocus;

else key:=chr(0) end; end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin

case key of '0'..'9','-',chr(8):;

'.': if pos('.',edit2.text)<>0 then key:=chr(0); chr(13): edit2.SetFocus;

else key:=chr(0) end;

end;

procedure TForm1.input(edit1,edit2: tEdit); var code: integer;

begin

val(edit1.text,a,code);

val(edit2.text,b,code);

end;

procedure TForm1.Button1Click(Sender: TObject); var s1,s2:string;

i:integer; begin

input(edit1,edit2); for i:= 0 to 50 do

begin x:=0.2*i;

y:=b/sqrt(x*x+a*a);

str(x:10:4,s1);

str(y:10:4,s2);

SG1.Cells[0,i]:=s1;

SG1.Cells[1,i]:=s2;

end;

end;

end.

Порядок выполнения работы.

1. Построить, откомпилировать и выполнить проект программы, приведенной в описании работы.

2. Создать проект программы по индивидуальному заданию, в котором предусмотреть формы для ввода исходных данных с клавиатуры.

Задание 1. Вычислить значение функции в интервале от х=0 до х=5.0 с шагом 0.5 при a=2.48, b=7.15, c=3.27.

Y = ax3 +cx2 +b bx2 +a

Задание 2. Вычислить значение функции в интервале от х=0.2 до х=2.2 с шагом 0.2 при a=0.76, b=0.41, c=1.66, d=2.16.

13

sin2 (x)

Y =

dx2

+

x

ax2

+bx +c

 

x2 +a

Задание 3. Вычислить значение функции в интервале от х=0.5 до х=10 с шагом 0.5 при a=5, z=3.

Y = ln z +a + x2 +(z +a)2 z a + x2 +(z a)2

Задание 4. Вычислить значение функции в интервале от х=-2.0 до х=2.0 с шагом 0.4 при a=2.34, b=1.86, d=4.38.

Y =

 

x

 

+

 

x

 

[

a2 + x2

]3

[

b2 +(x d)2

]3

Задание 5. Вычислить значение функции в интервале от х=0.5 до х=5 с шагом 0.25 при a=3, c=4.5, d=2.

Y =

 

x2

+a2

+c2

d

2

 

+0.5

4x2

+

x2

+a2

+c2

d

2

 

0.5

d2

 

 

 

 

d2

 

d2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 6. Вычислить значение функции в интервале от х=0 до х=10 с шагом 0.5 при a=1.28, b=0.75.

Y =

a2 (a2

x

+

1

arctg b

x

 

+b2 x)

 

a3b

 

a

Задание 7. Вычислить значение функции в интервале от х=0.05 до х=0.5 с шагом 0.05.

Y = x cos(x)

Задание 8. Вычислить значение функции в интервале от х=0 до х=2 с шагом 0.1 при a=3, b=1.5.

Y =

2 x

+

a

ln a +b

x

 

b2

 

b2

a b

x

14

Задание 9. Вычислить значение функции в интервале от х=0 до х=2 с шагом 0.2 при a=1.28,

 

b=0.5.

 

 

 

 

Y =

a +bx

+

b

 

 

a2 +x2

(b +x)

3

 

 

 

2

 

Задание 10. Вычислить значение функции в интервале от х=0 до х=0.6 с шагом 0.05 при a=2, b=3.2.

Y = x2 +ln(b +x) acos2 (x) +1

Задание 11 Вычислить значение функции в интервале от х=0.1 до х=0.5 с шагом 0.05 при a=1.2,

 

 

 

b=4.5.

 

 

1

 

 

1

x

Y =

 

 

 

arctg

 

 

 

 

2a

x

 

 

x +b

Задание 12. Вычислить значение функции в интервале от х=2 до х=4 с шагом 0.2 при a=2, b=3.2,

 

 

c=1, d=1.2.

Y =

a

c

 

bx

(x2

d2 ) +b2

Задание 13 Вычислить значение функции в интервале от х=1.5 до х=3 с шагом 0.15 при a=2.5,

 

 

 

b=1.25.

Y =

1

1

 

ax

 

(a2 1)(x2 1) +b2

Задание 14 Вычислить значение функции в интервале от х=0 до х=2 с шагом 0.2 при a=2.5, b=1.2.

Y =

bx

+

b2

a

 

a2 +x2

 

+x2

15

ЛАБОРАТОРНАЯ РАБОТА № 4 ОБРАБОТКА ЭЛЕМЕНТОВ ЧИСЛОВОЙ МАТРИЦЫ.

В данной работе рассмотрим решение задачи обработки числовых массивов вида:

a11

a21

...

am1

a12

a22

...

am2

.

.

.

.

a1n

a2n

 

amn

Программа должна предусматривать ввод элементов массива, их визуализацию и выполнение обработки.

Создать форму, изображенную на рис.1.

кол.строк кол.столбцов Ввод размеров матр.

Ввести в таблицу

Вычисление

Рис.1.

При выполнении данной работы следует использовать объект StringGrid для визуализации результатов ввода элементов матрицы и результатов вычислений.

Рассмотрим пример построения проекта программы вычисления средних арифметических значений по столбцам матрицы состоящей из n строк и m столбцов. Значения средних разместим в n+1 строке соответствующего столбца.

Разместим на форме объекты Label1 и Label2, которыми обозначим указатели “Кол.строк” и “Кол.столбцов”. Объекты Edit1 и Edit2 для ввода соответствующих параметров матрицы активизируем с помощью метода OnKeyPress (аналогично работе 3-3).

Кнопка “Ввод параметров матрицы” связывается с операциями определения размеров матрицы (свойства ColCount и объекта StringGrid). При определении количества строк (RowCount) следует предусмотреть лишнюю строку для записи средних значений по столбцу.

Объект Edit3 формирует элементы матрицы в виде массива, который следует описать глобальной переменной типа array.

Кнопка “Ввести в таблицу” реализует преобразование строки Edit3 в элемент массива вещественного типа и одновременно отображает строку в таблице.

Кнопка “Вычисление” реализует вычисление средних арифметических значений, их преобразование в строки и отображение в таблице.

Программа решения данной задачи будет выглядеть следующим образом:

unit Unit1; interface uses

16

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, OleCtrls, graphsv3, Menus;

type

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit;

Edit2: TEdit; SG1: TStringGrid; Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton;

procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure Button1Click(Sender: TObject);

procedure Edit3KeyPress(Sender: TObject; var Key: Char); procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

Form1: TForm1; n,m,i,j,code:integer; a,b:real; x:array[1..60,1..60] of real; xs:array[1..60] of real;

implementation

{$R *.DFM}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin

case key of '0'..'9','-',chr(8):;

'.': if pos('.',edit1.text)<>0 then key:=chr(0); chr(13): edit2.SetFocus;

else key:=chr(0) end; end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin

case key of '0'..'9','-',chr(8):;

'.': if pos('.',edit2.text)<>0 then key:=chr(0); chr(13): edit2.SetFocus;

else key:=chr(0) end; end;

17

procedure TForm1.Button1Click(Sender: TObject); begin

val(edit1.text,n,code);

val(edit2.text,m,code);

SG1.RowCount:=n+1;

j:=1;

SG1.ColCount:=m;

i:=1;

edit3.SetFocus;

end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char); begin

case key of '0'..'9','-',chr(8):;

'.': if pos('.',edit3.text)<>0 then key:=chr(0); chr(13): edit3.SetFocus;

else key:=chr(0) end; end;

procedure TForm1.Button2Click(Sender: TObject); begin

val(Edit3.text,x[j][i],code); SG1.Cells[j-1,i-1]:=Edit3.text; i:=i+1;

if(i > n) then begin

i:=1;

j:=j+1;

end;

if j > m then begin

j:=1;

i:=1;

end;

edit3.SetFocus;

end;

procedure TForm1.Button3Click(Sender: TObject); var s:string;

begin

for j:=1 to m do begin

xs[j]:=0.;

for i:=1 to n do xs[j]:=xs[j]+x[j][i]; xs[j]:=xs[j]/n;

str(xs[j]:8:3,s); SG1.Cells[j-1,n]:=s;

end;

end;

end.

Порядок выполнения работы.

18

1.Создать, откомпилировать и выполнить проект программы приведенной в описании (при выполнении прграммы использовать данные индивидуального задания).

2.Создать программу решения задачи по индивидуальному заданию.

Задание 1

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, элементы которой вычисляются следующим образом:

yij = xij xсрj

где xjср –среднее значение х по столбцу j.

20.00

0.51

2.00

2.68

20.00

0.86

10.00

2.74

18.00

2.50

11.00

2.77

25.00

0.40

7.00

2.76

96.00

1.70

5.00

2.72

50.00

1.20

6.00

2.80

44.00

0.32

22.00

2.72

36.00

0.41

19.00

2.72

17.00

2.30

10.00

2.75

Задание 2

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, элементы которой вычисляются следующим образом:

yij = xij xmaxj

где xjmax –максимальное значение х по столбцу j.

11.00

4.00

18.00

2.71

10.00

4.00

12.00

2.71

10.00

2.00

12.00

2.70

2.00

5.30

17.00

2.75

2.00

1.60

10.00

2.70

2.00

3.30

14.00

2.84

2.00

5.00

11.00

2.73

2.00

4.00

21.00

2.70

3.00

2.80

21.00

2.71

1.00

11.20

5.00

2.79

Задание 3

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, элементы которой вычисляются следующим образом:

yij = xij xminj

19

где xjmin –минимальное значение х по столбцу j.

6.00

12.00

8.00

2.76

7.00

13.00

6.00

2.74

5.00

11.00

9.00

2.79

5.00

11.00

3.00

2.82

11.00

12.00

2.00

2.81

12.00

14.00

5.00

2.83

15.00

16.00

9.00

2.83

11.00

11.00

2.00

2.87

12.00

12.00

3.00

2.83

12.00

13.00

4.00

2.84

Задание 4

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, элементы которой вычисляются следующим образом:

yij = xij

S

j

где Sj –среднеквадратическое отклонение по столбцу j.

 

 

 

Sj =

1

n

ср

)

2

 

 

 

 

 

(xij

xj

 

 

 

 

 

 

n i=1

 

 

 

 

xjср –среднее значение х по столбцу j.

 

 

 

 

 

 

2.00

14.00

1.00

2.87

 

 

 

 

 

 

1.00

7.00

11.00

2.77

 

 

 

 

 

 

1.00

6.00

18.00

2.74

 

 

 

 

 

 

8.00

4.00

14.00

2.77

 

 

 

 

 

 

12.00

3.00

23.00

2.70

 

 

 

 

 

 

11.00

2.00

17.00

2.72

 

 

 

 

 

 

10.00

3.00

15.00

2.72

 

 

 

 

 

 

11.00

1.00

35.00

2.74

 

 

 

 

 

 

79.00

1.00

18.00

2.71

 

 

 

 

 

 

70.00

1.00

14.00

2.70

 

 

 

 

 

 

27.00

1.00

19.00

2.71

 

 

 

 

 

 

26.00

1.00

39.00

2.68

 

 

 

 

 

 

Задание 5

Дана матрица xij, получить и вывести в таблицу новую матрицу yij, элементы которой вычисляются следующим образом:

yij = xij xср

где xср –среднее значение х по всей матрице.

20