肥宅钓鱼网
当前位置: 首页 钓鱼百科

python程序设计第七章课后答案(Python数学编程第七章)

时间:2023-07-20 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

首先学习数学函数,接下来对Python标准库和Sympy中的常用数学函数进行快速描述。将定义域中的每一个值代入\frac{1}{x}后得到的结果所构成的集合就是值域,在本例中仍然是所有的非零实数和复数。上面的两个函数返回的结果都是1。另外,在②处,SymPy可以进行相同的运算,并返回表达式2*sin。考虑另一个例子,假设我们想推导一个物体在抛物运动中达到最高点所需的时间表达式,假设该物体以角度theta和初始速度u抛射。

python程序设计第七章课后答案?在最后一章,我们蒋学习解微积分问题首先学习数学函数,接下来对Python标准库和Sympy中的常用数学函数进行快速描述然后,我们将学习如何求解函数极限、计算导数和积分,这些都是你在微积分课上学到的内容直接进入正题,现在小编就来说说关于python程序设计第七章课后答案?下面内容希望能帮助到你,我们来一起看看吧!

python程序设计第七章课后答案

在最后一章,我们蒋学习解微积分问题。首先学习数学函数,接下来对Python标准库和Sympy中的常用数学函数进行快速描述。然后,我们将学习如何求解函数极限、计算导数和积分,这些都是你在微积分课上学到的内容。直接进入正题。

7.1 什么是函数?

首先从一些基本的定义开始。函数是输入集合和输出集合之间的映射(mapping),函数的特殊条件在于输入集合的一个元素只与输出集合的一个元素相对应。例如,图7-1展示了两个集合,输出集合的元素是输入集合元素的平方。

使用熟悉的函数符号,我们把这个函数记为,此处x是自变量。因此f(2) = 4,f(100) = 10000,以此类推。我们将x称为自变量是因为我们可以自由地假设它的值,只要这个值在x的定义域中(我们将在下一个小结介绍定义域)。

函数也可以由多个变量定义。例如定义了一个由x和y两个变量组成的函数。

7.1.1 函数的定义域和值域

函数的定义域(domain)是指自变量的有效输入值的集合,值域(range)是指函数的输出集合。

例如,函数f(x) = \frac{1}x{}的定义域是所有的非零实数和复数,因为\frac{1}{0}没有意义。将定义域中的每一个值代入\frac{1}{x}后得到的结果所构成的集合就是值域,在本例中仍然是所有的非零实数和复数。


注:函数的定义域和值域也可以是不同的。例如,当函数x^2的定义域是所有的正数和负数时,其值域仅仅是正数。


7.1.2 常用数学函数概述

我们已经使用了一些来自于Python标准库的math模块常用的数学函数。常见的例子如sin()和cos()函数,它们分别是正弦三角函数和余弦三角函数。还有其他三角函数(如tan())和这些函数的反函数(如arcsin(),arccos(),acrtan())。

math模块也包含计算一个属的对数的函数:自然对数函数log()、以2为底的对数函数log2()和以10为底的对数函数log10(),以及计算e^x值的函数exp(),此处e是欧拉函数(近似等于2.71828)。

这些函数都有一个缺点:他们不适于符号表达式。如果我们要对包含符号的数学表达式进行运算,就不得不定义在Sympy中的类似函数。

来看一个简单中的例子:


>>> import math >>> math.sin(math.pi/2) 1.0


这里我们使用标准库的math模块中定义的sin()函数计算角度\pi/2的正弦值。我们也可以用Sympy做同样的事情。


>>> import sympy >>> sympy.sin(math.pi/2) 1.00000000000000


与标准库中的sin()函数类似,Sympy的sin()函数需要输入的角度是弧度的形式。上面的两个函数返回的结果都是1。

现在,我们尝试输入符号来调用每个函数,并观察结果:


>>> from sympy import Symbol >>> theta = Symbol('theta') >>> math.sin(theta)math.sin(theta) # ① Traceback (most recent call last):File "<pyshell#7>", line 1, in <module>math.sin(theta)math.sin(theta)File "C:\Users\32645\AppData\Roaming\Python\Python36\site-packages\sympy\core\expr.py", line 359, in __float__raise TypeError("can't convert expression to float") TypeError: can't convert expression to float >>> sympy.sin(theta)sympy.sin(theta) # ② 2*sin(theta)


