dimensionof
От: igna Россия  
Дата: 24.08.08 06:48
Оценка:
Странно, что под размерностью массива даже гуру иногда понимают его длину:

Matthew Wilson, Imperfect C++ Practical Solutions for Real-Life Programming, 14.3. dimensionof()

Кто-нибудь из считающих так мог бы привести аргументы в пользу такого понимания?

25.08.08 13:08: Перенесено модератором из 'C/C++' — Кодт
Re: dimensionof
От: Alexander G Украина  
Дата: 24.08.08 10:21
Оценка:
Здравствуйте, igna, Вы писали:

I>Кто-нибудь из считающих так мог бы привести аргументы в пользу такого понимания?


Не считаю так. Но могу предположить один из источников путаницы:
В BASICах есть такие statement как Dim и ReDim для задания размерности, но они задают не только размерность, но и размеры. При этом ReDim вряд ли будет использована для изменения размерности, скорее только для изменения размеров.
Русский военный корабль идёт ко дну!
Re: кстати, _countof есть в <stdlib.h> MSVC (-)
От: Alexander G Украина  
Дата: 24.08.08 10:29
Оценка:
Русский военный корабль идёт ко дну!
Re: dimensionof
От: Sergey Chadov Россия  
Дата: 24.08.08 11:44
Оценка: 3 (2) +1
Здравствуйте, igna, Вы писали:


I>Кто-нибудь из считающих так мог бы привести аргументы в пользу такого понимания?


Возможно из того, что в математике под размерностью вектора понимается как раз количество его элементов. А к размерности типа вектор, таблица и т.д. скорее ближе понятие ранга тензора.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re: dimensionof
От: Qbit86 Кипр
Дата: 24.08.08 13:05
Оценка: 7 (4) +1
Здравствуйте, igna, Вы писали:

I>Странно, что под размерностью массива даже гуру иногда понимают его длину:


I>Matthew Wilson, Imperfect C++ Practical Solutions for Real-Life Programming, 14.3. dimensionof()


I>Кто-нибудь из считающих так мог бы привести аргументы в пользу такого понимания?


Пусть есть вектор {x, y, z}. Вам кажется, что длина этого вектора 3, а размерность 1. А математик скажет, что длина вектора — sqrt(x^2 + y^2 + z^2), а размерность — 3.
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: dimensionof
От: Кодт Россия  
Дата: 25.08.08 09:05
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:

SC>Возможно из того, что в математике под размерностью вектора понимается как раз количество его элементов. А к размерности типа вектор, таблица и т.д. скорее ближе понятие ранга тензора.


Ну да: есть размерность вектора данных, а есть размерность вектора координат (оно же — ранг тензора).
Если с вектором, матрицей или даже гиперкубом данных работают как с пространством, содержащим отдельные элементы — то нас больше интересуют координаты.
Если же мы работаем с этими векторами как едиными целыми, образующими векторное пространство...
Перекуём баги на фичи!
Re[2]: dimensionof
От: Кодт Россия  
Дата: 25.08.08 09:11
Оценка: 3 (1)
Здравствуйте, Qbit86, Вы писали:

Q>Пусть есть вектор {x, y, z}. Вам кажется, что длина этого вектора 3, а размерность 1. А математик скажет, что длина вектора — sqrt(x^2 + y^2 + z^2), а размерность — 3.

Математик спросит про тип пространства и определённое в нём расстояние. Манхеттенское там |x|+|y|+|z|, чёбышевское — max(|x|,|y|,|z|), и только евклидово — как выше.

А кстати: где-нибудь используются иные расстояния? Ну, скажем, кубическое: (|x|^3+...+|z|^3)^(1/3)
У манхеттенского (^1), евклидового (^2) и чёбышевского (lim ^+oo) есть физический смысл: это кратчайшие пути по квадратной сетке, по прямой и по квадратной сетке с диагоналями.
Перекуём баги на фичи!
Re[3]: dimensionof
От: Qbit86 Кипр
Дата: 25.08.08 09:20
Оценка:
Здравствуйте, Кодт, Вы писали:

К>А кстати: где-нибудь используются иные расстояния?


Ну, где-нибудь, наверное, используются, ты ж сам примеры написал. Надо определить расстояние между перекрёстками в городе — манхеттенская метрика с (обобщённо) октаэдрической окрестностью, надо определить число ходов шахматного короля из одной клетки в другую — чебышевская метрика с (обобщённо) кубической окрестностью.
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: dimensionof
От: Qbit86 Кипр
Дата: 25.08.08 09:24
Оценка: +1
Здравствуйте, Кодт, Вы писали:

К>Ну да: есть размерность вектора данных, а есть размерность вектора координат (оно же — ранг тензора).


Про ранг почти всё верно, но со словами вроде «тензор» надо поаккуратнее. Так, например, не любая двумерная матрица величин (не обязательно констант) является тензором второго ранга, не любой радиус-вектор является вектором-в-смесле-тензора-первого-ранга. Там ещё необходимо, чтобы при поворотах координаты преобразовывались определённым образом.
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: dimensionof
От: Sergey Chadov Россия  
Дата: 25.08.08 09:32
Оценка: 29 (1)
Здравствуйте, Кодт, Вы писали:


К>А кстати: где-нибудь используются иные расстояния? Ну, скажем, кубическое: (|x|^3+...+|z|^3)^(1/3)

