托马斯微积分 从入门到失望

托马斯微积分 从入门到失望决定把例题用程序都完成一遍 从最基本的开始 语言选择用 python vex Houdini 作图 lt 1 gt a 求球的体积 半径为 4 中心点为 0 左断点为 4 右断点为 4importmathr 4 000diameter radius 2 spherer 4R 8 thisspereisy sqrt 16 x x

决定把例题用程序都完成一遍。从最基本的开始:语言选择用python,vex,Houdini作图

<1>

a,求球的体积.半径为4,中心点为0,左断点为-4,右断点为4

托马斯微积分 从入门到失望 托马斯微积分 从入门到失望

import math
radius = 4.000
diameter = radius *2
# sphere r=4 R=8
# this spere is y=sqrt(16-x*x)
# per cylinder volume is PI*r*r*dtx
def sphere_function(xpos,dtx):
    return math.sqrt(16.00-xpos*xpos) * math.sqrt(16.00-xpos*xpos)*dtx

# @n is the is this sphere that will split to n piece along xpos
# if sphere r=4, slice is 8, dtx= R/8 = 1
def calculateVolume(n):
    v = 0
    dtx = diameter/n
    for j in range(0,n,1):
        xp = j*(diameter/n) - radius   #if sphere radius is 4,left plot is -4 ,right plot is 4
        v += sphere_function(xp,dtx)
    return v

# sphere volume use base function : 3/4 * PI * (R*R*R)
def ruleCacluateVolume(r):
    return 4/3.000 * r*r*r

if __name__ == "__main__":
    #split a sphere to 20 cylinder
    print "use 4   slice :"  ,calculateVolume(4)
    print "use 8   slice :"  ,calculateVolume(8)
    print "use 20  slice :"  ,calculateVolume(20)
    print "use 120 slice :"  ,calculateVolume(120)
    print "use 200 slice :"  ,calculateVolume(200)

View Code

 

python volume.py

可以看到和标准体积的球体不差多少。200个切片就很精确了 几乎一样

 

 b,半球体积:

托马斯微积分 从入门到失望

 

<2>求类似火箭头的曲线体积:

托马斯微积分 从入门到失望

托马斯微积分 从入门到失望 托马斯微积分 从入门到失望

import math

#
# curve function is y=sqrt(x)
# x range->0-5
#

maxRange = 5.0

def clinder_volume(xpos,dtx):
    return math.sqrt(xpos*xpos) * dtx

def curve_volume(n):
    v = 0.0
    dtx = maxRange/n
    for x in range(0,n,1):
        xpos = x*(maxRange/n)
        v += clinder_volume(xpos,dtx)
    return v

if __name__ == "__main__":
    print curve_volume(15)

View Code

 

<3> 求a和b为什么值,积分的值最大

托马斯微积分 从入门到失望

 

 <4> 梯形法求积分,simpson法求积分

 

托马斯微积分 从入门到失望 托马斯微积分 从入门到失望

# Trapezoidal
# S = 1/2(y0+ 2y1 + 2y2 + 2y3+...+ 2yn-1 + yn)

def Trapezoidal(down,up,n,func):
    if up==down:
        return 0.0
    h = float(up-down) / float(n)
    start = func(down)
    end = func(up)

    process = 0.0
    for dt in xrange(0,n+1,1):
        if dt == 0 or dt == n:
            continue
        process += 2 * func(down + dt * h)
    sum =  (start + end + process) * (h/2.0)
    return sum



# Simpson
# S = h/3(y0 + 4y1 + 2y2 + 4y3 + 2y4 + ... + 2yn-1 + yn)
# func is f(x)
def Simpson(down,up,n,func):
    if up==down:
        return 0.0
    h = float(up-down) / float(n)
    start = func(down)
    end = func(up)
    process = 0.0
    for dt in xrange(0,n+1,1):
        if dt == 0 or dt == n:
            continue
        # select the 1 3 5 7 9... index
        if dt%2 == 1:
            process += 4 * func(down + dt * h)
        # select the 2 4 6 8 10... index
        if dt%2 == 0:
            process += 2 * func(down + dt * h)

    sum =  (start + end + process) * (h/3.0)
    return sum



