gpt4 book ai didi

计算 e^x 的 Haskell 函数

转载 作者:行者123 更新时间:2023-12-03 16:32:29 26 4
gpt4 key购买 nike

实现一个函数,计算e^x的值,x是函数的一个参数,一个整数。
为此,请使用泰勒级数展开来计算 e 的效力。
除了指数 x 之外,该函数还将接收作为参数的级数项数,它将作为 n 的最大值运行。
为了解决这个函数,必须使用递归。
我做的:

factorial 0 = 1
factorial n = n * factorial (n-1)

consigna3::Int->Int->Float
consigna3 _ 0 = 1
consigna3 x n = (fromIntegral(x^n) / fromIntegral(factorial n)) + consigna3 x (n-1)
但是有些结果是错误的,这是我的预期:
Ejemplo 1: Main> funcion3 1 1
2.0
Ejemplo 2: Main> funcion3 1 10
2.718282
Ejemplo 3: Main> funcion3 2 10
7.388997
Ejemplo 4: Main> funcion3 10 20
21991.48
Ejemplo 5: Main> funcion3 10 30
22026.46
Ejemplo 6: Main> funcion3 0 30
1.0
结果 (10 20) 和 (10 30) 与我所做的函数返回的不匹配。
我做错了什么?感谢和抱歉我的英语。

最佳答案

您正在使用 Int对于会溢出 Int 的计算.相反,转换为 Float马上,然后使用 Float对于一切。所以:

consigna3 x n = ((fromIntegral x)^n / factorial (fromIntegral n)) + consigna3 x (n-1)
来自 Int 的两个重要变化至 Float在这里:首先,你做 x^n哪里 x :: Int ,但我做 fromIntegral x^n哪里 fromIntegral x :: Float ;第二,你做 factorial n哪里 n :: Int ,但我做 factorial (fromIntegral n)哪里 fromIntegral n :: Float .

关于计算 e^x 的 Haskell 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64282127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com