Ну как же, очень часто используется http://en.wikipedia.org/wiki/Mahalonobis_distance
Re[3]: dimensionof
От: Qbit86 Кипр
Дата: 25.08.08 09:33
Оценка:
Здравствуйте, Кодт, Вы писали:

К>А кстати: где-нибудь используются иные расстояния? Ну, скажем, кубическое...


А, имелось в виду не одну из трёх перечисленных? Да, используются. У меня коллеги работают со звуком, у них там всякие метрики в разных пространствах используются. Никогда не понятно, что значит «ближе» в том или ином случае, приходится эксперементировать, метрики подбирать.
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: dimensionof
От: igna Россия  
Дата: 25.08.08 09:59
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:

SC>Возможно из того, что в математике под размерностью вектора понимается как раз количество его элементов.


Спасибо, теперь ясно, это путаница понятий "массив" и "вектор". Обрати внимание, как ты молча подменил мое "размерность массива" на "размерность вектора", и не ты один
Автор: Qbit86
Дата: 24.08.08
.

PS. Да, я знаю, STL использует имя vector для обозначения массива, но STL и set использует для обозначения упорядоченного множества, а не множества вообще, более того, по-мнению STL даже map (отображение) упорядочено, так что в смысле корректности названий STL не авторитет.
Re[2]: dimensionof
От: igna Россия  
Дата: 25.08.08 10:01
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Пусть есть вектор ...


Спасибо. Ответил здесь.
Автор: igna
Дата: 25.08.08
Re[3]: dimensionof
От: Sergey Chadov Россия  
Дата: 25.08.08 13:10
Оценка:
Здравствуйте, igna, Вы писали:


I>Спасибо, теперь ясно, это путаница понятий "массив" и "вектор". Обрати внимание, как ты молча подменил мое "размерность массива" на "размерность вектора", и не ты один
Автор: Qbit86
Дата: 24.08.08
.


А чем массив принципиально отличается от вектора? И тот и другой представляют собой набор однородных элементов.
Re[4]: dimensionof
От: igna Россия  
Дата: 25.08.08 13:17
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:

SC>А чем массив принципиально отличается от вектора? И тот и другой представляют собой набор однородных элементов.


Множество это тоже "набор однородных элементов".
Re[4]: dimensionof
От: Qbit86 Кипр
Дата: 25.08.08 13:19
Оценка: +1
Здравствуйте, Sergey Chadov, Вы писали:

SC>А чем массив принципиально отличается от вектора?


Массив — это структура данных. А вектор — это абстрактный тип данных, который чаще всего реализуется на базе структуры данных массив. Это всего лишь одна из интерпретаций терминов, не самая распространённая, наверное.

SC>И тот и другой представляют собой набор однородных элементов.


Абстрактный тип данных «вектор-некоторого-пространства» не обязан поддерживать операции типа push_back(), очевидного математического смысла они не несут. Абстрактный тип данных «вектор-как-инексируемый-набор-данных» может менять свойство Count (так его назовём, чтобы не путать с Length, Dimension и Rank).
Глаза у меня добрые, но рубашка — смирительная!
Re[4]: dimensionof
От: Кодт Россия  
Дата: 25.08.08 14:56
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Про ранг почти всё верно, но со словами вроде «тензор» надо поаккуратнее. Так, например, не любая двумерная матрица величин (не обязательно констант) является тензором второго ранга, не любой радиус-вектор является вектором-в-смесле-тензора-первого-ранга. Там ещё необходимо, чтобы при поворотах координаты преобразовывались определённым образом.


Да сперва нужно вообще предусмотреть эти повороты... Если мы ничего не вертим, то вся аналогия с тензорами — это структура данных.
Перекуём баги на фичи!
Re[5]: dimensionof
От: Sergey Chadov Россия  
Дата: 25.08.08 15:53
Оценка:
Здравствуйте, Qbit86, Вы писали:


Q>Абстрактный тип данных «вектор-некоторого-пространства» не обязан поддерживать операции типа push_back(), очевидного математического смысла они не несут. Абстрактный тип данных «вектор-как-инексируемый-набор-данных» может менять свойство Count (так его назовём, чтобы не путать с Length, Dimension и Rank).


Это все верно, но математика ничего не знает об абстрактных типах данных. Поэтому в принципе понятна точка зрения, что вектор — ближайший аналог массива. Хоття лично я бы макрос, вычисляющий длину массива dimensionof не назвал.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re: dimensionof
От: Трурль  
Дата: 26.08.08 06:40
Оценка:
Здравствуйте, igna, Вы писали:

I>Кто-нибудь из считающих так мог бы привести аргументы в пользу такого понимания?


a[10] имеет одну размерность — 10.
b[2,5] имеет две размерности — 2 и 5. Иногда говорят, что размерность b — 2x5.
Re[2]: dimensionof
От: igna Россия  
Дата: 26.08.08 09:35
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>a[10] имеет одну размерность — 10.

Т>b[2,5] имеет две размерности — 2 и 5. Иногда говорят, что размерность b — 2x5.

Спасибо, вот еще как оказывается можно мозгами раскинуть.

Из Википедии:

A tesseract is an example of a four-dimensional object. Whereas outside of mathematics the use of the term "dimension" is as in: "A tesseract has four dimensions," mathematicians usually express this as: "The tesseract has dimension 4," or: "The dimension of the tesseract is 4."

(http://en.wikipedia.org/wiki/Dimension)


То есть dimensionof(a) должна быть все же равна 1, а не 10 как у Вильсона (см. мой первый пост).
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.