数学建模python matlab 编程(喷泉模拟)

在无风情况下的喷泉模拟

我的python代码

import numpy as np
import random
import matplotlib
matplotlib.rcParams['font.sans-serif']=[u'simHei']
matplotlib.rcParams['axes.unicode_minus']=False
import matplotlib.pyplot as plt

tt = np.linspace(0,4,1000)
#y = -tt**2+4*tt
#plt.plot(tt,y,linestyle='--')


# 没有风
vy0=10
g=10
vx0=5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
    y0 += vy0*dt
    x0 += vx0*dt
    vy0 -= g*dt
    x.append(x0)
    y.append(y0)
    if y0<0:
        break
plt.plot(x,y,linestyle='--')

 

 

在右边风情况下的喷泉模拟

我的python代码

# 有向右的风
vy0=10
g=10
vx0=5
a = 1.5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
    y0 += vy0*dt
    x0 += vx0*dt
    vy0 -= g*dt
    vx0 -= a*dt
    x.append(x0)
    y.append(y0)
    if y0<0:
        break
plt.plot(x,y)

 

 

在左边风情况下的喷泉模拟

我的python代码

# 有向左的风
vy0=10
g=10
vx0=5
a = -1.5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
    y0 += vy0*dt
    x0 += vx0*dt
    vy0 -= g*dt
    vx0 -= a*dt
    x.append(x0)
    y.append(y0)
    if y0<0:
        break
plt.plot(x,y)

 

 

所有代码

# -*- coding: utf-8 -*-

import numpy as np
import random
import matplotlib
matplotlib.rcParams['font.sans-serif']=[u'simHei']
matplotlib.rcParams['axes.unicode_minus']=False
import matplotlib.pyplot as plt

tt = np.linspace(0,4,1000)
#y = -tt**2+4*tt
#plt.plot(tt,y,linestyle='--')


# 没有风
vy0=10
g=10
vx0=5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
    y0 += vy0*dt
    x0 += vx0*dt
    vy0 -= g*dt
    x.append(x0)
    y.append(y0)
    if y0<0:
        break
plt.plot(x,y,linestyle='--')

# 有向右的风
vy0=10
g=10
vx0=5
a = 1.5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
    y0 += vy0*dt
    x0 += vx0*dt
    vy0 -= g*dt
    vx0 -= a*dt
    x.append(x0)
    y.append(y0)
    if y0<0:
        break
plt.plot(x,y)

# 有向左的风
vy0=10
g=10
vx0=5
a = -1.5
x=[]
y=[]
x0=0
y0=0
dt = 4/1000
x.append(x0)
y.append(y0)
for t in tt:
    y0 += vy0*dt
    x0 += vx0*dt
    vy0 -= g*dt
    vx0 -= a*dt
    x.append(x0)
    y.append(y0)
    if y0<0:
        break
plt.plot(x,y)
View Code

 

 喷泉散落在地上模拟

 

import numpy as np
import random
import matplotlib
matplotlib.rcParams['font.sans-serif']=[u'simHei']
matplotlib.rcParams['axes.unicode_minus']=False
import matplotlib.pyplot as plt
from scipy.stats import norm
a1_list = random.uniform(0,0.5) # 生成一组正太分布的加速度,均值是0,方差是0.5
a1_list = norm.rvs(a1_list, size=1000)
a2_list = random.uniform(0,0.5)
a2_list = norm.rvs(a2_list, size=1000)
X0=[]
X1=[]
# 对每一组加速度
for i in range(1000):
    vy0=10
    g=10
    vx0=5
    vx1=5
    a1 = a1_list[i]
    a2 = a2_list[i]
    x0=0
    x1=0
    y0=0
    dt = 4/1000
    for t in tt:
        y0 += vy0*dt
        x0 += vx0*dt
        x1 += vx1*dt
        
        vy0 -= g*dt
        vx0 -= a1*dt
        vx1 -= a2*dt
    
        if y0<0:
            break
    X0.append(x0)
    X1.append(x1)
    
plt.scatter(X0,X1)

 

炫酷喷泉三维图

from mpl_toolkits.mplot3d import axes3d
from scipy.stats import norm
a1_list = random.uniform(0,0.2) # 生成一组正太分布的加速度,均值是0,方差是0.5
a1_list = norm.rvs(a1_list, size=100)
a2_list = random.uniform(0,0.2)
a2_list = norm.rvs(a2_list, size=100)
X0=[]
X1=[]
# 对每一组
ax=plt.subplot(111,projection='3d')
for i in range(100):
    vy0=10
    g=10
    vx0=5
    vx1=5
    a1 = a1_list[i]
    a2 = a2_list[i]
    xx0=[]
    xx1=[]
    y=[]
    x0=0
    x1=0
    y0=0
    dt = 4/1000
    for t in tt:
        y0 += vy0*dt
        x0 += vx0*dt
        x1 += vx1*dt
        vy0 -= g*dt
        vx0 -= a1*dt
        vx1 -= a2*dt
        xx0.append(x0)
        xx1.append(x1)
        y.append(y0)
        if y0<0:
            break
#    X0.append(x0)
#    X1.append(x1)
    
    ax.plot(xx0,xx1,y,'--')
    
plt.show()

 

转载于:https://www.cnblogs.com/caiyishuai/p/11195205.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值