当在①处使用输入参数theta 调用标准库中的sin()函 数时,该函数无法工作,所以它引发了一个异常并提示输入参数应该是一个数值。另外,在②处,SymPy 可以进行相同的运算,并返回表达式2* sin(theta)。现在对我们来说这并不奇怪,但是它展示了标准库中的数学函数不能完成的任务类型。 考虑另一个例子,假设我们想推导一个物体在抛物运动中达到最高点所需的时间表达式,假设该物体以角度theta和初始速度u抛射(见2.4节)。 在最高点处,u*sin(theta)-g*t= 0,为解出t,我们用学习过的solve()函数:


>>> from sympy import sin, solve, Symbol >>> u = Symbol('u') >>> t = Symbol('t') >>> g = Symbol('g') >>> theta = Symbol('theta') >>> solve(u*sin(theta)-g*t,t) [u*sin(theta)/g]


如同之前所学,t的表达式为u*sin(theta)/g,这个例子也演示了如何使用solve()函数求解包含数学函数的方程。

7.2 Sympy中的假设

在之前的程序里,我们在Sympy中创建了一个Symbol对象,用来定义类似x = Symbol('x')这样的变量。假设你要求Sympy执行一个运算并给出结果,比如判断表达式x 5是否大于0,看一下会发生什么:


>>> from sympy import Symbol >>> x = Symbol('x') >>> if (x 5) > 0:print('Do Something') else:print('DoSomething else')Traceback (most recent call last):File "<pyshell#21>", line 1, in <module>if (x 5) > 0:File "C:\Users\32645\AppData\Roaming\Python\Python36\site-packages\sympy\core\relational.py", line 398, in __bool__raise TypeError("cannot determine truth value of Relational") TypeError: cannot determine truth value of Relational


因为Sympy没有任何关于x的正负信息,所以它不能推断出x 5是否大于0,因此它输出错误提示。但基础数学运算告诉我们,如果x是正数,那么x 5始终是大于0的,如果x是负数,x 5将只在某些情况下是正数。

因此,如果创建一个Symbol对象,并指定positive=True,我们是在告诉SymPyx只取正值。现在它明确x 5必定是大于0的:


>>> x = Symbol('x', positive=True) >>> if (x 5) > 0:print('Do Something') else:print('do Something else')Do Something


注意,如果我们指定negative=True,我们将得到与第一种情形相同的错误提示。如同我们声明一个符号是正值或者负值一样,我们也可以声明它是实数、整数、复数、虚数等,在StmPy中这些声明被称为假设。

7.3 计算函数极限

微积分的一个常见任务就是在自变量趋于一个确定值时,求函数的极限值(或简称极限)。考虑函数,其图像如图7-2所示。

图7-2

由图中可知,随着x值的增大,函数f(x)的值趋于0,用极限符号可以记为:

我们可以通过如下Limit类的对象在Sympy中计算函数极限:


>>> from sympy import Limit, Symbol, S# ① >>> x = Symbol('x')# ② >>> Limit(1/x,x,S.Infinity)# ③ Limit(1/x, x, oo, dir='-')


在①处,我们导入Limit和Symbol类,以及S(一个特殊的Sympy类,其中包含正负无穷和其他特殊值的含义)。在②处,我们创建一个Symbol对象x来指代自变量x。我们在③处创建Limit对象,并传递三个参数:1/x、变量x和要计算函数极限的x的值(正无穷,即S.Infinity)。

返回的结果是一个未计算对象,其中符号oo表示正无穷,dir='-'表示从负方向趋于极限。

为计算极限值,我们使用doit()函数:


>>> l = Limit(1/x, x, S.Infinity) >>> l.doit() 0


默认情况下,我们从正方向计算极限,除非要计算的x的值是正无穷或负无穷。在x是正无穷的情况下,方向是负的,而在x是负无穷的情况下,方向是正的。可以按照如下方式改变默认的方向:


>>> Limit(1/x, x, 0, dir='-').doit() -oo


现在我们计算

当x从负方向趋于0时,极限值趋于负无穷。反过来,如果从正方向趋于0,则极限值趋于正无穷:


>>> Limit(1/x, x, 0, dir=' ').doit() oo


Limit类也可以在自动处理具有不确定形式的极限的函数:


>>> from sympy import Symbol, sin >>> Limit(sin(x)/x, x, 0).doit() 1


