Санкт-Петербургский государственный горный институт им.Г.В.Плеханова
(технический университет)
Тема. Разработка программ для вычисления матричного выражения в среде TURBO PASCAL
Выполнил:студент группы ГГ-02 / /
(должность) (подпись) (ф.и.о.)
Проверил: / Н /
(должность) (подпись) (ф.и.о.)
Дата:______________
2003
В данном РГЗ разработана программа на языке ТР для вычисления заданного матричного выражения двумя способами: непосредственно и с использованием подпрограмм.
Annotation
In this CGT I made a program based on TP.Program is for calculation the given matrix with a help of two methods: straightly and with using a program.
Задача, поставленная в данном РГЗ выполнена с помощью языка программирования TURBO PASCAL.
Этот язык программирования был создан в 70х годах швейцарским ученым Н.Вартом. В паскале сконцентрированны многие лучшие черты языков – предшественниковю Сравнение этого языка с более простыми языками вроде бейсика показывает, что текст алгоритма в виде программы на бейсике содержит больше подробностей о действиях вычислительной машины, а текст на паскале яснее выражает математическую сущность алгоритма. Пскаль в сравнении с бейсиком является языком программирования более высокого уровня.
Цель работы. Получить навыки работы с массивами и подпрограммами; познакомиться с вводом и выводом данных из файла.
Задание.
1.Разработать программы на языке TURBO PASCAL для вычисления матричного выражения 4А33*ВТ23+С32 двумя способами: непосредственно и с использованием подпрограмм, реализующих стандартные матричные операции. Ввод исходных матриц производить из заранее созданного файла.Исходные матрицы задать самостоятельно но одинаково в обоих способах.
2.Ввести разработанные программы в компьютер, отладить их и сохранить в личной папке.
3.Тестовый пример выполнить с помощью процессора Excel.
Программа 1(вычисление матричного выражения непосредственно).
program lr8_1;
type
mas1=array[1..3,1..3] of real;
mas2=array[1..2,1..3] of real;
mas3=array[1..3,1..2] of real;
var
a:mas1;b:mas2;bt,p,c,q:mas3;
k,m,n,i,j:integer;sum:real;f,f1,f2:text;
begin
assign(f,'A.dat');
assign(f1,'B.dat');
assign(f2,'C.dat');
reset(f);
read(f,m,n);
for i:=1 to m do
for j:=1 to n do
read(f,a[i,j]);
close(f);
writeln('Матрица А');
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:5:1);
writeln;
end;
reset(f1);
read(f1,m,n);
for i:=1 to m do
for j:=1 to n do
read(f1,b[i,j]);
close(f1);
for i:=1 to m do
for j:=1 to n do
bt[j,i]:=b[i,j];
writeln('Матрица В');
for i:=1 to m do
begin
for j:=1 to n do
write(b[i,j]:5:1);
writeln;
end;
reset(f2);
read(f2,m,n);
for i:=1 to 3 do
for j:=1 to 2 do
read(f2,c[i,j]);
close(f2);
writeln('Матрица С');
for i:=1 to m do
begin
for j:=1 to n do
write(c[i,j]:5:1);
writeln;
end;
begin
for i:=1 to 3 do
for j:=1 to 2 do
begin
sum:=0;
for k:=1 to 3 do
sum:=sum+a[i,k]*bt[k,j];
p[i,j]:=4*sum;
end;
end;
writeln;
writeln('Искомая матрица ');
for i:=1 to m do
begin
for j:=1 to n do
begin
q[i,j]:=p[i,j]+c[i,j];
write(q[i,j]:5:1,' ');
end;
writeln;
end;
end.
Программа 2(вычисление матричного выражения с использованием подпрограмм).
program rgz_2;
type
mas1=array[1..3,1..3] of real;
mas2=array[1..2,1..3] of real;
mas3=array[1..3,1..2] of real;
var
a:mas1;b:mas2;bt,d,c,l:mas3;
m,n,i,j:integer;f,f1,f2:text;
procedure mout1(p:mas1;m,n:integer);
var
i,j:integer;
begin for i:=1 to m do
begin
for j:=1 to n do
write(p[i,j]:7:1);
writeln;
end;
end;
procedure mout2(p:mas2;m,n:integer);
var
i,j:integer;
begin for i:=1 to m do
begin
for j:=1 to n do
write(p[i,j]:7:1);
writeln;
end;
end;
procedure mout3(p:mas3;m,n:integer);
var
i,j:integer;
begin for i:=1 to m do
begin
for j:=1 to n do
write(p[i,j]:7:1);
writeln;
end;
end;
procedure tr(p:mas2;m,n:integer;var q:mas3);
var
i,j:integer;
begin
for i:=1 to 2 do
for j:=1 to 3 do
q[j,i]:=p[i,j];
end;
procedure mult(p:mas1;q:mas3;m,y,n:integer;var r:mas3);
var
i,j,k:integer;
sum:real;
begin
for i:=1 to m do
for j:=1 to n do
begin sum:=0;
for k:=1 to y do
sum:=(sum+p[i,k]*q[k,j]);
r[i,j]:=4*sum;
end;end;
procedure summa(p,q:mas3;m,n:integer;var r:mas3);
var i,j:integer;
begin
for i:=1 to m do
for j:=1 to n do
r[i,j]:=p[i,j]+q[i,j];
end;
begin
assign(f,'A.dat');
assign(f1,'B.dat');
assign(f2,'C.dat');
reset(f);
read(f,m,n);
for i:=1 to m do
for j:=1 to n do
read(f,a[i,j]);
close(f);
writeln('Матрица А');
mout1(a,m,n);
reset(f1);
read(f1,m,n);
for i:=1 to m do
for j:=1 to n do
read(f1,b[i,j]);
close(f1);
writeln('Матрица B');
mout2(b,m,n);
reset(f2);
read(f2,m,n);
for i:=1 to m do
for j:=1 to n do
read(f2,c[i,j]);
close(f2);
writeln('Матрица C');
mout3(c,m,n);
tr(b,m,n,bt);
writeln('Матрица BT');
mout3(bt,m,n);
mult(a,bt,m,m,n,d);
writeln('Матрица D=4*A*BT');
mout3(d,m,n);
summa(d,c,m,n,l);
writeln('Матрица L=4*A*BT+C');
mout3(l,m,n);
end.
Результаты работы.
Программа1
Матрица А
2.0 1.0 0.0
3.0 -2.0 4.0
8.0 2.0 1.0
Матрица B
1.0 2.0 3.0
4.0 5.0 6.0
Матрица C
2.0 3.0
4.0 5.0
8.0 9.0
Искомая матрица
18.0 55.0
48.0 109.0
68.0 201.0
Программа2
Матрица А
2.0 1.0 0.0
3.0 -2.0 4.0
8.0 2.0 1.0
Матрица B
1.0 2.0 3.0
4.0 5.0 6.0
Матрица C
2.0 3.0
4.0 5.0
8.0 9.0
Матрица BT
1.0 4.0
2.0 5.0
3.0 6.0
Матрица D=4*A*BT
16.0 52.0
44.0 104.0
60.0 192.0
Матрица L=4*A*BT+C
18.0 55.0
48.0 109.0
68.0 201.0
В результате проведенной работы была успешно решена поставленная
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.