第三单元 用python学习微积分(二十)壳层法、圆盘法求体积 (下)

第三单元 用python学习微积分(二十)壳层法、圆盘法求体积 (下)本文内容来自于学习麻省理工学院公开课:单变量微积分-壳层法、圆盘法求体积-网易公开课一、切片法球体积(继续建立积分的思想)​如图,红色切片部分的体积这个式子取极限,则有全部面积为二、旋转立方体(solidsofrevolution)圆盘法介绍:老师先画了一条x轴上方曲线,看着像sinx,之后出题,这个曲线绕x轴一周形成一个椭圆,可以猜想,当对这个椭圆切片,可以得到一个⚪,因为图形绕x轴旋转不会改变函数值到x轴的距离,而这个距离就是这个⚪的半径。于.

大家好,又见面了,我是你们的朋友全栈君。

本文内容来自于学习麻省理工学院公开课:单变量微积分-壳层法、圆盘法求体积-网易公开课

开发环境准备:CSDN

目录

2、壳层法(method of shells)求体积


2、壳层法(method of shells)求体积

第三单元 用python学习微积分(二十)壳层法、圆盘法求体积 (下)

考虑 y = x^2 的曲线在y轴右侧的部分,如果绕y轴旋转360度, 会形成一个像水缸的体,而如上图中红色矩形部分,会形成一个空心的圆柱,一个圆柱形的壳。这个壳的厚度为dx(趋近于无穷小),高度为a-y(注意最左侧图上y=a直线), 半径为x。

这个壳展开为一个厚片(最右侧图),这个厚片的厚度为dx, 高度为a-y, 底边长为中间图中圆柱的底面圆形的周长 2\pi x

dV = (2 \pi x)(a-y)dx = 2\pi(ax - x^3)dx ( 0<x<\sqrt[]{a} , y\leq a , y = x^2 )

V = \int_{0}^{\sqrt a} 2\pi(ax - x^3)dx = \pi a x^2 - \frac{\pi x^4}{2}|_{0}^{\sqrt a} = \pi a^2 - \frac{\pi a^2}{2} = \frac{\pi}{2} a^2

代码主体部分请参考Bullseye:第三单元 用python学习微积分(二十)壳层法、圆盘法求体积 (上)

fig = plt.figure(figsize=(12, 12),
                 facecolor='lightyellow'
                )
# draw sphere
ax = fig.gca(fc='whitesmoke',
               projection='3d' 
              )
x = symbols('x')
a = 4
expr = x**2

DrawXY(0,2,100,expr,'b','',plt)

RotateByAxis(0,2,100,expr,-0.5*np.pi,'r',ax, EnumAxis.YAxis)
RotateByAxis(0,2,100,expr,0.5*np.pi,'r',ax, EnumAxis.YAxis)
RotateByAxis(0,2,100,expr,-np.pi,'b',ax, EnumAxis.YAxis)

DrawAxis(ax, 5,5,5)

   
plot_surface(-2, 4, -2, 4, 0, 4, ax)
ax.view_init(elev=30,    # 仰角
             azim=-20    # 方位角
            )
plt.show()

第三单元 用python学习微积分(二十)壳层法、圆盘法求体积 (下)

这里老师提示要注意单位!

设 a=100 cm

则体积为: V= \frac{\pi}{2}(100)^2 (cm^3) = \frac{10\pi}{2}(1000) (cm^3) = \frac{10\pi}{2} (L)

设 a=1 m

则体积为: V= \frac{\pi}{2} (m^3) = \frac{\pi}{2}(100)^3 (cm^3) = \frac{1000\pi}{2} (L)

所以都是1m的长度,体积的结果确实不同,为啥呢?老师的原话是 公式\frac{\pi}{2} a^2违反了比例原则。

其实是都是合理的,造成不同的原因是曲线的形状不同!如下:

import matplotlib.pyplot as plt
fig=plt.figure()

axes=[]
#define matplotlib figure and axis

def DrawXY(xFrom,xTo,steps,expr,color,label,ax, aspect):
    yarr = []
    xarr = np.linspace(xFrom ,xTo, steps) 
    for xval in xarr:
        yval = expr.subs(x,xval)
        yarr.append(yval)
    y_nparr = np.array(yarr) 
    ax.set_aspect(aspect)
    ax.plot(xarr, y_nparr, c=color, label=label)   

x = symbols('x')
expr = x**2

# add_subplot(row, col, row*col) 添加图在row行,col列 
axes.append( fig.add_subplot(1, 1,1) )
DrawXY(-10,10,100,expr,'green','y = x**2 a=100 cm ',axes[len(axes)-1], 0.8)
plt.legend(loc='upper right')
axes.append( fig.add_subplot(1, 3,3) )
DrawXY(-1,1,100,expr,'green','y = x**2 a=1 m ',axes[len(axes)-1], 1)
plt.legend(loc='upper right')

#set aspect ratio to 1
fig.tight_layout()
#display plot
plt.show()

第三单元 用python学习微积分(二十)壳层法、圆盘法求体积 (下)

由积分的性质,我们知道求取的是旋转曲线所得到的空间形状的体积,而由于两图形的x、y比例不同,所得到的体积也就不同。上图中左边的图形当x取10cm时,图形的高是100cm,而右边的图形,x取100cm时,图形的高是100cm。

所以当处理实际问题是,一定要考虑好比例关系。

下节课将要讲在像这样的坩埚中加热其中全部的水,需要多少热量。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133940.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号