数学分析
在本例中,我们将演示解决数学分析领域的几个简单问题--画切线、符号微分方程和求方程组的雅各布。
首先,启动预备代码单元。
In [ ]:
Pkg.add(["Latexify", "Symbolics"])
In [ ]:
using Latexify
using Symbolics
using Plots
using Printf
plotlyjs();
绘制切线
在 处找到 Y 轴与正弦波相切线的交点。
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))
Out[0]:
In [ ]:
println("Точка, в которой касательная пересекает ось ординат: (0, " * string(касательная(0)) * ")")
符号微分
微分函数 。
In [ ]:
@Symbolics.variables t
Df = Symbolics.Differential(t); # Создадим оператор дифференцирования
z = t + t^2; # Зададим функцию, производную которой нужно найти
# Продифференцируем функцию и упростим результат
expand_derivatives(Df(z))
Out[0]:
方程组的雅各布
求线性函数系的雅各布:
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]: