第2章【综合练习题】基于2.3节中随机游走的例子,使用ndarray和随机数生成函数模拟一个物体在三准空间随机游走的过程。三维空间随机游走轨迹模拟并作图。

2.基于2.3节中随机游走的例子,使用ndarray和随机数生成函数模拟一个物体在三准空间随机游走的过程。
1)创建3×10的二维数组,记录物体每步在三个轴向上的移动距离。在每个轴向的移动距离服从标准正态分布(期望为0,方差为1)。行序0、1、2分别对应x轴、y轴和z轴。
2)计算每步走完后物体在三维空间的位置。
3)计算每步走完后物体到原点的距离(只显示两位小数)。
4)统计物体在z轴上到达的最远距离。
5)统计物体在三维空间距离原点的最近值。

附:三维空间随机游走轨迹作图
【提示】使用abs( )绝对值函数对z轴每步运动后的位置求绝对值,然后求最大距离。

#2三维空间随机游走
import numpy as np
#1)
movedists = np.random.normal(0,1,size = (3,10))        #random模块下的normal()函数生成x、y、z轴上三组正态分布随机数
print(movedists)

#2)
position = movedists.cumsum(axis = 1)                  #按行求累加和,计算每步走后的x、y与z轴的坐标位置
print(position)

#3)
dists = np.sqrt(position[0]**2+position[1]**2+position[2]**2)   #根据每步位置坐标计算到原点的距离,用到sqrt()求平方根函数
np.set_printoptions(precision=2)                                #np.set_printoptions()函数设置显示的小数位数
print(dists)

#4)
print(np.abs(position[2]).max())                                #abs()绝对值函数

#5)
print(dists.min())   

【拓展——补充】:接综合练习题第2题,绘图展示物体三维空间游走轨迹(和上面代码相连)

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D   #调用Axes3D库
plt.rcParams['font.sans-serif']=['SimHei']   #显示中文
plt.rcParams['axes.unicode_minus']=False
x = position[0]   #表示位置参数
y = position[1]
z = position[2]
fig = plt.figure(figsize = (12,8))    #创建绘图对象,figsize定义图形大小
ax = plt.axes(projection='3d')        #创建三维坐标轴
ax.set_xlabel('X轴',fontsize = 15)   #以下三行分别设置x轴、y轴与z轴标题与字号大小
ax.set_ylabel('Y轴',fontsize = 15)
ax.set_zlabel('Z轴',fontsize = 15)
ax.set_title( '物体在三维空间上一次随机游走轨迹图',fontsize = 20)   #添加标题,设置字号
ax.plot(x,y,z,c = 'g',marker = '*')    #画折线图
ax.scatter(0,0,0,c = 'b',marker = 'D')   #单独画原点
ax.text(.1,-.1,.1,'origin',fontsize = 15)   #添加原点说明文字
ax.scatter(x[0],y[0],z[0],c = 'r',marker = 'o')   #单独画起点
ax.text(x[0]+.1,y[0]-.1,z[0]+.1,'start',fontsize = 15)   #添加起点说明文字
ax.scatter(x[-1],y[-1],z[-1],c = 'r',marker = 'o')   #单独画终点
ax.text(x[-1]+.1,y[-1]-.1,z[-1]+.1, 'stop',fontsize = 15)   #添加终点说明文字
plt.show()   #显示图

运行结果如下:

  • 1
    点赞
  • 11
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

是学数据分析的阿龙

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值