Pull to refresh
  • by relevance
  • by date
  • by rating

Приложение «Численные методы на C#»

Mathematics *
Этот пост в равной степени мог бы присутствовать в блогах «Я пиарюсь», «Open Source» или ".NET". Но так как программа, о которой я хочу рассказать, очень тесно связана с образованием, то я решил опубликовать его именно сюда.

Если кратко, то речь пойдет об open source проекте под названием «Numerical Methods on C#» — наборе реализаций численных методов на языке C#, в то же время позволяющая проводить расчеты с помощью написанного на WPF графического интерфейса.

Кому интересно — читаем ниже.
Читать дальше →
Total votes 58: ↑47 and ↓11 +36
Views 12K
Comments 33

Почему юнит-тесты не работают в научных приложениях

Website development *
В этой статье я хочу поделиться своим опытом разработки научных приложений, и рассказать, почему Test-Driven Development и юнит-тесты не являются панацеей, как принято считать в последнее время, по крайней мере с точки зрения нахождения программных ошибок. Почему же?
Читать дальше →
Total votes 97: ↑80 and ↓17 +63
Views 7.6K
Comments 60

Трудности поиска ошибок в научных приложениях

Website development *
Это продолжение заметки о том, почему юнит-тесты плохо работают в научных приложениях; и в этой статье я хочу рассказать о трудностях поиска ошибок и дебага (научных приложений), с которыми в свое время столкнулся, и многие из которых были удивительными для меня как веб-разработчика.
Читать дальше →
Total votes 49: ↑43 and ↓6 +37
Views 1.5K
Comments 59

Программирование молекулярной динамики

Programming *
Sandbox
Доброе время суток хабражители и хабражительницы. Сегодня хотел бы поделиться с вами своими попытками в программировании физических процессов. А конкретнее – попытке углубиться до молекулярных масштабов. Тема для разговора под хабракатом – молекулярная динамика.
Читать дальше →
Total votes 73: ↑72 and ↓1 +71
Views 22K
Comments 33

Вычисление числа Пи методом Монте-Карло

Algorithms *
Sandbox
Существует много способов вычисления числа Пи. Самым простым и понятным является численный метод Монте-Карло, суть которого сводится к простейшему перебору точек на площади. Суть расчета заключается в том, что мы берем квадрат со стороной a = 2 R, вписываем в него круг радиусом R. И начинаем наугад ставить точки внутри квадрата. Геометрически, вероятность P1 того, чтот точка попадет в круг, равна отношению площадей круга и квадрата:
P1=Sкруг / Sквадрата = πR2 / a 2 = πR2 / (2 R ) 2= πR2 / (2 R) 2 = π / 4 (1)
Выглядит это так:

image
Читать дальше →
Total votes 48: ↑21 and ↓27 -6
Views 64K
Comments 37

[Неочевидные алгоритмы очевидных вещей] Алгоритм 1. Корень квадратный

Delirium coding Algorithms *Mathematics *
Recovery mode
Серия постов [Неочевидные алгоритмы очевидных вещей] будет содержать алгоритмы действий, которые кажутся очевидными и простыми, но если задать себе вопрос «как это делается?», то ответ является далеко не очевидным. Разумеется, все эти алгоритмы можно найти в литературе. Под катом располагается алгоритм вычисления корня квадратного числа X.

Читать дальше →
Total votes 75: ↑41 and ↓34 +7
Views 28K
Comments 25

OpenFOAM с точки зрения программиста-физика

Intel corporate blog Programming *Mathematics *

В компании Intel разрабатывается довольно много ПО для моделирования различных физических процессов. В некоторых из них мы используем пакет OpenFOAM, и в этом посте я постараюсь дать краткое описание его возможностей.
Что такое OpenFOAM? Это, пользуясь термином Википедии, открытая (GPL) платформа для численнного моделирования — в первую очередь для моделирования, связанного с решением уравнений в частных производных методом конечных объемов, и в самую первую очередь — для решения задач механики сплошных сред.
КПДВ: эволюция двух несмешивающихся жидкостей разной плотности, изначально разделенных тонкой перегородкой (пример «lockExchange» из стандартной поставки OpenFOAM). Переходные цвета обозначают ячейки сетки, где присутствует доля и той, и другой жидкости (более точно: при симуляции используется метод объёма жидкости).