我们可能会使用洛必达法则来计算这类函数的极限,但在这里的代码,Limit可以很好的处理这类极限。

7.3.1 连续复利

假设你在银行存了1美元,这笔存款成为本金,他可以为你带来利息。在这里,假设全部利息在一年内计算复利n次,在一年结束时你将得到的总额为:

著名数学家James Bernoulli发现,随着n值的增大,趋于e的值,这是一个我们可以通过计算函数极限来验证的常熟:


>>> from sympy import Limit, Symbol, S >>> n = Symbol('n') >>> Limit((1 1/n)**n, n, S.Infinity).doit() E


在给定本金金额p、利率r和年数t的情况下,可以通过以下公式计算复利:

假设是连续复利,我们可以得到如下关于A的表达式:


>>> from sympy import Symbol, Limit, S >>> p = Symbol('p', positive=True) >>> r = Symbol('r', positive=True) >>> t = Symbol('t', positive=True) >>> Limit(p*(1 r/n)**(n*t), n, S.Infinity).doit() p*exp(r*t)


我们创建了三个Symbol对象,分别代表本金金额p、利率r和年数t。在创建Symbol对象时,我们通过设置关键字参数possitive=True来指定这些变量只取正值。如果不这么设定,SymPy没有任何关于符号所指代的数值的信息,从而可能无法正确计算极限值。然后,我们用复利的表达式创建Limit对象,并使用doit()函数对其进行计算。计算的极限结果是p*exp(r*t), 它告诉我们,对于固定利率,复利随时间呈指数增长。

7.3.2 瞬时变化率

假设路上有一辆行驶的汽车,它正在均匀加速,其行驶的距离S由以下函数给出:

在这个函数中,自变量是t,它表示汽车已经行驶的时间。

如果我们知道汽车在时间和之间行驶的距离,那么我们可以通过表达式计算汽车在一个单位时间内行驶的距离。这个式子也被称为函数S(t)关于变量t的平均比变化率,或称为平均速率。如果将写成,其中是和之间的单位时间差,我们可以把平均速率的表达式改写为

这个表达式也是变量t_1的函数。现在我们进一步假设\delta_t非常小,并让它趋向于0,我们可以用极限符号来表示这个式子,具体如下:

现在我们来计算上述极限。首先,让我们你来创建有关的表达式对象:


>>> from sympy import Symbol, Limit >>> t = Symbol('t') >>> St = 5*t**22*t8# ① >>> t1 = Symbol('t1') >>> delta_t = Symbol('delta_t') >>> St1 = St.subs({t:t1})# ② >>> St1_delta = St.subs({t:t1delta_t})# ③


在①处,定义函数S(t),接着定义两个符号t1和,分别对应于t1和δ,然后使用subs()函数,分别在②和③处将S(t)中的t替换为t1和来得到和。现在可以计算极限了:


>>> Limit((St1_delta - St1) / delta_t, delta_t, 0).doit() 10*t12


