Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Нормирование матрицы

Автор: moldis 17.03.2009 21:35

Вот пытаюсь решить такую задачку :

Составить процедуру MatNorm(A,n,m,ires), которая осуществляет нормирование матрицы A размерности (m х n). В переменную ires логического типа необходимо занести значение true, если операция завершена благополучно, и значение false, если хотя бы в одной из строк матрицы A содержатся только нулевые элементы.

Не пойму как нормировать матрицу? Подскажите кто нибудь, достаточно теории.
Заранее спасибо!

Автор: passat 17.03.2009 21:52

Определителем?

Автор: moldis 17.03.2009 22:43

куда копать?
Если можешь скинь сссылки)

Автор: moldis 17.03.2009 23:55

так и не понял как определитель может мне помочь...(

Автор: Айра 18.03.2009 1:35

http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%B0#.D0.9C.D0.B0.D1.82.D1.80.D0.B8.D1.87.D0.BD.D0.B0.D1.8F_.D0.BD.D0.BE.D1.80.D0.BC.D0.B0
не уверена, что оно..

Автор: moldis 18.03.2009 2:14

Норма матрицы, тоже думаю не поможет...
Неужели никто не делал такую задачу?
sad.gif

Автор: volvo 18.03.2009 2:53

Нормирование матрицы? Поэлементно:

mx[i, j] := (mx[i, j] - minvalue) / (maxvalue - minvalue);
, где minvalue и maxvalue - соответственно минимальное и максимальное значение в матрице... В результате нормирования все элементы матрицы лежат в интервале 0 .. 1. Тебе это надо?

Автор: moldis 18.03.2009 3:17

Цитата(volvo @ 17.03.2009 22:53) *

Нормирование матрицы? Поэлементно:
mx[i, j] := (mx[i, j] - minvalue) / (maxvalue - minvalue);
, где minvalue и maxvalue - соответственно минимальное и максимальное значение в матрице... В результате нормирования все элементы матрицы лежат в интервале 0 .. 1. Тебе это надо?


СПАСИБО! огромное! Я думаю это smile.gif
Не подскажешь ссылку где теорию почитать можно?

Автор: volvo 18.03.2009 14:47

Теорию чего? Математики? smile.gif Это ж элементарно, чтобы привести набор значений к интервалу 0 .. 1 надо сначала изо всех значений вычесть минимум, тогда все они будут в интервале 0 .. (max - min). Что теперь надо сделать, чтобы этот интервал стал 0 .. 1? Правильно, разделить на (max - min). Какая еще теория нужна?

Автор: passat 18.03.2009 16:55

Тогда решение может быть проще. Саму-то нормированную матрицу ведь выводить не нужно?
Минимальный элемент матрицы должен быть первым в строке и строка должна состоять из одинаковых символов. Т.е. просматриваем по строкам, прерываем просмотр, если найдено первое несовпадение с первым элементом строки. Максимальный элемент искать вообще необязательно - даже вредно: какая разница, на что Вы разделите ноль, зато деления на ноль никогда не будет. smile.gif

На больших не специально подобранных матрицах выигрыш будет очень существенным.

Автор: volvo 18.03.2009 17:16

Цитата
Тогда решение может быть проще.
Правда? Ну, попробуй... Вот тебе матрица:
6 5 4 3
7 4 3 2
8 3 2 1
9 2 1 3
Не специально подобранная, заметь, случайная. Хочешь - еще десяток приведу. Могу сгенерировать рандомно. Отнормируй ее своим алгоритмом. Результат будет какой?

Цитата
Минимальный элемент матрицы должен быть первым в строке и строка должна состоять из одинаковых символов.
Ох ты, умный какой!!! Так это и есть СПЕЦИАЛЬНО подобранная матрица. Или ты в задании увидел такое условие? Что за люди - как алгоритм подсказать - так их нет, а как какую-то муть написать - это всегда пожалуйста.

Я жду результата нормирования моей матрицы твоим алгоритмом.

Автор: passat 18.03.2009 18:02

5 4 3 2
6 3 2 1
7 3 2 1
8 2 0 3

Нерпавильно? Но ведь матрицу и НЕ НАДО нормировать. Достаточно проверить, подлежит ли матрица нормированию: не будет ли после нормирования строк, состоящих из одних нулей.

Т.е. мой алгоритм выполнит задачу за 4 шага. Нормирование потребует минимум одного полного прохода и опять же просмотра хотя бы одной строки.

Я Вам другой вариант матрицы предложу:
1 1
1 1

Возможно, что-то пропустил.

Автор: Lapp 19.03.2009 11:45

Цитата(passat @ 18.03.2009 14:02) *
Нерпавильно? Но ведь матрицу и НЕ НАДО нормировать. Достаточно проверить,
...
Возможно, что-то пропустил.
Явно пропустил. Из двух, ты почему-то увидел только последнее предложение (выделяю болдом пропущенное):
Цитата(moldis @ 17.03.2009 17:35) *
Составить процедуру MatNorm(A,n,m,ires), которая осуществляет нормирование матрицы A размерности (m х n). В переменную ires логического типа необходимо занести значение true, если операция завершена благополучно, и значение false, если хотя бы в одной из строк матрицы A содержатся только нулевые элементы.


Я немного сомневаюсь, что речь идет о нормировании описанным выше способом.. Иначе зачем во втором из процитированных мной предложений противопоставлять благополучное завершение и строку из нулевых элементов?.. blink.gif
Нормировки могут быть разными (как и нормы). Вот http://dxdy.ru/topic1699.html рассматривается аналогичная задача. Смущает только то, что в условии moldis матрица не квадратная..