Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.02.2017
Сообщений: 28
1

Произведение матрицы на вектор

17.06.2017, 14:14. Показов 613. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, помогите дорешать задачку по Delphi. Имеется Матрица и вектор.Необходимо написать процедуру, произведения матрицы на вектор, для кнопки "Решения". вот такой код только написал:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
unit Matr;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    lblTema: TLabel;
    lblMatr: TLabel;
    strngrdMatr1: TStringGrid;
    lblResult: TLabel;
    strngrdMatr2: TStringGrid;
    btnDecide: TButton;
    btnClear: TButton;
    btnExit: TButton;
    strngrdVector: TStringGrid;
    lbl1: TLabel;
    btn1: TButton;
    edtVvod1: TEdit;
    edtVVod2: TEdit;
    btn2: TButton;
    edt1: TEdit;
 
    procedure FormActivate(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure btnClearClick(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormActivate(Sender: TObject);
var
   i,j : Integer;
begin
 for i:=1 to strngrdMatr1.RowCount do
   strngrdMatr1.Cells[0,i]:=IntToStr(i);
 for j:=1 to strngrdMatr1.ColCount do
   strngrdMatr1.Cells[j,0]:=IntToStr(j);
 for i:=1 to strngrdMatr2.RowCount do
   strngrdMatr2.Cells[0,i]:=IntToStr(i);
 for j:=1 to strngrdMatr2.ColCount do
   strngrdMatr2.Cells[j,0]:=IntToStr(j);
end;
 
procedure TForm1.btnExitClick(Sender: TObject);
begin
Close;
end;
 
procedure TForm1.btnClearClick(Sender: TObject);
var
 k,l,i,j:Integer;
begin
for i:=1 to 4 do
for j:=1 to 4 do
begin
strngrdMatr1.Cells[i,j]:='';
strngrdMatr2.Cells[i,j]:='';
end;
begin
  for k:=1 to 4 do
  for l:=1 to 4 do
  begin
  strngrdVector.Cells[0,l]:='';
  end;
end;
begin
  edtVvod1.Text:='';
  edtVVod2.Text:='';
end;
begin
  edt1.Text:='';
end;
 end;
procedure TForm1.btn1Click(Sender: TObject);
var
  i,j:Integer;
begin
strngrdMatr1.ColCount:=StrToInt(edtVvod1.Text)+1;
strngrdMatr1.RowCount:=StrToInt(edtVvod2.Text)+1;
strngrdMatr2.ColCount:=StrToInt(edtVvod1.Text)+1;
strngrdMatr2.RowCount:=StrToInt(edtVvod2.Text)+1;
begin
 for i:=1 to strngrdMatr1.RowCount do
   strngrdMatr1.Cells[0,i]:=IntToStr(i);
 for j:=1 to strngrdMatr1.ColCount do
   strngrdMatr1.Cells[j,0]:=IntToStr(j);
 for i:=1 to strngrdMatr2.RowCount do
   strngrdMatr2.Cells[0,i]:=IntToStr(i);
 for j:=1 to strngrdMatr2.ColCount do
   strngrdMatr2.Cells[j,0]:=IntToStr(j);
     end;
end;
 
procedure TForm1.btn2Click(Sender: TObject);
var
 i,j,k:Integer;
begin
strngrdVector.RowCount:=StrToInt(edt1.Text)+1;
begin
  for k:=1 to strngrdVector.RowCount do
   strngrdVector.Cells[k,0]:=IntToStr(k);
end;
begin
  if strngrdVector.RowCount<>strngrdMatr1.RowCount then
  MessageDlg('Ошибка!', mtError,[mbCancel], 0);
end;
 end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2017, 14:14
Ответы с готовыми решениями:

Найти произведение матрицы (5х4) на вектор (4х1) для любых заданных вещественных компонентов матрицы и вектора.
Найти произведение матрицы (5х4) на вектор (4х1) для любых заданных вещественных компонентов...

Произведение матрицы на вектор
Здраствуйте, можете помочь с задачей пожалуйста. условие прикрепляю в сообщении.

Вектор Х - произведение элементов строк матрицы
Дана матрица А 5x5. Её элементы я вычислил по формуле. Теперь мне нужно найти вектор Х, который...

Вычислить и отнормировать вектор, полученный как произведение матрицы A на вектор B
Вычислить вектор , равный произведению матрицы А(15,15) и вектора B(b1,..b15) полученный вектор...

6
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.06.2017, 15:15 2
Цитата Сообщение от промком Посмотреть сообщение
Имеется Матрица и вектор.Необходимо написать процедуру, произведения матрицы на вектор
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
type vec=array of integer;
     mtr=array of array of integer;
 
procedure mult(x:mtr;y:vec;var z:vec;m,n:integer);
var i,j:integer;
begin
for i:=0 to m-1 do
 begin
  z[i]:=0;
  for j:=0 to n-1 do
  z[i]:=z[i]+x[i,j]*y[j];
 end;
end;
 
var a:mtr;
    b,c:vec;
    m,n:integer;
//зададим параметры таблиц
procedure TForm1.FormCreate(Sender: TObject);
begin
with stringgrid1 do
 begin
  fixedcols:=0;
  fixedrows:=0;
  colcount:=1;
  rowcount:=1;
  defaultcolwidth:=30;
 end;
with stringgrid2 do
 begin
  fixedcols:=0;
  fixedrows:=0;
  colcount:=1;
  rowcount:=1;
  defaultcolwidth:=30;
 end;
with stringgrid3 do
 begin
  fixedcols:=0;
  fixedrows:=0;
  colcount:=1;
  rowcount:=1;
  defaultcolwidth:=30;
 end;
end;
//создание матрицы и вектора
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
randomize;
val(Edit1.Text,m,i);
if(i<>0)or not(m in [2..10])then
 begin
  ShowMessage('Не верно введено количество строк');
  Edit1.Clear;
  Edit1.SetFocus;
  exit;
 end;
val(Edit2.Text,n,i);
if(i<>0)or not(n in [2..10])then
 begin
  ShowMessage('Не верно введено количество столбцов');
  Edit2.Clear;
  Edit2.SetFocus;
  exit;
 end;
Setlength(a,m,n);
Setlength(b,n);
Setlength(c,n);
StringGrid1.RowCount:=m;
StringGrid1.ColCount:=n;
StringGrid2.RowCount:=n;
StringGrid3.RowCount:=m;
for i:=0 to m-1 do
for j:=0 to n-1 do
 begin
  a[i,j]:=random(10);
  stringgrid1.Cells[j,i]:=inttostr(a[i,j]);
  b[j]:=random(10);
  stringgrid2.Cells[0,j]:=inttostr(b[j]);
 end;
end;
//умножение матрицы на вектор
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
mult(a,b,c,m,n);
for i:=0 to m-1 do
stringgrid3.Cells[0,i]:=inttostr(c[i]);
end;
1
Айлурофил
441 / 375 / 107
Регистрация: 27.05.2017
Сообщений: 2,155
Записей в блоге: 1
17.06.2017, 15:38 3
Цитата Сообщение от Puporev Посмотреть сообщение
Delphi
1
......
Хорошо бы ещё где-нибудь Finalize вставить.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.06.2017, 16:13 4
Ну пусть в конце допишет
Delphi
1
2
3
4
5
finalize(a);
finalize(b);
finalize(c);
end;
end.
Хотя я как-то это не пишу, эти массивы при закрытии программы вроде сами освобождают память.
Пишут что
вовсе необязательно по окончании использования динамического массива освобождать выделенную память, поскольку она освобождается автоматически при выходе из области действия переменной-массива
0
0 / 0 / 0
Регистрация: 03.02.2017
Сообщений: 28
17.06.2017, 16:15  [ТС] 5
Большое спасибо
0
0 / 0 / 0
Регистрация: 03.02.2017
Сообщений: 28
19.06.2017, 13:50  [ТС] 6
Puporev, Обязательно ли делать через Type? Нельзя ли просто через Stringgrid?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
19.06.2017, 13:57 7
промком, Это мое задание или твое?
Цитата Сообщение от промком Посмотреть сообщение
.Необходимо написать процедуру
Добавлено через 1 минуту
А вообще пишите как хотите, я Вам не нанимался и аванс не получал.
0
19.06.2017, 13:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2017, 13:57
Помогаю со студенческими работами здесь

Произведение матрицы на вектор
Задача: Написать программу, вычисляющую произведение матрицы на вектор (результат-вектор)....

Произведение матрицы на вектор
очень нужно ,пожалуйста Задача на Произведение динамической матрицы на вектор. и нахождение...

Произведение матрицы на вектор
Найти произведение матрицы на вектор.

Произведение матрицы A(N*N) на вектор b(b1,b2,.,bn)
Помогите решить, заранее огромное спасибо! Условие: Дана матрица А (N x N) и вектор b = (b1, b2,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru