Иллюстрированный самоучитель по Mathematica

         

Функции времени и дат — Calendar


В пакете расширений Miscellaneous есть ряд подпакетов, содержащих функции времени и даты. Так, в подпакете Calendar сосредоточены вычисления, относящиеся к календарным датам:

  • DayOfWeek [ {year, month, day} ] — вычисляет день недели по заданным году, месяцу и числу;
  • DaysBetween[{yearl,monthl,dayl},{year2, month2, day2} — вычисляет число суток между двумя датами:
  • DaysPlus [ {year, month, day}, n] — дает дату и-го дня после заданной даты.

Во всех этих функциях возможна опция Calendar->cal. Имеется также функция смены календаря:

  • CalendarChange [ {year, month, day}, call, cal2] — преобразует заданную дату из одного календаря в другой.

Примеры вычислений с датами:

<<Miscellaneous` Calendar`

DayOfWeek{[1988, 6, 23}]

DaysBetween[{1900, 1, 1}, {1901, 1,1}]

365

DaysPlus[{1900, 1, 1}, 366]

{1901, 1, 2}

DaysBetween[{1900, 1, 1},{1901, 1, 1},Calendar -> Julian]

366

Calendar-Change[{1992, 2, 29}, Gregorian, Julian]

{1992, 2, 16}

CalendarChange[{1992, 2, 29}, Gregorian, Islamic]

{1412, 8, 25}

CalendarChange[{1,1,1}, Islamic, Julian]

{622, 7, 16}

Города и расстояния — CityData и Geodesy  

В подпакете CityData можно найти функции, позволяющие найти координаты большинства крупных городов мира: CityData [city, datatype], CityData [city] иCityData[datatype]. Например:

<<Miscellaneous`CityData`

CityData["Montreal",

CityPosition]

{{45, 30}, {-73, -36}}

CityData["Washington"]

{{CityPosition, {{38, 53, 42}, {-77, -2, -12}}}}

 Координаты (широта и долгота) выдаются в формате {градусы, минуты} или {градусы, минуты, секунды}.

В этом же подпакете есть функции для вычисления расстояний между городами:

  • CityDistance [ "cityl", "pity"] — возвращает расстояние между двумя указанными городами;
  • CityDistance["cityl","city",CityDistanceMethod->Method] — возвращает расстояние между двумя указанными городами со спецификацией метода вычислений (по умолчанию используется функция SphericalDistance из подпакета Geodesy).

Пример вычисления расстояния между городами дан ниже:


CityDistance["Washington", "Montreal"]//N

786.915

Базу данных можно расширять, добавляя в нее информацию о новых городах: CityPosition[{"Champaign", "USA", "IL"}] = {{40, 7, 5},

{-88, -14, -48}};

 Убедимся, что информация действительно добавлена:

CityData["Champaign", CityPosition] {{40, 7, 5}, {-88, -14, -48}}

 Для добавления новых полей в базу данных можно использовать функцию AppendTc (см. урок 9). Например, добавим поле для хранения информации о населении:

AppendTo[$CityFields, CityPopulation]

 Теперь введем в базу данных информацию о населении Вашингтона:

CityPopulation[{"Washington", "USA", "DC"}] = 638000; Проверим результат, запросив всю имеющуюся в базе информацию об этом городе:

CityData["Washington"]

{{CityPosition, {{38, 53, 42}, {-77, -2, -12}}},

{CityPopulation, 638000}}

 Как видите, результат теперь включает новую информационную категорию —

CityPopulation. 

В подпакете Geodesy есть функции, вычисляющие расстояние между двумя точками с учетом выпуклости Земли:

  • SphericalDistance [posl,pos2] — вычисляет расстояние между двумя точками в предположении, что Земля — идеальный шар (сфера);
  • SpheroidalDistance [posl,pos2] — вычисляет расстояние между двумя точками в предположении, что Земля — приплюснутый шар (сфероид).
Примеры вычислений по этим функциям представлены ниже:

SphericalDistance[{0, 0}, {45,-45}] //N 6671.7

SpheroidalDistance[{0, 0}, {45, 45}] //N

6662.47 % - %%

-9.23014



Содержание раздела