symbolic mathematics engine in OCaml with differentiation, integration, simplification, and numerical methods
17

Configure Feed

Select the types of activity you want to include in your feed.

leibniz / examples / tier2.ml
1.9 kB 52 lines
1open Leibniz 2 3let () = 4 print_endline "special functions\n"; 5 6 let p3 = Special.legendre_p 3 (Expr.Var "x") in 7 print_endline ("P_3(x) = " ^ Expr.to_string p3); 8 9 let h2 = Special.hermite_h 2 (Expr.Var "x") in 10 print_endline ("H_2(x) = " ^ Expr.to_string h2); 11 12 let t3 = Special.chebyshev_t 3 (Expr.Var "x") in 13 print_endline ("T_3(x) = " ^ Expr.to_string t3); 14 15 print_endline "\nlaplace transforms\n"; 16 17 let exp_t = Parser.parse "e^(2*t)" in 18 (match Transforms.laplace_transform exp_t "t" with 19 | Some result -> print_endline ("L{e^(2t)} = " ^ Expr.to_string result) 20 | None -> print_endline "transform failed"); 21 22 let sin_t = Parser.parse "sin(3*t)" in 23 (match Transforms.laplace_transform sin_t "t" with 24 | Some result -> print_endline ("L{sin(3t)} = " ^ Expr.to_string result) 25 | None -> print_endline "transform failed"); 26 27 print_endline "\ninverse laplace transforms\n"; 28 29 let f_s = Parser.parse "1/(s - 2)" in 30 (match Transforms.inverse_laplace_transform f_s "s" with 31 | Some result -> print_endline ("L^(-1){1/(s-2)} = " ^ Expr.to_string result) 32 | None -> print_endline "inverse transform failed"); 33 34 print_endline "\nODE solving\n"; 35 36 let y'' = Ode.solve_second_order (Expr.Const 1.0) (Expr.Const 0.0) (Expr.Const (-4.0)) (Expr.Const 0.0) "t" in 37 (match y'' with 38 | Some sol -> print_endline ("y'' + 4y = 0: y(t) = " ^ Expr.to_string sol) 39 | None -> print_endline "ODE solution failed"); 40 41 print_endline "\nassumptions-based simplification\n"; 42 43 let assumptions = Assumptions.assume "x" Assumptions.Positive [] in 44 let expr = Parser.parse "sqrt(x^2)" in 45 let simplified = Assumptions.simplify_with assumptions expr in 46 print_endline ("sqrt(x^2) with x > 0: " ^ Expr.to_string simplified); 47 48 print_endline "\npiecewise functions\n"; 49 50 let abs_pw = Piecewise.abs_as_piecewise (Expr.Var "x") in 51 print_endline ("abs(x) as piecewise:"); 52 print_endline (Piecewise.piecewise_to_string abs_pw)