32 lines
986 B
OCaml
32 lines
986 B
OCaml
open Leibniz
|
|
|
|
let () =
|
|
print_endline "basic differentiation and simplification\n";
|
|
|
|
let f = Parser.parse "x^3 + 2x^2 + x" in
|
|
print_endline ("f(x) = " ^ Expr.to_string f);
|
|
|
|
let df = Diff.diff "x" f in
|
|
print_endline ("f'(x) = " ^ Expr.to_string df);
|
|
|
|
let ddf = Diff.diff "x" df in
|
|
print_endline ("f''(x) = " ^ Expr.to_string ddf);
|
|
|
|
print_endline "\nsimplification\n";
|
|
|
|
let expr = Parser.parse "(x + 0) * 1 + x * 0" in
|
|
print_endline ("before: " ^ Expr.to_string expr);
|
|
let simplified = Simplify.simplify expr in
|
|
print_endline ("after: " ^ Expr.to_string simplified);
|
|
|
|
print_endline "\nimplicit multiplication\n";
|
|
|
|
let expr2 = Parser.parse "2x + 3sin(x)" in
|
|
print_endline ("parsed: " ^ Expr.to_string expr2);
|
|
|
|
print_endline "\ntrigonometric functions\n";
|
|
|
|
let trig = Parser.parse "sin(x)^2 + cos(x)^2" in
|
|
print_endline ("trig identity: " ^ Expr.to_string trig);
|
|
let dtrig = Diff.diff "x" trig in
|
|
print_endline ("derivative: " ^ Expr.to_string dtrig)
|