Функции времени и дат — 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
Содержание раздела