Math 计算球拍深处的cosn步数

Math 计算球拍深处的cosn步数,math,racket,Math,Racket,我想知道我写的是否正确;这是一个学校的项目,所以我想在上传之前确保它给出了正确的输出 计算cos x=1-((x^2)/(2!))+((x^4)/(4!))-((x^6)/(6!))+ 这是我的代码: (定义(计算成本x n) (定义(hulp ctr res prevPow prevFac开关) (let((开关op(if(eq)(模开关2)0)+-)) (如果(>ctr(+2 n)) 物件 (let((新POW(*prevPow x)) (新建工厂(*-ctr 1)ctr前置工厂) (hul

我想知道我写的是否正确;这是一个学校的项目,所以我想在上传之前确保它给出了正确的输出

计算cos x=1-((x^2)/(2!))+((x^4)/(4!))-((x^6)/(6!))+

这是我的代码:

(定义(计算成本x n)
(定义(hulp ctr res prevPow prevFac开关)
(let((开关op(if(eq)(模开关2)0)+-))
(如果(>ctr(+2 n))
物件
(let((新POW(*prevPow x))
(新建工厂(*-ctr 1)ctr前置工厂)
(hulp(+ctr 2)(开关站res(/newPow newFac))newPow newFac(+开关站1(()())))
(绿巨人2 1)

让我们更精确地定义我们在这里试图计算的内容。我们有无穷和:

1 - ((x^2)/(2!)) + ((x^4)/(4!)) - ((x^6)/(6!)) + ...
认识到这里的“…”是“过程永远持续”的非正式符号。它不是一个正式的符号:它要求读者思考模式是什么。让我们正式地表达一下金额的条款

设T\n为第n项:

T_n = (-1)^n * x^(2n)/(2n)!
你们接受这是部分和第n项的形式表示吗

如果是这样,我们可以用编程语言来表达:

(define (t_n x n)
  (/ (* (expt -1 n) 
        (expt x (* 2 n)))
     (fact (* 2 n))))

(define (fact n)
  (if (= n 0)
      1
      (* n (fact (sub1 n)))))
我不知道t_n计算的是否是函数计算的。我确实认为这里的t_n函数是数学函数的精确表示

如果您接受t_n计算部分和的第n项,则:

(define (cos/approx x)
  (for/sum ([k (in-range 100)])
    (t_n x k)))
应该可以接受为余弦的近似值


一旦我们从正确的cos/approx定义开始,我们就可以通过一步一步地重写来做一些事情,比如保存累积的阶乘等,从而最终达到您的定义,从而使其变得高效。我相信有一条途径可以做到这一点,尽管它可能不适合这个文本区域的边距。:)

让我们更精确地定义我们在这里要计算的内容。我们有无穷和:

1 - ((x^2)/(2!)) + ((x^4)/(4!)) - ((x^6)/(6!)) + ...
认识到这里的“…”是“过程永远持续”的非正式符号。它不是一个正式的符号:它要求读者思考模式是什么。让我们正式地表达一下金额的条款

设T\n为第n项:

T_n = (-1)^n * x^(2n)/(2n)!
你们接受这是部分和第n项的形式表示吗

如果是这样,我们可以用编程语言来表达:

(define (t_n x n)
  (/ (* (expt -1 n) 
        (expt x (* 2 n)))
     (fact (* 2 n))))

(define (fact n)
  (if (= n 0)
      1
      (* n (fact (sub1 n)))))
我不知道t_n计算的是否是函数计算的。我确实认为这里的t_n函数是数学函数的精确表示

如果您接受t_n计算部分和的第n项,则:

(define (cos/approx x)
  (for/sum ([k (in-range 100)])
    (t_n x k)))
应该可以接受为余弦的近似值


一旦我们从正确的cos/approx定义开始,我们就可以通过一步一步地重写来做一些事情,比如保存累积的阶乘等,从而最终达到您的定义,从而使其变得高效。我相信有一条途径可以做到这一点,尽管它可能不适合这个文本区域的边距。:)

你有没有试过输入,看看输出是否正确?如果我试过输入东西,问题是我没有任何东西可以比较我的输出…拿你的袖珍计算器,或者任何可以计算余弦的脚本语言。也有吗,用python,输出是正确的,但是由于我的时间不是无限的,我无法检查每个输入是否正确,如果可能的话,我真的需要一个理论证明……你可以说计算机计算的部分和与数学计算的部分和是一致的。也就是说,给定n,证明计算出的部分和是正确的。你有没有试过输入,看看输出是否正确?当然,我试过输入东西,问题是我没有任何东西可以比较我的输出…拿你的袖珍计算器,或者任何能计算余弦的脚本语言。也有吗,使用python,输出是正确的,但由于我的时间不是无限的,我无法检查每个输入是否有正确的otput,如果可能的话,我真的需要一个理论证明……你可以说计算机计算的部分和与数学计算的部分和相匹配。也就是说,给定n,证明计算计算出正确的部分和。