Python求积分 代码有问题

img


为啥出来的结果这么奇怪,是哪里出问题了吗?求解答!答案是π/4

在代码中计算积分的部分,应该在调用 f 函数时,将 x 相应地作为弧度传递,而不是角度。

在 Python 中,sin 函数是以弧度作为参数的。而根据你提供的代码截图,你的代码中使用角度而不是弧度进行计算。这很可能是导致输出结果不正确的原因之一。

解决方法是将 f 函数中的 np.sin(x) 修改为 np.sin(x*np.pi/180),将角度转换为弧度。

另外,你的 cal() 函数没有对函数值 y 进行细分,在细分数量较少的情况下可能会导致积分误差较大。建议增加细分数量以提高积分精度。

下面给出修改后的代码示例:

import numpy as np

def f(x):
    return np.cos(np.sin(x*np.pi/180))

def cal(x_start, x_end, dx):
    x = np.arange(x_start, x_end+dx, dx)
    y = f(x)
    area = np.sum(y*dx) # 梯形公式积分
    return area

result = cal(0, 90, 0.001)
print(result)

在上面的代码中,我们使用 np.pi/180 将角度转换为弧度,并对细分数量进行了增加,以提高积分精度。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7535806
  • 这篇博客也不错, 你可以看下python爬虫入门实战(四)!爬取动态加载的页面!
  • 除此之外, 这篇博客: Python学了那么久,那么多库到底怎么用?好哥们儿默默从收藏夹里掏出这篇保姆级教程中的 步骤 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    Step 1. 打开 Chrome 或是任何你喜欢的浏览器(作为一名Web开发者,我真挚地提醒您,IE除外):

    屏幕快照 2020-03-22 10.07.38

    Step 2. 打开 Google 或是任何你熟悉的搜索引擎(百度除外):

    屏幕快照 2020-03-22 10.08.20

    Step 3. 在浏览器的搜索框中输入 python + 空格 + 您感兴趣的问题

    屏幕快照 2020-03-22 10.10.03

    Step 4. 看到这样的搜索结果:

    屏幕快照 2020-03-22 10.10.13

    P.S. 本人不歧视任何搜索引擎,但如果你非要用百度,请注意鉴别广告。事实上,第一页基本都是广告:

    屏幕快照 2020-03-22 10.15.52

    Step 5. 点开搜索结果前一屏上的条目,看里面相似的单词,以及中文内容:

    屏幕快照 2020-03-22 10.36.17

    Step 6. 新开一个搜索,搜索 python + 空格 + 刚才出现最多的库名

    image-20200322104530335

    Step 7. 随便打开一个结果,里面有教你怎么安装(这个tkinter是内置库,不用安装)、导入、写helloworld,照着做一遍:

    屏幕快照 2020-03-22 10.50.58

    结果:

    image-20200322105619261

    Step 8. 把刚才打开的网页里这些东西里第一页随便看一下,有印象就行(不用记忆,但你可以跟着做一遍,如果你时间充足的话,但一般我也不会去做,只是看,有印象就行):

    image-20200322105721864

    Step 9. 在项目里使用该库(知道了这东西能用,那就开始用它了):

    image-20200322110023854

    遇到你想用的功能,比如对话框,Google 搜索 python + 库名 + 功能

    image-20200322110238916

    看见了没,都是中文!随便点开一个看:

    image-20200322110427510

    代码抄一下,效果就出来了:

    屏幕快照 2020-03-22 11.06.05

  • 您还可以看一下 CSDN就业班老师的Python闯关特训营-第二十四期 直播回放课程中的 Python闯关特训营第二十四期-第四周作业一06小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^