Читать дальше →
Total votes 45: ↑43 and ↓2 +41
Views 34K
Comments 18

Автоматическое дифференцирование «на пальцах»

Intel corporate blog Abnormal programming *Mathematics *
В компании Intel разрабатывают не только ПО для «внешних» потребителей — пишутся и программы, которые используются только внутри Intel. Среди них довольно много средств для численного моделирования различных физических процессов, протекающих при изготовлении процессоров — ведь именно последние и являются основной продукцией Интела. В этих программах, конечно, широко используются различные методы вычислительной математики и физики.
Вот некоторое время назад мне понадобилось программно решать одно уравнение методом Ньютона. Казалось бы, все просто, но для этого надо уметь вычислять производную левой части уравнения. Эта левая часть у меня была довольно сложная — даже просто вычисление ее значений в программе было разбросано по нескольким функциям, — и перспектива вычислять производную на бумажке меня не радовала. Перспектива воспользоваться каким-нибудь пакетом символьных вычислений меня радовала не больше — перенабирать все формулы, содержащие к тому же несколько частных случаев, далеко не очень приятно. Вариант вычислять производную численно как разность значений функции в двух соседних точках, деленную на соответствующее приращение независимой переменной, чреват потерей точности и вообще необходимостью подбирать подходящее приращение этой переменной.
Подумав некоторое время, я применил следующий подход. Потом я узнал, что он называется «автоматические дифференцирование», для него существует довольно обширная литература на английском, и ряд библиотек — но на русском я нашел только некоторые научные статьи про применение этого метода, и пост на Хабрахабре, в котором все рассказывается через смесь дуальных и комплексных чисел, и понять который с ходу, на мой взгляд, тяжело. С другой стороны, для понимания и практического применения автоматического дифференцирования не нужны никакие дуальные числа, и этот подход я тут и изложу.
Читать дальше →
Total votes 51: ↑50 and ↓1 +49
Views 28K
Comments 61

Критический взгляд на аттрактор Лоренца

Mathematics *

1. Об аттракторе Лоренца


image

Эдвард Нортон Лоренц (1917 – 2008) является основателем теории хаоса, очень популярной в науке на сегодняшний день. Он учился в колледже Дартмут штата Нью-Гемпшир США и Гарвардском университете в Кембридже. Во время Второй мировой войны служил метеорологом в авиационном корпусе армии США, потом до конца своих дней работал профессором в Массачусетском технологическом институте.

