29 lines
1.1 KiB
Markdown
29 lines
1.1 KiB
Markdown
# Дифференцирование
|
|
## Ссылка на видеоразбор
|
|
https://youtu.be/Kh0shn9UW6Y
|
|
## Код из книги
|
|
#let rec differentiate x tm = match tm with
|
|
Var y -> if y = x then Const "1" else Const "0"
|
|
| Const c -> Const "0"
|
|
| Fn("-",[t]) -> Fn("-",[differentiate x t])
|
|
| Fn("+",[t1;t2]) -> Fn("+",[differentiate x t1;
|
|
differentiate x t2])
|
|
| Fn("-",[t1;t2]) -> Fn("-",[differentiate x t1;
|
|
differentiate x t2])
|
|
| Fn("*",[t1;t2]) ->
|
|
Fn("+",[Fn("*",[differentiate x t1; t2]);
|
|
Fn("*",[t1; differentiate x t2])])
|
|
| Fn("inv",[t]) -> chain x t
|
|
(Fn("-",[Fn("inv",[Fn("^",[t;Const "2"])])]))
|
|
| Fn("^",[t;n]) -> chain x t
|
|
(Fn("*",[n; Fn("^",[t; Fn("-",[n; Const "1"])])]))
|
|
| Fn("exp",[t]) -> chain x t tm
|
|
| Fn("ln",[t]) -> chain x t (Fn("inv",[t]))
|
|
| Fn("sin",[t]) -> chain x t (Fn("cos",[t]))
|
|
| Fn("cos",[t]) -> chain x t
|
|
(Fn("-",[Fn("sin",[t])]))
|
|
| Fn("/",[t1;t2]) -> differentiate x
|
|
(Fn("*",[t1; Fn("inv",[t2])]))
|
|
| Fn("tan",[t]) -> differentiate x
|
|
(Fn("/",[Fn("sin",[t]); Fn("cos",[t])]))
|
|
and chain x t u = Fn("*",[differentiate x t; u]);; |