• 【SICP练习】84 练习2.56


    这道题的代码略长啊。不过我也是因此而知道Edwin上的代码居然可以复制到word上,以前还想当然的以为不能复制的,毕竟在Edwin上粘贴用的Ctrl+Y,而不是Ctrl+V。在这里我就只将书上没有的代码贴出来了。

    (define (deriv exp var)
       (cond ((number? exp) 0)
             ((variable? exp)
              (if (same-variable? exp var) 1 0))
             ((sum? exp)
              (make-sum (deriv (addend exp) var)
                         (deriv (augend exp) var)))
    ((product? exp)
               (make-sum (make-product (multiplier exp)
                                         (deriv (multiplicand exp) var))
                           (make-product (deriv (multiplier exp) var)
                                         (multiiplicand exp))))
               ((exponentiation? exp)
         (let ((n (exponent exp))
                      (u (base exp)))
                  (make-product
                        n
                       (make-product 
                            (make-exponentiation
                                 u
                                 (- u 1))
                           (deriv u var)))))
        (else
                 (error "unknown expression type -- DERIV" exp))))
    (define (make-exponentiation base exponent)
      (cond ((= exponent 0)
         1)
        ((= exponent 1)
         base)
        (else 
         (list '** base exponent))))
    (define (exponentiation? x)
      (and (pair? x)
           (eq? (car x) '**)))
    (define (base exp)
      (cadr exp))
    (define (exponent exp)
      (caddr exp))
    

    版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

  • 相关阅读:
    c#+oracle存储过程实现分页
    C#中调用Matlab程序
    Oracle 自定义TYPE 的几种用法(转)
    oracle嵌套表示例
    矩阵的秩及矩阵的广义逆
    矩阵的定义及其运算规则
    矩阵微分
    matlab中取模(mod)与取余(rem)的区别
    hog源码分析
    矩阵的转置、求逆及分块
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786135.html
Copyright © 2020-2023  润新知