Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2010, 13:56   #1
Родик
Новичок
Джуниор
 
Регистрация: 12.03.2010
Сообщений: 2
По умолчанию как работать с "соседями" в матрице?

Соседями элемента Aij в матрице N на N назовем элементы Akl с i-1<=k<=i+1, j-1<=l<=j+1, (k,l)<>(i,j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Матрица генерируется с помощью датчика псевдослучайных чисел. Матрица квадратная, поэтому вводим только один размер.

не могу создать новую матрицу, где "каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы".

Вот начало кода где формируется матрица:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,n,k,l:integer;
aij:array of array of double;
akl:array of array of double;
s:string;

begin
n:=strtoint(edit1.Text);
memo1.Clear;
setlength(aij,n);
setlength(akl,n);

for i:=0 to n-1 do
setlength(aij,n);
for i:=0 to n-1 do
setlength(akl,n);

//////////////////////////////////////////////////////////
for i:=0 to n-1 do
for j:=0 to n-1 do
begin
aij[i,j]:=-15+30*random;
aij[i,j]:=RoundTo(aij[i,j],-2);
end;
//////////////////////////////////////////////////////////
memo1.Lines.Add('matrix');
for i:=0 to n-1 do
begin
s:='';
for j:=0 to n-1 do
s:=s+floattostr(aij[i,j])+' ';
memo1.Lines.Add(s);
end;

//////////////////////////////////////////////////////////
for i:=0 to n-1 do
for j:=0 to n-1 do

aij:=nil;
akl:=nil;

end;
initialization
randomize;

end.
Родик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц