Здравствуйте, уважаемые хабровчане! Расскажу о своём небольшом опыте работы в проекте, который был посвящён астрономии, и о математике, с которой пришлось повозиться. Дело было так - учился я в универе, изучал электронику, и после окончания курса по азам С++ , мне предложили подработку в одном проекте, где нужно было написать небольшую программу для моделирования рассеивания света звёздной пылью. Пришёл я на собеседование, которое проводили два доктора астрофизика, поспрашивали про математику и астрономию, поняли что не математик и уж тем более не астроном, но на работу взяли. Первым моим заданием было подтянуть математику и боль-мень освоить фортран, так как на фортране был софт одного известного учёного М.И.Мищенко (Michael I. Mishchenko). Этот софт определял оптические свойства пыли в зависимости от её концентрации, формы пыли, длины волны и индекса преломления света. Далее мне нужно было написать свою программу, которая моделирует рассеивание света. Модель простая - звезда, вокруг неё пылевое облако (параметры оптических свойств пылевого облака можно было рассчитать программой М.И.Мищенко), вдали от облака находится оптический телескоп. Моя программа моделирует полученное изображение на CCD матрице телескопа, а именно значение четырёх векторов Стокса, для каждого пикселя CCD матрицы. Метод, который использовался для моделирования рассеивания света - Монте-Карло. Я уговорил начальника - доктора астрофизики использовать C++, т.к. я не хотел писать её на фортране. Задача была не сложной, начальник выводил формулы и уравнения, я решал их численными методами и ваял программу. Упрощённая блок-схема программы, к которой я пришёл интуитивно, а после сравнил с одной публикацией (Three Monte Carlo programs of polarized light transport into scattering media: part I (Jessica C. Ramella-Roman, Scott A. Prahl, and Steve L. Jacques) ) о разных методах Монте-Карло для рассеивания света. И понял что моя совпадает с классическим методом Монте-Карло для поляризованного излучения. Из звезды вылетают пакеты фотонов (каждый пакет фотонов состоит из 1000 фотонов), которые летят в случайном направлении, после часть энергии рассеивается, в зависимости от направления пакета фотонов и оптических свойств пыли рассчитывается дальнейшее направление пакета фотонов. Каждое рассеивание фиксируется на CCD матрицу телескопа. И так много миллионов раз. Чем больше пакетов фотонов рассеяно, тем точнее изображение. Часть математики я вывел сам - это моделирование излучения пакетов фотонов из сферического источника света и моделирование проекции пылевого облака на плоскость телескопа.    Моделирование сферического источника света: - Декартовы координаты центра звезды.  - сферические координаты точки, на поверхности звезды, из которой будет испускаться пакет фотонов. - угол между нормалью к поверхности звезды и вектором эмиссии (испускания) пакета фотонов. - полярный и азимутальный углы эмиссии пакета фотонов. Программа генерирует углы  и , радиус звезды  - константа. Декартовы координаты точки эмиссии пакета фотонов рассчитываются по формуле (1.1)  Единичный вектор  рассчитывается по формуле (1.2)  Угол  между нормалью к поверхности звезды и вектором эмиссии  . Программа рассчитывает вектор эмиссии  по формуле (1.3). Поворачиваем вектор эмиссии  вокруг вектора нормали к поверхности звезды  на угол  . Используем матрицу поворота  , чтобы рассчитать вектор эмиссии   после поворота. Когда вектор  получен, рассчитываются полярный и азимутальный углы эмиссии    В результате мы получили пакет фотонов, который испускается из точки поверхности звезды с координатами  и летит в направлении которое задают полярный и азимутальный углы  . Моделирование проекции пылевого облака на плоскость телескопа: Центр системы координат  , центр сферического облака  , радиус сферического облака 39. (Это описание математической модели, в программе соответственно используются астрономические расстояния).  Координаты телескопа до поворотов: Первый поворот осуществляется вокруг оси которая параллельна Y оси , Телескоп поворачивается на угол  (полярный угол позиции телескопа): Первый поворот телескопа на угол  совершён. Далее будет произведён поворот вокруг оси параллельной Z оси  , на угол  (азимутальный угол позиции телескопа). Второй поворот телескопа на угол  совершён. Далее необходимо рассчитать единичный вектор для плоскости телескопа (для проекции облака на плоскость телескопа): Необходимо рассчитать константу для уравнения плоскости телескопа: Уравнение плоскости телескопа: Необходимо рассчитать рассчитать расстояния от точки облака до плоскости телескопа,  - точки облака Далее получаем точки проекции облака на плоскость телескопа: Для того чтобы правильно отобразить все точки облака и векторы Стокса на CCD матрице телескопе, необходимо выполнить обратные повороты. С математикой, которую выводил самостоятельно усё. Написал я программу , которая рассчитана  под линукс, используется C++11 concurency, распараллеливание на ядра процессора (сколько ядер, столько одновременно пакетов фотонов рассеиваются), запускал на кластере суперкомпьютера, у которого было 24 ядра. Получил результаты, но нужно было их как-то проверить. Начальник принял решение - написать другую программу, которая решит систему интегральных уравнений Фредгольма для простой модели со звездой, сферическим облаком вокруг неё и Рэлеевским рассеиванием света. Для этой задачи я решил использовать питон, из-за удобства библиотек (да и интересно было что-то на питоне написать).  Далее была необходима нормализация параметров, т.к. разные программы давали результаты в разных величинах измерения. Результаты совпали, но для большей убедительности результаты сравнили также с программой известного учёного Cornelis Dullemond RADMC3D. Там результаты тоже совпали.  Были конференции, прикладываю презентацию одной. А также видео другой (выступает мой бывший начальник) : И также написана научная публикация (это уже после окончания моей работы, её к сожалению выложить не могу). Ну вот - как-то так, поработал, написал свой первый софт, подтянул математику, мне понравилось :)