Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
(* 1.5 Algorithme de dérivation ****************************************) type expr = Const of int | Var of string | Add of expr*expr | Mult of expr*expr;; let zero = Const 0;; let un = Const 1;; let x = Var "x";; let y = Var "y";; let z = Var "z";; let plus x y = Add(x,y);; let prod x y = Mult(x,y);; let e1 = plus x x;; let e2 = prod x x;; let e3 = plus (prod x (plus y un)) z;; let rec print_expr = function (Const n) -> print_int n | (Var s) -> print_string s | (Add(e1,e2)) -> print_string "("; print_expr e1; print_string " + "; print_expr e2; print_string ")" | (Mult(e1,e2)) -> print_string "("; print_expr e1; print_string " * "; print_expr e2; print_string ")";; let print e = print_expr e; print_newline() ;; (* version pour afficher directement les expressions *) let rec fprint_expr f = function (Const n) -> Format.pp_print_int f n | (Var s) -> Format.pp_print_string f s | (Add(e1,e2)) -> Format.pp_print_string f "("; fprint_expr f e1; Format.pp_print_string f " + "; fprint_expr f e2; Format.pp_print_string f ")" | (Mult(e1,e2)) -> Format.pp_print_string f "("; fprint_expr f e1; Format.pp_print_string f " * "; fprint_expr f e2; Format.pp_print_string f ")";; #install_printer fprint_expr;; let rec dx_expr = function (Const n) -> zero | (Var s) -> if (s="x") then un else zero | (Add(e1,e2)) -> Add(dx_expr e1, dx_expr e2) | (Mult(e1,e2)) -> Add(Mult(dx_expr e1, e2), Mult(e1, dx_expr e2));; let rec simplify = function (Add(e1,e2)) -> ( match (simplify e1, simplify e2) with (Const 0, e) -> e | (e, Const 0) -> e | (se1, se2) -> Add(se1,se2) ) | (Mult(e1,e2)) -> ( match (simplify e1, simplify e2) with (Const 0, _) -> zero | (Const 1, e) -> e | (_, Const 0) -> Const 0 | (e, Const 1) -> e | (se1, se2) -> Mult(se1, se2) ) | e -> e;; let dx e = print (simplify (dx_expr e));;