День 4 Летней школы Julia
作者
In [ ]:
]add Symbolics
In [ ]:
using Symbolics
Обычные символы
In [ ]:
@variables x
Out[0]:
In [ ]:
x * x + 1
Out[0]:
In [ ]:
@variables m c
Out[0]:
In [ ]:
e = eval( Meta.parse( "m * c^2"))
Out[0]:
In [ ]:
m = 1
Out[0]:
In [ ]:
e = eval( Meta.parse( "m * c^2"))
Out[0]:
Уравнения
In [ ]:
@variables e m c
e ~ m * c^2
Out[0]:
In [ ]:
e
Out[0]:
In [ ]:
Symbolics.get_variables( e ~ m * c^2 )
Out[0]:
Неравенства
In [ ]:
m > 3
Out[0]:
In [ ]:
m >= 4
Out[0]:
In [ ]:
m ≥ 5
Out[0]:
Векторы и матрицы
In [ ]:
@variables a b c x
Out[0]:
In [ ]:
M = Symbolics.variables( "x", 1:3, 3:6 )
Out[0]:
In [ ]:
M[1,2]
Out[0]:
In [ ]:
@variables A[1:5, 1:3]
Out[0]:
In [ ]:
A[2,1]
Out[0]:
In [ ]:
@variables B[1:3, 1:3]
A * B
Out[0]:
In [ ]:
collect( A * B )
Out[0]:
Преобразование выражений
In [ ]:
@variables x y
ff = x^2 + y^3 - x*y
Out[0]:
In [ ]:
substitute( ff, x => 2 )
Out[0]:
In [ ]:
@variables x
p = ((2-x)*(5-x)*(7-x))
Out[0]:
In [ ]:
Symbolics.expand( p )
Out[0]:
In [ ]:
@variables x y z
Symbolics.expand( (x + y + z)^3 )
Out[0]:
In [ ]:
@variables R a b c d
fg = (2a+3b)/(4R - 3d)
Out[0]:
In [ ]:
arguments( Symbolics.value(fg))
Out[0]:
In [ ]:
e = Num( 5//7 )
e.val.num, e.val.den
Out[0]:
Математический анализ
In [ ]:
Symbolics.derivative( x^2, x )
Out[0]:
In [ ]:
Symbolics.taylor( sin(x), x, 0, 0:5 )
Out[0]:
In [ ]:
@variables x y
f3(x,y) = x + sin( y )
f4(x,y) = y + cos( y )
Symbolics.jacobian( [f3(x,y), f4(x,y)], [x,y] )
Out[0]:
In [ ]:
]add SymbolicNumericIntegration
In [ ]:
using SymbolicNumericIntegration
@variables x
SymbolicNumericIntegration.integrate( 3x^3 + 2x - 5 )
Out[0]:
In [ ]:
]add SymbolicLimits
In [ ]:
using SymbolicLimits
In [ ]:
Symbolics.@syms x
g = exp(x+exp(-x))-exp(x)
Out[0]:
In [ ]:
SymbolicLimits.limit( g, x, Inf )[1]
Out[0]:
Решение уравнений
In [ ]:
]add Nemo Groebner
In [ ]:
using Nemo, Groebner
In [ ]:
@variables x
symbolic_solve( 4 + x ~ 7 )
Out[0]:
In [ ]:
@variables x
symbolic_solve( x^2 + x + 6 )
Out[0]:
In [ ]:
symbolic_solve( x^2 + a*x + 6, x )
Out[0]:
In [ ]:
@variables x y z
eqs = [x+y^2+z, z*x*y, z+3x+y]
Out[0]:
In [ ]:
symbolic_solve( eqs )
Out[0]:
Решение неравенств
In [ ]:
]add JuMP
In [ ]:
using JuMP
model = Model()
JuMP.@variable( model, x )
JuMP.@constraint( model, 2x + 3 <= x + 7 )
Out[0]:
Визуализация результатов
In [ ]:
@variables x
p = x^2 + x + 6
gr()
plot( p )
plot!( Symbolics.derivative(p, x) )
Out[0]:
In [ ]:
@variables 🍎 🍌 🥥
symbolic_solve( [🍎 + 🍎 + 🍎 ~ 30,
🍎 + 🍌 + 🍌 ~ 18,
🍌 - 🥥 ~ 2 ] )
Out[0]:
In [ ]:
@variables 🍎 🍌 🥥
symbolic_solve( [🍎 + 🍎 + 🍎 ~ 30,
🍎 + 🍌 + 🍌 ~ 18,
🍌 - 🥥 ~ 2 ] )
Задачи для изучения синтаксиса
Проверьте тождество: sin(x)^2 + cos(x)^2 = 1
In [ ]:
using Symbolics
@variables x
expr = sin(x)^2 + cos(x)^2
simplify(expr) # Должно получиться 1
Out[0]:
