模拟布朗运动

描述

  花粉等悬浮在流体中的微粒都会做一个无规则的运动,这就是布朗运动。我们可以使用随机数来模拟这种运动。微粒的开始坐标为(0,0),随后随机选择运动方向和运动距离。假设当前坐标为(Xold,Yold),Xold在[-1,1]列表中随机选择出运动的方向Dx、在[1,2,3,4,5,6,7,8,9,10]列表中随机选择出水平移动的距离Hx,则Xnew=Xold+Dx*Hx。Yold坐标也一样,独立于Xold选择运动方向Dy和运动距离Vy,则有Ynew=Yold+Dy*Vy。这样微粒就会移动到新坐标(Xnew,Ynew)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

题目要求:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 输入一个整数sd作为随机数的种子
  2. 模拟微粒五次无规则运动,将坐标依次存入列表,并打印列表(形如:[(0, 0), (2, 6), (7, -4), (17, 6), (24, -3), (15, -12)])
  3. 计算微粒5次布朗运动所形成的坐标的欧式距离之和(二维坐标(x1,y1)与(x2,y2)的欧式距离为sqrt((x1-x2)**2 +(y1-y2)**2))。结果保留两位小数输出。

输入格式

 输入为一个整数,例如(-5)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

输出格式

 输出为两行,第一行是微粒五次运动后的坐标值形成的列表,形如:[(0, 0), (2, 6), (7, -4), (17, 6), (24, -3), (15, -12)];第二行是五次运动的欧式距离之和(保留两位小数)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

输入输出示例

输入输出
示例 12[(0, 0), (2, 6), (7, -4), (17, 6), (24, -3), (15, -12)]
55.78
示例2-5

[(0, 0), (-6, 6), (-5, 7), (-13, 15), (-3, 25), (4, 18)]‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

45.25‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

import random
import math
random.seed(int(input()))
tup1 = (0,0)
arr = list()
arr.append(tup1)
for i in range(5):
    Xold = arr[i][0]
    Dx = random.choice([1,-1])
    Hx = random.choice([1,2,3,4,5,6,7,8,9,10])
    Xnew = Xold + Dx * Hx
    Yold = arr[i][1]
    Dy = random.choice([1,-1])
    Vy = random.choice([1,2,3,4,5,6,7,8,9,10])
    Ynew = Yold + Dy * Vy
    tup1  = (Xnew,Ynew)
    arr.append(tup1)
print(arr)
sum = 0
for i in range(5):
    temp = math.sqrt((arr[i][0] - arr[i+1][0])**2 + (arr[i][1] -arr[i+1][1])**2)
    sum = sum + temp
print(round(sum,2))

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
布朗运动是指在扩散过程中,微小颗粒在液体或气体中由于气体或液体的分子碰撞而呈现出的无规则运动。在计算机模拟中,可以使用Matlab编程语言来模拟布朗运动布朗运动可以通过随机漫步模型来进行模拟。在Matlab中,可以通过以下步骤模拟布朗运动: 1. 创建一个初始位置的粒子,这个位置可以是二维或三维空间中的坐标点。 2. 为粒子的每个坐标轴(x、y和z)生成一个随机步长。这个步长可以使用randn函数生成服从正态分布的随机数。 3. 将步长与当前位置相加,得到粒子在下一个时间步的新位置。可以使用循环语句来模拟多个时间步的运动。 4. 在每个时间步中,可以将粒子的位置绘制在一个图形窗口中,以可视化布朗运动模拟结果。可以使用plot函数来绘制粒子的路径。 通过增加步长的大小,可以模拟速度更快的粒子。通过增加循环的次数,可以模拟更长的时间跨度。 需要注意的是,布朗运动是一个随机过程,每次模拟的结果都会有所不同。因此,在重复运行模拟过程时,可以得到不同的模拟结果。 Matlab提供了丰富的函数和工具箱,可以帮助实现布朗运动模拟,如randn函数用于生成随机数,plot函数用于绘制粒子的轨迹等。通过编写合适的程序代码,结合适当的参数设置,可以实现对布朗运动模拟与分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值