Лабораторные работы №6 Delphi
.pdfЛАБОРАТОРНАЯ РАБОТА 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
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