~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ F74C9E5E69593E48C9FAEB7D4EA477F3__1716203640 ✰
Заголовок документа оригинал.:
✰ Index notation - Wikipedia ✰
Заголовок документа перевод.:
✰ Обозначение индекса — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Index_notation ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/f7/f3/f74c9e5e69593e48c9faeb7d4ea477f3.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/f7/f3/f74c9e5e69593e48c9faeb7d4ea477f3__translat.html ✰
Дата и время сохранения документа:
✰ 11.06.2024 08:30:44 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 20 May 2024, at 14:14 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Обозначение индекса — Википедия Jump to content

Обозначение индекса

Из Википедии, бесплатной энциклопедии

В математике и компьютерном программировании индексная запись используется для указания элементов массива чисел. Формализм использования индексов варьируется в зависимости от предмета. В частности, существуют разные методы обращения к элементам списка, вектора или матрицы , в зависимости от того, пишете ли вы официальную математическую статью для публикации или когда пишете компьютерную программу .

По математике [ править ]

В математике часто бывает полезно обращаться к элементам массива с помощью индексов. Индексы могут быть целыми числами или переменными . В целом массив принимает форму тензоров , поскольку их можно рассматривать как многомерные массивы. Особыми (и более знакомыми) случаями являются векторы (1d-массивы) и матрицы (2D-массивы).

Нижеследующее является лишь введением в концепцию: индексная нотация более подробно используется в математике (особенно при представлении и манипулировании тензорными операциями ). Подробности смотрите в основной статье.

Одномерные массивы (векторы) [ править ]

Вектор, рассматриваемый как массив чисел, записываемый как вектор-строка или вектор-столбец (в зависимости от удобства или контекста):

Обозначение индекса позволяет указывать элементы массива, просто записывая a i , где индекс i, как известно, принимает значения от 1 до n из-за n-мерностей. [1] Например, учитывая вектор:

тогда некоторые записи

.

Обозначения можно применять к векторам в математике и физике . Следующее векторное уравнение

также можно записать через элементы вектора (также известные как компоненты), то есть

где индексы принимают заданный диапазон значений. Это выражение представляет собой набор уравнений, по одному для каждого индекса. Если каждый из векторов имеет n элементов, что означает i = 1,2,… n , то уравнения явно имеют вид

Следовательно, индексная запись служит эффективным сокращением для

  1. представление общей структуры уравнения,
  2. применимо к отдельным компонентам.

Двумерные массивы [ править ]

Элементы матрицы A описываются двумя индексами или индексами.

Для описания массивов чисел в двух или более измерениях, например элементов матрицы, используется более одного индекса (см. также изображение справа);

Запись матрицы A записывается с использованием двух индексов, скажем, или a i , j i и j, с запятыми или без них для разделения индексов: ij , где первый нижний индекс — это номер строки, а второй — номер столбца. Сопоставление также используется как обозначение умножения; это может быть источником путаницы. Например, если

тогда некоторые записи

.

Для индексов больше 9 предпочтительнее использовать запись через запятую (например вместо , 312 ) 3,12 .

Матричные уравнения записываются аналогично векторным уравнениям, например:

с точки зрения элементов матриц (также известных как компоненты)

для всех значений i и j . Опять же, это выражение представляет собой набор уравнений, по одному для каждого индекса. Если каждая матрица имеет m строк и n столбцов, то есть i = 1, 2, …, m и j = 1, 2, …, n , то существует mn уравнений.

Многомерные массивы [ править ]

Обозначения позволяют четко обобщить многомерные массивы элементов: тензоры. Например,

представляющий собой набор многих уравнений.

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

В вычислительной технике [ править ]

В некоторых языках программирования индексная запись — это способ обращения к элементам массива. Этот метод используется, поскольку он наиболее близок к тому, как он реализован на языке ассемблера , при этом адрес первого элемента используется в качестве базы, а кратное (индекс) размера элемента используется для адресации внутри массива.

