页次: 1
代码如下:
import math
import numpy as np
import pandas as pd
#df = pd.DataFrame(columns=['FAI', 'number'])
#df2 = pd.DataFrame(columns=['FAI','F1','F2'])
number=0
d =0.35 #m
r =34.95 / 2 #m
print(r)
g = 9.788 #m/s**2
m = 15 #kg
density = 0.859*1000 #kg/m**3 #1000kg/m**3 = 1g/cm**3
v = 0.0075 #m
l4 = r
l5 = r
y3 = r
ls_x2=[]
ls_y2=[]
ls_F1=[]
#x1 y1 FAI l1 A B C
for FAI in np.arange(0,180,0.00001):
#df = df._append({'FAI': FAI-1, 'number': number}, ignore_index=True)
number = 0
for x1 in np.arange(0,r):
for y1 in np.arange(-r,r):
if (x1**2 + y1**2)**(1/2) <= r:
FAI_tmp = math.radians(FAI)
y2 = y1 + d
x2 = x1
l1 = pow(pow(x2,2) + pow((y2 - y3),2),1/2)
l3 = pow(pow(x2,2) + pow(y2,2),1/2)
A1=(l4**2 + l1**2 - l3**2)/(2*l4*l1)
if A1>1 or A1<-1:
continue
A = math.acos(A1) #jiao arfa
B = (math.pi - FAI_tmp) / 2 #jiao beita
C = B - A #jiao sigema
d1 = (l4**2 + l5**2 - 2*l4*l5*math.cos(FAI))**(1/2)
d2 = (l1**2+d1**2-2*l1*d1*math.cos(C))**(1/2)
# l1 = (x1**2 + (y1 + d - r)**2)**(1/2)
#l2
l2 = d1+d2
#F1 F2
G = m*g #N
F_f = density*g*v #N
Y = math.acos((l1**2 + d2**2 - d1**2)/(2*l1*d2)) #hu du zhi
if math.sin(A)==0 or (math.sin(Y - A)/math.sin(A)*math.cos(A) + math.cos(Y - A)) ==0:
continue
F2 = (G - F_f) / (math.sin(Y - A)/math.sin(A)*math.cos(A) + math.cos(Y - A))
F1 = F2 * math.sin(Y - A) / math.sin(A)
if F1>=0 and F2>=0:
ls_F1.append(F1)
ls_x2.append(x2)
ls_y2.append(y2)
print("FAI = "+str(FAI)+"("+str(x1)+","+str(y1)+")"+" FINSHED")
max=0
flag=0
flag2=0
for i in ls_F1:
if max<=i:
max=i
flag2=flag
flag += 1
print("MAX_FOECE_FAI = "+"("+str(ls_x2[flag2])+","+str(ls_y2[flag2])+")")
最近编辑记录 站台上的车 (2024-12-06 17:01:02)
要发车了,谁要登上学习(arch)的火车?:)
离线
你们搞竞赛的真的是一点编程都不学的吗?代码乱得要命,连个 main 函数也不写,不慢才怪了呢。
离线
第一次参加:|主要是计算量比较少,直接用空行分开不同部分的计算过程对于我们组来说就够了,也方便直接看到所有过程
但为什么使用main函数会更快呢?是与全局变量有关吗?
要发车了,谁要登上学习(arch)的火车?:)
离线
是。Python 和 Lua 一样,访问全局变量要查哈希表,会比访问局部变量慢很多。
你代码全摊平这么长,哪里方便看到所有过程了?买个带鱼屏竖着看?
离线
是。Python 和 Lua 一样,访问全局变量要查哈希表,会比访问局部变量慢很多。
你代码全摊平这么长,哪里方便看到所有过程了?买个带鱼屏竖着看?
哈希表是类似这个东西吗?:
c3a33d98a4be888c7ca60fbdb20ca521 opt/sogoupinyin/files/bin/sogoupinyin-crashupload
好像软件包里也有啊?
要发车了,谁要登上学习(arch)的火车?:)
离线
呃,看来真的是一点也不懂编程……就是 Python 的 dict 这样的数据类型。
离线
浮点数不要用 == 比较, 用 math.isclose .举个例子.
>>> import math
>>> math.sin(math.pi)==0
False
>>> math.isclose(math.sin(math.pi),0.0,abs_tol=1e-7)
True
离线
页次: 1