if __name__ == "__main__":

    # part1
    # fx = 5x^4 [0,2]  n=4
    func = lambda x:5*x*x*x*x
    T = Simpson(0,2,4,func)
    print T
    # part2
    # fx = x [1,2] n=4
    func2 = lambda x:x
    T2 = Simpson(1,2,4,func2)
    print T2

    # part3
    # fx = x*x
    func3 = lambda x:x*x
    T3 = Trapezoidal(1,2,4,func3)
    print T3

    func4 = lambda x:x*x + 1
    T_T4 = Trapezoidal(-1,1,4,func4)
    S_T4 = Simpson(-1,1,4,func4)
    print T_T4,S_T4

View Code

 

 

 

 

<4> 复习黎曼和 和 定积分关系

托马斯微积分 从入门到失望

 

托马斯微积分 从入门到失望

 

托马斯微积分 从入门到失望

 

 

 

5,求椎体体积:

 

Houdini求出-55

托马斯微积分 从入门到失望

 

 fx = x^2;

则积分为x^3 / 3

上限为y最大值

下限为y最小值

托马斯微积分 从入门到失望 托马斯微积分 从入门到失望

float ptsx[];
float ptsy[];
float ptsz[];
int npt = npoints(0);
resize(ptsx,npt);
resize(ptsy,npt);
resize(ptsz,npt);

