F#简易符号求导程序

> 

type Fexpr =
  | Const of float
  | X
  | Add of Fexpr * Fexpr
  | Sub of Fexpr * Fexpr
  | Mul of Fexpr * Fexpr
  | Div of Fexpr * Fexpr
  | Sin of Fexpr
  | Cos of Fexpr
  | Log of Fexpr
  | Exp of Fexpr
val D : _arg1:Fexpr -> Fexpr

> 
let rec D = function
  | Const _  -> Const 0.0
  | X -> Const 1.0
  | Add(fe, ge) -> Add(D fe, D ge)
  | Sub(fe, ge) -> Sub(D fe, D ge)
  | Mul(fe, ge) -> Add(Mul(D fe,ge), Mul(fe, D ge))
  | Div(fe, ge) -> Div(Sub(Mul(D fe, ge), Mul(fe, D ge)), Mul(ge, ge))
  | Sin fe -> Mul(Cos fe, D fe)
  | Cos fe -> Mul(Const -1.0, Mul(Sin fe, D fe))
  | Log fe -> Div(D fe, fe)
  | Exp fe -> Mul(Exp fe, D fe)
;;

val D : _arg1:Fexpr -> Fexpr

> D(Sin (Mul(X, X)));;
val it : Fexpr =
  Mul (Cos (Mul (X,X)),Add (Mul (Const 1.0,X),Mul (X,Const 1.0)))
> D(Mul(Const 3.0, Exp X));;
val it : Fexpr =
  Add (Mul (Const 0.0,Exp X),Mul (Const 3.0,Mul (Exp X,Const 1.0)))
> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值