from sympy import *
α = symbols('α')
v=250
l=1000
y=100
m=4
k=0.35
g=9.8
v=float(v)
l=float(l)
y=float(y)
def f(α):
s=(m*g/(k*v*cos(α))+tan(α))*l+m**2*g/k**2*ln(1-0.0875*l/(v*cos(α)))-y
return s
d=0
while f(d)<0:
d=d+0.01
if f(d)>0:
b=d
a=d-0.01
break
elif d>1.6:
break
x=b
while f(x)>0:
x=x+0.01
if f(x)<0:
e=x
c=x-0.01
break
elif x>1.6:
break
print(a)
print(b)
print(c)
print(e)
print(f(a))
print(f(b))
print(f(c))
print(f(e))
while f(a)*f(b)<0:
if f(a)*f((a+b)/2)<0:
b=(a+b)/2
elif f((a+b)/2)*f(b)<0:
a=(a+b)/2
elif (f(a)-f(b))**2<=10**(-10):
print("α(1)=",end='')
print(57.29578*(a+b)/2)
break
while f(c)*f(e)<0:
if f(c)*f((c+e)/2)<0:
e=(c+e)/2
elif f((c+e)/2)*f(e)<0:
c=(c+e)/2
elif (f(c)-f(e))**2<=10**(-1):
print("α(1)=",end='')
print(57.29578*(c+e)/2)
break
本人新手,自己編的這個二分法求根不知道為什么有問題,第二個根出不來,各位大神能不能幫我看一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/257241.html
