计算机仿真
最近在学习数学建模,但是Matlab用的不是很习惯,于是我尝试用Python解决几道,别说还蛮顺手,以下知识点是老师ppt上面的,代码我改成python的,Ok正文开始:
首先随便看下定义(哈哈):计算机仿真是一种非实物仿真方法,是用计算机对一个系统的结构和行为进行动态演示, 以评价或预测一个系统的行为效果,为决策提供信息的一种方法.它是解决较复杂的实际问题的一条有效途径。计算机仿真通过建立数学模型、编制计算机程序实现对真实系统的模拟,从而了解系统随时间变化的行为或特性。
是不是很抽象,抽象就对了,举个栗子:我们都知道三峡水库吧,号称世界最大的水电站(此处应有掌声!啪啪啪!)所以它的安全问题是一个很重要的问题,我们不可能等他建好在看看它的安全性吧,所以这时候就可以利用计算机来模拟,这就产生了计算机仿真这一领域。好啦有了初步了解,我们看两道题(懒得打字所以直接上图,见谅。。。):
题目很简单,代码更简单,直接上:
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 11 20:17:43 2018
@author: jj
"""
'''
* ━━━━━━神兽出没━━━━━━
* ┏┓ ┏┓
* ┏┛┻━━━┛┻┓
* ┃ ┃
* ┃ ━ ┃
* ┃ ┳┛ ┗┳ ┃
* ┃ ┃
* ┃ ┻ ┃
* ┃ ┃
* ┗━┓ ┏━┛Code is far away from bug with the animal protecting
* ┃ ┃ 神兽保佑,代码无bug
* ┃ ┃
* ┃ ┗━━━┓
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛
*
* ━━━━━━感觉萌萌哒━━━━━━
'''
import random
import numpy as np
#开车时间的仿真测试
s1 = 0;s3 = 0
for i in range(10000):
s = random.random()
if s<0.7:
s1+=1
elif s>0.9:
s3+=1
print(s1/10000,1-s1/10000-s3/10000,s3/10000)
#人到达时刻仿真测试
s1,s2,s3,s4=0,0,0,0
for i in range(10000):
s = random.random()
if s<0.3:
s1+=1
elif s<0.7:
s2+=1
elif s<0.9:
s3+=1
else:
s4+=1
print(s1/10000,s2/10000,s3/10000,s4/10000)
#火车运行时间仿真测试
s = np.random.normal(0,1,10000)
y = []
for i in range(10000):
y[i] = 2*s[i]+30
#赶上火车的仿真结果
x1 = [random.random() for i in range(10000)]
x2 = [random.random() for i in range(10000)]
x3 = np.random.normal(0,1,10000)
s = 0
for i in range(10000):
if x1[i]<0.7:
T1=0
elif x1[i]<0.9:
T1=5
else:T1=10
T2=30+2*x3[i]
if x2[i]<0.3:
T3=28
elif x2[i]<0.7:
T3=30
elif x2[i]<0.9:
T3=32
else:T3=34
# print(T3)
if (T3<T2+T1).all():
s+=1
continue
print(s/10000)
看第二题:
代码如下:
# -*- coding: utf-8 -*-
"""
Created on Sun Aug 12 18:49:26 2018
@author: jj
"""
import random
'''
* ━━━━━━神兽出没━━━━━━
* ┏┓ ┏┓
* ┏┛┻━━━┛┻┓
* ┃ ┃
* ┃ ━ ┃
* ┃ ┳┛ ┗┳ ┃
* ┃ ┃
* ┃ ┻ ┃
* ┃ ┃
* ┗━┓ ┏━┛Code is far away from bug with the animal protecting
* ┃ ┃ 神兽保佑,代码无bug
* ┃ ┃
* ┃ ┗━━━┓
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛
*
* ━━━━━━感觉萌萌哒━━━━━━
'''
x1=[random.random() for i in range(365)]
x2=[random.random() for i in range(365)]
def a():
for i in range(1,365):
if x1[i]<0.35:
if x2[i]<0.03 :
news=40
elif x2[i]<0.08:
news=50
elif x2[i]<0.23:
news=60
elif x2[i]<0.43:
news=70
elif x2[i]<0.78:
news=80
elif x2[i]<0.93:
news=90
else :
news=100
elif x1[i]<0.8:
if x2[i]<0.10:
news=40
elif x2[i]<0.28:
news=50
elif x2[i]<0.68:
news=60
elif x2[i]<0.88:
news=70
elif x2[i]<0.96:
news=80
else :
news=90
else:
if x2[i]<0.44:
news=40
elif x2[i]<0.66:
news=50
elif x2[i]<0.82:
news=60
elif x2[i]<0.94:
news=70
else :
news=80
return news
def sb(n,news):
paper = 10*n
if paper>=news: #news为需求量
sale=news
remand=paper-news #remand为需要退回的报纸
else:
sale=paper
remand=0
sb = 2*sale-1.3*paper+0.2*remand#sb代表利润
return sb
if __name__ == '__main__':
news=a()
optmoney=sb(4,news)
for i in range(5,11):
if sb(i,news)>optmoney:
optnews=i*10
optmoney=sb(i,news)
# print(i,sb(i)/364)
print(optnews,optmoney,optmoney/364)
好啦,这次就到这里,舒服。。。
相关阅读
学python也快2个礼拜了,从开始看别人写的爬虫代码,然后试着抄着学习,感觉没太大进步,最大收获就是改了几处bug(可能有些地方不适用我的
Begals是可以和朋友一起玩的一个推理游戏。你的朋友想到一个随机的、没有重复的3位数字,你尝试去猜测它是什么。 每次猜测之后,朋友
前言 博主本科是数学专业,研究生读的是计算机专业,其中参加了本科生的全国大学生数学建模竞赛和研究生数学建模竞赛共三次。本科参
昨天刷头条时得知赵丽颖当妈妈了。作为一名程序员突发奇想,不如用Python简单叙述一下冯绍峰和赵丽颖的爱情故事,于是有了本文。 代
A5创业网(公众号:iadmin5)1月31日消息,近日有消息称便利蜂正在裁员并且出了新招,要求员工参加数学考试,考试不及格的都开除。对此,便利