极限值是10*t12,即S(t)在时间t1时的变化率,或瞬时变化率,这个变化率 经常被称为汽车在时间t1的瞬时速率。 我们在这里计算的极限称为函数的导数,也可以用SymPy的Derivative类直接计算极限。

    推荐阅读
  • 基金喝酒吃药代表什么(基金喝酒吃药代表什么意思)

    俗话说名以食为天,食品饮料行业是一个具有刚性需求的行业,而其中一些高端酒水类的上市公司,又对应着消费升级的需求;对于医药生物行业而言,看病买药也是人们的刚需,而且我国在医药领域还存在较大的空白,因此医药行业也拥有不错的市场前景。总的来说,医药生物、食品饮料中大多上市公司一般属于防御性板块,因为这其中是有很大的刚需的。

  • 风景名胜区管理条例介绍(风景名胜区管理条例简单介绍)

    风景名胜区管理条例介绍《风景名胜区管理条例》是为了加强对风景名胜区的管理,有效保护和合理利用风景名胜资源而制定的法规,2006年9月6日,《风景名胜区管理条例》由国务院第149次常务会议通过,自2006年12月1日起施行。明确了风景名胜区的概念、设立原则和分级。风景名胜区划分为国家级风景名胜区和省级风景名胜区,并分别规定了申请设立国家级风景名胜区和省级风景名胜区的条件和程序。

  • 2022许昌市瑞昌路小学进城落户家庭子女入学材料

    公租房(廉租房)与自有房产同等待遇。)现场审核须提供以下材料1.全家户口簿、房产持有人居住证学生与房产持有人不同户口簿的,须提供《出生医学证明》。

  • 广东外卖有什么好吃的(广东高校外卖十大排行榜出炉)

    广师大果真是外卖寄宿大学,光是一个校区的点外卖量已经超越了全国众多高校的一整个学校了。广州高校外卖排行榜而在广东高校点外卖排行榜中,暨大、广工、华工、华师、广大、中大、广中医依次排在前10。宵夜榜广外的同学点宵夜的数量是最多的,广师大排第二。宵夜榜华广入选前十,华广的同学一定很爱吃宵夜。再次恭喜广东技术师范大学、华南农业大学、广东外语外贸大学喜提前十

  • 有关安全的句子(安全的说说范文)

    接下来我们就一起去了解一下吧!有关安全的句子千条万条,安全生产第一条;千计万计,安全教育第一计。绳子总在磨损地方折断,事故常在薄弱环节出现。用平安祝福校园的今天,用平安打造校园的未来。侥幸躲过千次,出事就在一次。选焙放心食品,吃出健康体魄。经济效益会有时,严抓管理保安全。

  • 有格调的情侣穿搭快来借鉴一下吧(备战七夕据说99的男生都被这些穿搭套路了)

    关键词2:露肩关于露肩这一课小编在这个夏天已经敲过无数次黑板了!我相信不管是约会见心意的对象还是约会闺蜜们,露肩的元素都是百分百正确的选择!17年初的时候各大秀场就为春夏来了一场绝美的露肩show~似乎还能看到很多明星同款哦!因为上课上班的时候你都可以按照基本的方式不露肩来穿~妈妈再也不用担心我的穿衣啦!最近其实他是胖了的...但是比起左边的裙子,有点老气的说..我倒觉得露肩的她多了几分活力和仙气,也更显瘦!

  • 苏轼失去的千古名作(苏轼抄了唐人一句诗放入自己词中)

    苏轼抄了唐人一句诗放入自己词中《渔歌子》张志和西塞山前白鹭飞,桃花流水鳜鱼肥青笠笠,绿蓑衣,斜风细雨不须归这首诗,相信很多人都听过吧,这是唐朝张志和写的《渔歌子》,在现在的中学课本也有出现过但是你有没有读过另一句呢?“西塞山边白鹭。

  • 免费无线上网怎么做(免费无线上网步骤)

    免费无线上网怎么做?下面内容希望能帮助到你,我们来一起看看吧!免费无线上网怎么做将网线—路由器—电脑之间的线路连接好,启动电脑和路由器设备;启动设备后,打开浏览器,在地址栏中输入192.168.1.1进入无线路由器设置界面。(如进不了请翻看路由器底部铭牌或者是路由器使用说明书,不同型号路由器设置的默认都不一样。输入正确后会提示是否重启路由器,选择是确认重启路由器,重新启动路由器后即可正常上网。

  • 万古神帝伪神和真神的区别(万古神帝相比于剑来)

    有不少人都认为《万古神帝》是不可多得的精品网络小说,其作品质量不仅比《逆天邪神》高出一大截,就连《雪中悍刀行》同样也不是对手。确实,《万古神帝》这部网络小说相比于《逆天邪神》的话,还是有很大胜算的,毕竟火星引力最近更新《逆天邪神》的内容确实不怎么样,这个无法辩驳。虽然说《剑来》相比于烽火戏诸侯的上一部作品《雪中悍刀行》大道理有一些多,看起来有一些水,但是再水都没有《万古神帝》狩天大宴那部分写得水。

  • 四川香肠煮多久能熟(四川香肠煮多长时间能熟)

    四川香肠煮多久能熟四川香肠煮多久能熟:半个小时。腊肠一般要煮20-30分钟才能煮熟。同时在不烧焦的情况下,煮得越久,香肠和腊肉内的亚硝酸盐含量就越少。最后要提醒的是,一定要用冷水下锅煮。这样才能让水分缓慢地渗入肉的组织中,让本来干瘪的香肠、火腿变得更加滋润。如果用沸水下锅煮,肉的表面蛋白质会受热急剧收缩,影响水分的渗入,同时亚硝酸盐也难以充分渗出。香肠不用泡,温水洗尽下锅,开后转小火20-30分钟。