52 lines
1.9 KiB
OCaml
52 lines
1.9 KiB
OCaml
open Leibniz
|
|
|
|
let () =
|
|
print_endline "special functions\n";
|
|
|
|
let p3 = Special.legendre_p 3 (Expr.Var "x") in
|
|
print_endline ("P_3(x) = " ^ Expr.to_string p3);
|
|
|
|
let h2 = Special.hermite_h 2 (Expr.Var "x") in
|
|
print_endline ("H_2(x) = " ^ Expr.to_string h2);
|
|
|
|
let t3 = Special.chebyshev_t 3 (Expr.Var "x") in
|
|
print_endline ("T_3(x) = " ^ Expr.to_string t3);
|
|
|
|
print_endline "\nlaplace transforms\n";
|
|
|
|
let exp_t = Parser.parse "e^(2*t)" in
|
|
(match Transforms.laplace_transform exp_t "t" with
|
|
| Some result -> print_endline ("L{e^(2t)} = " ^ Expr.to_string result)
|
|
| None -> print_endline "transform failed");
|
|
|
|
let sin_t = Parser.parse "sin(3*t)" in
|
|
(match Transforms.laplace_transform sin_t "t" with
|
|
| Some result -> print_endline ("L{sin(3t)} = " ^ Expr.to_string result)
|
|
| None -> print_endline "transform failed");
|
|
|
|
print_endline "\ninverse laplace transforms\n";
|
|
|
|
let f_s = Parser.parse "1/(s - 2)" in
|
|
(match Transforms.inverse_laplace_transform f_s "s" with
|
|
| Some result -> print_endline ("L^(-1){1/(s-2)} = " ^ Expr.to_string result)
|
|
| None -> print_endline "inverse transform failed");
|
|
|
|
print_endline "\nODE solving\n";
|
|
|
|
let y'' = Ode.solve_second_order (Expr.Const 1.0) (Expr.Const 0.0) (Expr.Const (-4.0)) (Expr.Const 0.0) "t" in
|
|
(match y'' with
|
|
| Some sol -> print_endline ("y'' + 4y = 0: y(t) = " ^ Expr.to_string sol)
|
|
| None -> print_endline "ODE solution failed");
|
|
|
|
print_endline "\nassumptions-based simplification\n";
|
|
|
|
let assumptions = Assumptions.assume "x" Assumptions.Positive [] in
|
|
let expr = Parser.parse "sqrt(x^2)" in
|
|
let simplified = Assumptions.simplify_with assumptions expr in
|
|
print_endline ("sqrt(x^2) with x > 0: " ^ Expr.to_string simplified);
|
|
|
|
print_endline "\npiecewise functions\n";
|
|
|
|
let abs_pw = Piecewise.abs_as_piecewise (Expr.Var "x") in
|
|
print_endline ("abs(x) as piecewise:");
|
|
print_endline (Piecewise.piecewise_to_string abs_pw)
|