A334(а). Вложенная сумма

Ссылка на оригинальную статью.

Задача

Вычислить:[latex]\sum \limits_{i=1}^{m}\sum \limits_{j=1}^{n}\frac{1}{i+j^2}[/latex] где [latex]m,n[/latex] — вводимые нами числа.

Тесты

Вход([latex]m,n[/latex]) Выход([latex]S[/latex])
40 20 13.6458
100 50 24.6458
200 25 31.7764
1000 282 89.8078

Код

Решение

Вводим два оператор цикла for, один вложенный в другой.
Задаем наше выражение, а затем суммируем его,
согласно циклу.

А58б. Нахождение значения функции

Ссылка на оригинальную статью
Задача. Дано действительное число $a$.Для функций $f(x)$, графики которых представлены на рис.
Вычислить $f(a)$

 

Решение.
На графике функции указано, чему равна $f(x)$ на каждом участке. В данной программе мы по очереди проверяем, какому из них принадлежит $f(a)$ и выбираем соответствующую формулу для расчёта $y$. Поскольку участков всего три, достаточно проверить, принадлежит ли точка к двум из них. Ели нет, то она, очевидно, лежит на третьем.

Решение на Try Haxe!

ML28. Объём тетраэдра

Cсылка на первоначальное решение тут

Задача

Найти объём тетраэдра три стороны которого образованы векторами
$\vec {a} = \left( x_a, y_a, z_a \right)$
$\vec {b} = \left( x_b, y_b, z_x \right)$
$\vec {c} = \left( x_c, y_c, z_c \right).$

Пояснительный рисунок

Пояснительный рисунок к ML28

Входные данные

Координаты векторов $\vec {a}$,$\vec {b}$, $\vec {c}$
Выходные данные
Объём тетраэдра

Входные данные Выходные данные
$x_a$ $y_a$ $z_a$ $x_b$ $y_b$ $z_b$ $x_c$ $y_c$ $z_c$ V
0 0 1 0 1 0 1 0 0 0.166667
3 6 3 1 3 -2 2 2 2 3
0 0 0 1 3 -2 2 2 2 0

Код программы

Решение задачи
Так как тетраэдр построен на векторах $\vec {a} = \left( x_a, y_a, z_a \right)$ $\vec {b} = \left( x_b, y_b, z_x \right)$ $\vec {c} = \left( x_c, y_c, z_c \right)$ для данной задачи оптимальным решением будет использовать следующие формулы:
$V=|Δ|/6$ где $V$ обьем тетраэдра а $Δ$ определитель матрицы.

Δ = \begin{vmatrix} x_a & y_a & z_a \\ -x_b & y_b & z_b \\ x_c & y_c & z_c
\end{vmatrix}
= $x_a \left(y_b z_c-z_b y_c \right)-x_b \left( y_a z_c-z_a y_c \right)+x_c \left( y_a z_b-z_a y_b \right)$

      Итоги:
  • если значение определителя матрицы равно нулю, то либо некоторые из заданных векторов коллинеарны, либо нулевые, либо все они лежат в одной плоскости. Во всех этих случаях тетраэдр не может существовать, и программа выведет 0;
  • если значение определителя не равно нулю, то программа вычислит объём тетраэдра. В случае, если определитель примет отрицательное значение, программа домножит значение объёма на −1, в результате чего оно станет положительным.

Решение на Try Haxe!

5.18. Исключительные ситуации (try-catch)

Ссылка на оригинал статьи тут
Haxe позволяет обрабатывать исключительные ситуации  используя синтаксис try/catch.

Если во время работы   try-выражения выполняется  throw , то генерируется исключительная ситуация, которая  может быть обработана любым последующим catch блоком. Эти блоки  состоят из

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

Haxe позволяет сгенерировать исключительную ситуацию (throw) и обработать (catch) любой тип значения. Он не ограничен типами, наследованными от класса exception или  класса error. Блоки catch проверяются сверху вниз, с первого чей тип поддерживается или чье вброшенное значение будет обработано.

Этот процесс имеет много общего с поведением унификации во время компиляции. ( ссылка).
Однако, поскольку проверка должна быть выполнена во время выполнения, существует несколько ограничений:

Тип Dynamic может обрабатывать любое исключение.

Пример моего кода

Try Haxe!