for(int i=0;i
      
    
      
      
      
      
      
       
       
       
       
       
     
       )
{
    vector pos = point(
       
     
       
       
       
       
       0,
       
     
       
       
       
       
       "
       
     
       
       
       
       
       P
       
     
       
       
       
       
       "
       
     
       
       
       
       
       ,i); ptsx[i] =
       
     
       
       
       
       
        pos.x; ptsy[i] =
       
     
       
       
       
       
        pos.y; ptsz[i] =
       
     
       
       
       
       
        pos.z; } 
       
     
       
       
       
       
       float maxy =
       
     
       
       
       
       
        max(ptsy); 
       
     
       
       
       
       
       float miny =
       
     
       
       
       
       
        min(ptsy); printf(
       
     
       
       
       
       
       "
       
     
       
       
       
       
       %f,%f\n
       
     
       
       
       
       
       "
       
     
       
       
       
       
       ,miny,maxy); 
       
     
       
       
       
       
       float dttop = pow(maxy,
       
     
       
       
       
       
       3)  /  
       
     
       
       
       
       
       3.0
       
     
       
       
       
       
       ; 
       
     
       
       
       
       
       float dtbottom = pow(miny,
       
     
       
       
       
       
       3) / 
       
     
       
       
       
       
       3.0
       
     
       
       
       
       
       ; 
       
     
       
       
       
       
       float volume = dttop -
       
     
       
       
       
       
        dtbottom; adddetailattrib(geoself(),
       
     
       
       
       
       
       "
       
     
       
       
       
       
       cvolume
       
     
       
       
       
       
       ",volume);
      
    
      
      
      
      
      

View Code

 

 

 6,一个立方体x=0 和 x=4 出垂直于x轴的两个平面之间,在0<= X <= 4 垂直于x横截面都是正方形,并且他们对角线都是从抛物线y = -sqrt(x) 和 y = sqrt(x)。

如图:

 托马斯微积分 从入门到失望

 

 

 对角线长度则为2sqrt(x)

对角线一半为d = sqrt(x)

要求变长 h , 已知sina = d / h , 因为a = 45,所以 h =( 2sqrt(x) ) / sqrt(2)

A(x) = h^2  = 2x

求积分2x        0 <=x <= 4

F(x) = x^2

F(4) – F(0) = 16

 

 7,x = sqrt(5) y^2 的曲线(0

托马斯微积分 从入门到失望

求这个形体体积.

 

 8,

 

 区域有y = x ^2  + 1,y = x+3围成的面积 沿着X轴向旋转,求旋转体体积,。

 

 托马斯微积分 从入门到失望

 

两线交点:-1 , 2 

PI * R(x) ^2 – PI * r(x)^2 的积分.

PI(x+3)^2 – PI(x^2+1)^2 = PI[  (x+3)^2 –  (x^2+1)^2  ]  

-1

 求积分.

 

 9,y=0与y=5 之间的y = x^2 / 2 

a,图像绕Y旋转一周所形成的碗状体积。

b,并且求如果每秒3立方单位的常数速率往碗里灌水,当水深为4个单位时,水面上升的速率。

 

托马斯微积分 从入门到失望

 

 托马斯微积分 从入门到失望

 

 旋转法求体积,因为绕Y旋转,所以半径是x = sqrt(2y)

面积:PI * r^2 = 2 *PI *y

求积分0,5 区间 , 2*pi*y dy 的积分 是25PI

 

 v(h) = | A(h) dh

则dv/dh = A(h) = 2 * PI * y

dv/dt = (dv/dh) * (dh/dt)

dh/dt 则是我们的速率。 dh/dt = (dv/dt) * (1 / 2*PI*y )

则速率:dh/dt = 3 * (   1  /    2*PI*4 )

 

 

 

  5章 5.2 7题

y=x, y=-x/2 , x=2  求两条曲线 和给定的范围 ,沿着Y旋转的体积。(圆柱薄壳法)

托马斯微积分 从入门到失望

 

 托马斯微积分 从入门到失望

 圆柱薄壳法:

 托马斯微积分 从入门到失望

 

微分:根据二阶导y”和一阶导y’大概画函数图像。

<1>

x<2 y'<0 ,y'' <0  2 y=1 y'=0 ,y''<0 2 
   
     4 y 
    ' 
    >0 ,y 
    '' 
    <0 
    4 y= 
    4 
    4 
    
      6 y 
     ' 
     >9,y 
     '' 
     <0 
     6 y= 
     7 
      x> 
     6 y 
     ' 
     <0.y 
     '' 
     <0 
     
   

 

托马斯微积分 从入门到失望

 

 

 

 

。。

转载于:https://www.cnblogs.com/gearslogy/p/6831501.html

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198994.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:04
下一篇 2026年3月26日 下午2:05


相关推荐

  • 分布式事务-TX-LCN 的lcn模式和tcc模式

    分布式事务-TX-LCN 的lcn模式和tcc模式文章目录 1 TX LCN 介绍 1 TX LCN 概念介绍 2 TX LCN 原理 2 TX LCN 中的 lcn 模式开发 1 准备 TM0 准备 tm 的数据库 1 POM 配置 2 更改配置 3 注解 2 准备其他的服务 TC1 pom2 配置 3 注解 4 使用 3 TX LCN 中的 tcc 模式开发 1 准备 TM0 准备 tm 的数据库 1 POM 配置 2 更改配置 3 注解 2 准备其他的服务 TC1 pom2 配置 3 注解 4 使用 4 TM 集群 1 集群概念 2 集群配置 1 TX LCN 介绍 1 TX LCN 概念介绍 LCN 框架在 2017 年 6 月份发布第

    2026年3月16日
    1
  • C#获取当前系统时间

    C#获取当前系统时间
    --DateTime数字型System.DateTimecurrentTime=newSystem.DateTime();取当前年月日时分秒currentTime=System.DateTime.Now;取当前年int年=currentTime.Year;取当前月int月=currentTime.Month;取当前日int日=currentTime.Day;取当前时int时=currentTim

    2022年10月18日
    5
  • secureCRT乱码问题

    一、乱码如下:1、输入命令控制台乱码,如下图所示。二、解决方式:1、点击SercureCRT上排主菜单的“Options”,也就是“选项”菜单,如下图:2、点击【Options】之后,会出现一个下拉列表,我们选择第一个“SessionOptions…”,如下图所示。3、在弹出框中选择目录中的“Appearance”,该功能可以对SercureCRT的外观进行设置,如下图所示。4、S…

    2022年4月6日
    150
  • pycharm(windows)设置汉化版

    pycharm(windows)设置汉化版1 下载在官网 http www jetbrains com 进行下载社区版即可 2 安装安装和平常软件一样 不要有中文路径 3 安装中文插件我们已经安装好是英文目录看不懂这时我们需要下载一个文件即可设置中文下载地址 链接 https pan baidu com s 1o9lTRvW 密码 784n 将下载好的文件解压 将 resources cn j

    2026年3月27日
    2
  • java的大数运算(高新技术产品有哪些)

    java的大数运算(高新技术产品有哪些)本篇博客主要介绍Java常用类库之大数操作,主要是BigInteger和BigDecimal的API学习。之后介绍华为的一道历年真题,十六进制转换成十进制,我们可以看到题目中给我们设置的陷阱,以及如何解决它!

    2022年4月18日
    57
  • 经典的SDR算法: 用半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题「建议收藏」

    经典的SDR算法: 用半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题「建议收藏」前言本文是博主对于Zhi-quanLuo老师的经典著作《SemidefiniteRelaxationofQuadraticOptimizationProblems》的读书笔记,希望可作为对全文以中文形式的核心梳理。单刀直入首先,SemidefiniteRelaxation(SDR)适用的问题可以写为如下形式:min⁡x∈Rn    xTCx s.t. xTAix⊵ibi,i=1,…,m(1)\begin{aligned}\min_{x\in

    2025年7月6日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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