158 | 第五章 自定义函数
数组中是随机数。应用上面的两个函数分别对第一行进行排序,第二行也对应改变。用 tic
和 toc 函数确定每一个排序执行所需要的时间。你编写的函数的运行速度与标准函数的运行
速度相比如何?
5.13 图 5.7 显示是漂浮在海洋上两条船。1 号船所在的位置为(x1,y1)按 θ1 方向运行,
2 号船所在的位置为(x2,y2)按 θ2 方向运行。假设一个物体与 1 号船的距离 r1,并产生 φ1。
编写一个程序计算 2 号船到物体的距离 r2 和夹角 φ2。
φ1 物体
r1
φ2r2
1 号船
(x1,y1,θ1)
2 号船
(x2,y2,θ2)
图 5.7 1 号船所在的位置为(x1,y1)按 θ1 方向运行,
2 号船所在的位置为(x2,y2)按 θ2方向运行。
5.14 函数的 大值和 小值。编写一个函数,用于计算任意函数 f(x)在一定区间内的
大值和 小值。所要求 大值和 小值的函数应当用参数的方式传递给你编的函数。这个函
数应当有下面的输入参数。
first_value --x 的第一个值
last_value --x 的 后一个值
num_steps --x 取值的步长
func --所要求的值的函数名
函数的输出参数应为
xmin --函数 f(x)为 小值时的 x 值
min_value --函数 f(x)的 小值
xmax --函数 f(x)为 大值时的 x 值
max_vlaue --函数 f(x)的 大值
确保输入参数的个数有效,你可以通过 help 和 lookfor 命令得到一定的帮助。
5.15 编写一个程序,用来检测上题中产生的函数。这个检测程序把自定义函数
f(x)=x3-5x2+5x-2 传递给函数的函数,并在区间[-1,3] 内每隔 1/50 取一次值,找出函数的 大
值和 小值,并打印出来。
5.16 函数的微分。函数微分的定义如下
d
f (x) = lim
f (x + Δx) − f (x)
(5.11)
dx Δx→0 Δx
简化后为
f '(xi ) =
f (xi +1) − f (xi ) (5.12)
Δx
其中 Δx=xi+1-xi。
假设一向量 vect 包括一个函数的每隔 dx 的抽样。编写一个程序,通过 5.12 式计算这个
向量的微分。这个函数应该能检查 dx 的值,看它是否大于 0,这样可以防止这个函数发生 0
除错误。为了检测你的函数,你应当在脑中产生一个函数,并知道它的微分是什么。与函数
产生的结果进行对比。 好的检测函数应是 sin(x)。它的微分为
d
(sin x) = cos x 。产生一
dx
个向量,这个向量包含一百个 sinx 函数值,x 从 0 开始取值,步长 Δx 为 0.05 。用你的函数
1