Документация Engee
Notebook

Математический анализ

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

Для начала, запустите подготовительную ячейку с кодом.

In [ ]:
using Latexify
using Symbolics
using Plots
using Printf
plotlyjs();
WARNING: using Plots.translate in module Main conflicts with an existing identifier.

Построение касательной линии

Найдите точку пересечения оси Y и прямой, являющейся касательной к синусоиде в точке $\pi/3$.

In [ ]:
a = pi/3

# График синусоиды
plot(sin, -pi:0.1:pi, framestyle = :origin, legend=false)

# Точки, графика, через которые должна пройти секущая
scatter!(sin, [a])

# Уравнение касательной в точке pi/3
касательная(x) = sin(a) + cos(a)*(x - a)

# График касательной в точке pi/3
plot!(касательная, -3:2)

# Точка, где секущая линия пересекает ось y
scatter!([0], [касательная(0)], c=:yellow)

# Аннотация результата (с парой пробелов в конце)
annotate!(0, касательная(0), text(@sprintf("%.3f", касательная(0))*"  ", :blue, :right, 8))
20.10 08:16:02.694 ⚠️  Framestyle :origin is not supported by Plotly and PlotlyJS. :zerolines was chosen instead.
Out[0]:
In [ ]:
println("Точка, в которой касательная пересекает ось ординат: (0, " * string(касательная(0)) * ")")
Точка, в которой касательная пересекает ось ординат: (0, 0.34242662818613967)

Символьное дифференцирование

Продифференцируйте функцию $z(t) = t + t^2$.

In [ ]:
@Symbolics.variables t
Df = Symbolics.Differential(t); # Создадим оператор дифференцирования
z = t + t^2; # Зададим функцию, производную которой нужно найти

# Продифференцируем функцию и упростим результат
expand_derivatives(Df(z))
Out[0]:
$$ \begin{equation} 1 + 2 t \end{equation} $$

Якобиан системы уравнений

Найдите якобиан системы линейных функций:

$$ \begin{array}{cc} f_1 = a_{11} x_1 + a_{12} x_2 + a_{13} x_3 - b_1 \\ f_2 = a_{21} x_1 + a_{22} x_2 + a_{23} x_3 - b_2 \\ f_3 = a_{31} x_1 + a_{32} x_2 + a_{33} x_3 - b_3 \end{array} $$

In [ ]:
@Symbolics.variables x_1 x_2 x_3 a_11 a_12 a_13 a_21 a_22 a_23 a_31 a_32 a_33 b_1 b_2 b_3

Symbolics.jacobian([ a_11*x_1 + a_12*x_2 + a_13*x_3 - b_1 ; 
                     a_21*x_1 + a_22*x_2 + a_23*x_3 - b_2 ;
                     a_31*x_1 + a_32*x_2 + a_33*x_3 - b_3 ], [x_1, x_2, x_3])
Out[0]:
$$ \begin{equation} \left[ \begin{array}{ccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \\ \end{array} \right] \end{equation} $$