В 1963 году в журнале «Journal of the Atmospheric Sciences» вышла его статья «Deterministic Nonperiodic Flow» (русский перевод: Лоренц Э. Детерминированное непериодическое течение // Странные аттракторы. — М.: Мир, 1981, с. 88-117), заложившая не только основы теории хаоса, но и изменившая представления о моделировании погодных явлений. В этой работе из системы уравнений Навье-Стокса впервые была получена нелинейная автономная система обыкновенных дифференциальных уравнений третьего порядка (динамическая система), описывающая движение воздушных потоков в плоском слое жидкости постоянной толщины при разложении скорости течения и температуры в двойные ряды Фурье с последующем усечением до первых-вторых гармоник:
Читать дальше →
Total votes 45: ↑41 and ↓4 +37
Views 44K
Comments 31

Задача, от которой отказался Ричард Фейнман

Programming *Mathematics *
Sandbox
В замечательной книге «Вы, конечно, шутите, мистер Фейнман!» есть эпизод, который привел меня к небольшой практической работе, что и послужило основой для создания данной статьи. А началось все с этого момента:
” Пол проходит по столовой, где все просто стоят на ушах. “Эй, Пол! – кричат они. – Фейнман – просто супер! Мы даем ему задачу, которую можно сформулировать за десять секунд, и он за одну минуту дает ответ с точностью до 10 процентов. Дай ему какую-нибудь задачу!” Почти не останавливаясь, он говорит: “Тангенс 10 градусов в сотой степени”. Я влип: для этого нужно делить на число пи до ста десятичных разрядов! Это было безнадежно!”.
Читать дальше →
Total votes 93: ↑67 and ↓26 +41
Views 58K
Comments 33

Дуальные числа в бизнесе или как оценить чувствительность решения к изменению начальных условий

Haskell *Mathematics *
За применение в бизнесе мнимых величин уже дали премию. Теперь интересно что-нибудь поиметь с дуальных.
Дуальное число — это расширение поля действительных чисел (или любого другого, например комплексных) вида a + εb, где a и b — числа из исходного поля. При этом полагается, что ε ε = 0.
Оказывается, у таких странных чисел есть практическое приложение.

Основным полезным свойством дуальных чисел является
f(a + εb) = f(a) + εf'(a)b.
Когда у нас есть формула для f(x), получить производную f'(x) труда не составит. Но часто f(x) доступно только в виде алгоритма — например как решение специальным образом составленной системы линейных уравнений. Запустив алгоритм с исходными данными, в которые добавлена ε мы получим результат и значение производной по одному из параметров.
Немного матана с примерами на Haskell
Total votes 19: ↑17 and ↓2 +15
Views 9.9K
Comments 15

Динамическая система Лоренца и вычислительный эксперимент

C++ *C *Mathematics *
image

Данный пост является продолжением моей статьи [1] на Хабрахабре об аттракторе Лоренца. Здесь рассмотрим метод построения приближенных решений соответствующей системы, уделив внимание программной реализации.

Динамической системой Лоренца является автономная система обыкновенных дифференциальных уравнений третьего порядка

image

где image, r и b являются положительными числами. Для исследования поведения решений системы обычно берут классические значения параметров системы, т.е.

image

Как было отмечено в статье [1], в этом случае в системе (1) имеет место неустойчивость ее решений на аттракторе. По сути, это делает некорректным применение классических численных методов на больших отрезках времени (а на таких отрезках и строятся предельные множества динамических систем). Одним из вариантов преодоления этой проблемы является переход к высокоточным вычислениям, но такой подход ставит исследователя в жесткие рамки: во-первых, малая степень свободы для уменьшения ошибки (изменение величины шага image интегрирования и точности представления вещественного числа для управления вычислительным процессом), во-вторых, большой объем вычислений при очень малых image.
Читать дальше →
Total votes 33: ↑29 and ↓4 +25
Views 22K
Comments 20

Гарантии получения корректного результата при расчете динамических систем

Mathematics *
Sandbox
Прочитав статью «Динамическая система Лоренца и вычислительный эксперимент», проверил расчеты с помощью аналитически-численного метода [1].

Результаты расчета на фазовой плоскости z(x):


И y(x):


Кажется, что кривые замкнуты, но давайте рассмотрим результат поподробнее.
Подробнее
Total votes 21: ↑15 and ↓6 +9
Views 5.3K
Comments 31

Как не стоит вычислять матричную экспоненту

Algorithms *Mathematics *
Sandbox
Пост написан под влиянием поста пользователя pchelintsev_an.

В данной статье я постараюсь рассказать, с какими вычислительными трудностями можно столкнуться, если пойти по «наивному» пути вычисления матричной экспоненты. Статья может быть полезна тем, кто хотел бы познакомиться с вычислительной математикой, но уже знаком с такими понятиями как система обыкновенных дифференциальных уравнений и задача Коши. Эксперименты проводились с использованием системы GNU Octave.
Что еще за матричная экспонента
Total votes 47: ↑45 and ↓2 +43
Views 28K
Comments 18

Метод конечных элементов на примере уравнения Пуассона

Mathematics *
Sandbox
В данной статье мне хотелось бы изложить реализацию метода конечных элементов на примере уравнения Пуассона. Рассмотрим задачу:

image

с однородным краевым условием

image

где
image

image

image


Требуется найти функцию , решающую заданное уравнение.
Читать дальше →
Total votes 27: ↑24 and ↓3 +21
Views 33K
Comments 7

Об ограничениях в применимости метрики Минковского в цифровой обработке данных

Image processing *C# *Mathematics *
Recovery mode
Как-то давным-давно я наткнулся на вот статью на хабре, в которой народ пишет как все круто и как хорошо работает метрика Минковского. Время шло и шло, а я все хотел и хотел. Наконец подвернулась задача к которой я захотел применить сие чудо, и вот что вышло:

image
Читать дальше →
Total votes 28: ↑18 and ↓10 +8
Views 19K
Comments 11

sin 1° на калькуляторе

Entertaining tasks Programming *Algorithms *Mathematics *
Важное уточнение — калькулятор обычный, без кнопки sin. Как в бухгалтерии или на рынке.

Калькулятор Casio

Под катом три разных варианта решения из разных эпох, от древнего Самарканда до США времён холодной войны.
Читать дальше →
Total votes 103: ↑100 and ↓3 +97
Views 76K
Comments 44

Метод Finite Volume — реализация на примере теплопроводности

Algorithms *Mathematics *
В статье описывается реализация известного метода конечных объемов для численного решения уравнений в частных производных.Используется разбиение области на любые стандартные элементы(конечные объемы) — треугольники, четырехугольники и т.д.Метод визуализации результатов расчетов также самописный.


Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views 25K
Comments 14

В туннеле под моим домом я встречаюсь с эльфами. Они мне и дают советы, как сделать суперкомпьютеры лучше

Edison corporate blog IT career Biography of geeks Supercomputers
«Если вы пашете поле, что вы предпочтете: двух сильных быков или 1024 курицы?»
— Сеймур Крэй


Сеймур Крэй, отец «суперкомпьютеров», создатель индустрии суперкомпьютеров, инженер-электронщик и математик.

Ачивки Сеймура Крэя:

  • 1958 — За год собрал прототип 6-битного суперкомпьютера из бракованных транзисторов.
  • 1960 — Первая машина на германиевых транзисторах вместо ламп (CDC 1604).
  • 1963 — Обошел IBM в 3 раза по производительности и на 40% по цене (CDC 6600).
  • 1971 — Чтобы не увольнять 4 инженеров отказался от своей зарплаты.
  • 1975 — Первый коммерчески успешный векторный суперкомпьютер. Применение архитектуры команд «регистр-регистр» (Cray-1).
  • Дизайн суперкомпьютера в виде дивана (Cray-1).
  • 1988 — 500 MHz (Cray 3).
  • Нашел замену кремнию — арсенид галлия (GaAs) — в шесть раз быстрее кремниевых микросхем.
  • 1994 — 1 GHz (Cray-4).
  • Чтобы не отвлекаться на посещение Белого Дома и встречу с Президентом США, он отказался от чести быть удостоенным Национальной медалью США в области технологий и инноваций.
  • Выкопал собственный противоядерный Vault13 c запасом топлива и воды на 4 года.

С днем рождения, Сеймур Крэй!


Total votes 47: ↑45 and ↓2 +43
Views 18K
Comments 29

Хаос внутри судоку

Algorithms *Mathematics *

Многие из вас наверняка знакомы с такой головоломкой, как судоку. Возможно, даже реализовывали программу для автоматического решения. На хабре тема судоку обсуждалась уже множество раз, и, как показывает практика, практически любой способ автоматического нахождения ответа в итоге сводится к направленному перебору. И это вполне естественно, ведь даже ручные решения придерживаются тех же принципов. Но что, если поступить иначе?
В данной статье я рассмотрю один очень занятный метод, предложенный в 2012 году, основанный на строго математическом подходе. Программная реализация прилагается.


Осторожно, тут много формул
Total votes 56: ↑56 and ↓0 +56
Views 20K
Comments 26