Например, если в области памяти компьютера, начиная с ячейки памяти с адресом 3000 (базовый адрес ), хранится массив целых чисел, и каждое целое число занимает четыре ячейки (байта), то элементы этого массива находятся в памяти. местоположения 0x3000, 0x3004, 0x3008,…, 0x3000 + 4( n − 1) (обратите внимание на нумерацию, начинающуюся с нуля ). В общем случае адрес i -го элемента массива с базовым адресом b и размером элемента s равен b + is .

Детали реализации [ править ]

На языке программирования C мы можем записать вышесказанное как *(base + i) (форма указателя) или base[i](форма индексации массива), что в точности эквивалентно, поскольку стандарт C определяет форму индексации массива как преобразование в форму указателя. По совпадению, поскольку сложение указателей является коммутативным, это позволяет использовать неясные выражения, такие как 3[base] что эквивалентно base[3]. [2]

Многомерные массивы [ править ]

Ситуация становится интереснее, когда мы рассматриваем массивы с более чем одним индексом, например, двумерную таблицу. У нас есть три возможности:

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

В C можно использовать все три метода. При использовании первого метода программист решает, как элементы массива располагаются в памяти компьютера, и предоставляет формулы для вычисления местоположения каждого элемента. Второй метод используется, когда количество элементов в каждой строке одинаково и известно на момент написания программы. Программист объявляет массив, скажем, состоящим из трех столбцов, написав, например, elementtype tablename[][3];. Затем можно обратиться к конкретному элементу массива, написав tablename[first index][second index]. Компилятор вычисляет общее количество ячеек памяти, занимаемых каждой строкой, использует первый индекс для поиска адреса нужной строки, а затем использует второй индекс для поиска адреса нужного элемента в строке. При использовании третьего метода программист объявляет таблицу массивом указателей, как в примере elementtype *tablename[];. Когда программист впоследствии указывает конкретный элемент tablename[first index][second index], компилятор генерирует инструкции для поиска адреса строки, указанной первым индексом, и использует этот адрес в качестве основы при вычислении адреса элемента, указанного вторым индексом.

void   mult3x3f  (  float   result  [][  3  ],   const   float   A  [][  3  ],   const   float   B  [][  3  ]) 
 { 
   int   i  ,   j  ,   k  ; 
    for   (  я   знак равно   0  ;   я   <   3  ;   ++  я  )   { 
     for   (  j   знак равно   0  ;   j   <   3  ;   ++  j  )   { 
       результат  [  я  ][  j  ]   =   0  ; 
        for   (  k   =   0  ;   k   <   3  ;   ++  k  ) 
         результат  [  i  ][  j  ]   +=   A  [  i  ][  k  ]   *   B  [  k  ][  j  ]; 
      } 
   } 
 } 

На других языках [ править ]

В других языках программирования, таких как Паскаль, индексы могут начинаться с 1, поэтому индексацию в блоке памяти можно изменить, чтобы она соответствовала схеме адресации «начало с 1», с помощью простого линейного преобразования — в этой схеме ячейка памяти i th элемент с базовым адресом b и размером элемента s равен b + ( i − 1) s .

Ссылки [ править ]

  1. ^ Введение в тензорный анализ: для инженеров и ученых-прикладников, Дж. Р. Тилдесли, Лонгман, 1975, ISBN   0-582-44355-5
  2. ^ Программирование на C++, Дж. Хаббард, Очерки Шаума, McGraw Hill (США), 1996, ISBN   0-07-114328-9
  • Программирование на C++ , Дж. Хаббард, Очерки Шаума, McGraw Hill (США), 1996, ISBN   0-07-114328-9
  • Тензорное исчисление , Д. К. Кей, Очерки Шаума, МакГроу Хилл (США), 1988, ISBN   0-07-033484-6
  • Математические методы в физике и технике , К. Ф. Райли, М. П. Хобсон, С. Дж. Бенс, издательство Кембриджского университета, 2010 г., ISBN   978-0-521-86153-3
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: F74C9E5E69593E48C9FAEB7D4EA477F3__1716203640
URL1:https://en.wikipedia.org/wiki/Index_notation
Заголовок, (Title) документа по адресу, URL1:
Index notation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)