-9

この関数のコードを書き込もうとしていますがasin、python 2.7 で作業することができません。なぜアイデアはありますか?

import math
from decimal import *

def main():
    H = raw_input ("Please enter hight:")
    H = int(float(H))
    m = raw_input ("Please enter crest thickness:")
    m = int(float(m))
    n = raw_input ("Please enter base thikness:")
    n = int(float(n))

    Fx = 0.0
    Fy = 0.0
    Magnitude = 0.0
    Direction = 0.0

p = 1000 #dencity
g = 9.81 #gravity

R = math.sqrt(H*H + n*n)
#Force in x direction
Fx = (-p*g*m*(H*H))/2.0
#Force in y direction
Fy = -p*g*R*(((math.asin(n/H))/2.0)-sin((2*math.asin(n/H))/4.0))

#Overall force
Direction = math.atan(Fy/Fx)
Magnitude = sqrt(Fx*Fy + Fy*Fy)

print ("The force magnitude is", Magnitude)
print ("The force direction is", Direction)
4

2 に答える 2

0

コード修正

いくつかの問題があります:

  1. 組み込みの はありません。次のようsinに使用する必要があります。mathmath.sin

    ---> 23 Fy = -p*g*R*(((math.asin(n/H))/2.0)-sin((2*math.asin(n/H))/4.0))
    
    NameError: name 'sin' is not defined
    
  2. ゼロ除算があります。

    ---> 26 Direction = math.atan(Fy/Fx)
    
    ZeroDivisionError: float division by zero
    

    n/H@MichaelButscher が述べているように、これは整数除算に由来します。

  3. sqrt組み込みはありませんが、使用することもできますmath.sqrt

    ---> 30 Magnitude = sqrt(Fx*Fy + Fy*Fy)
    
    NameError: name 'sqrt' is not defined
    
  4. 入力がfloats の場合、それらは s に切り捨てられますがint、これは不要に思えます。

最終修正コード:

import math
from decimal import *
from __future__ import division

H = 10.0 # raw_input("Please enter hight:")
H = float(H)
m = 0.2 # raw_input("Please enter crest thickness:")
m = float(m)
n = 2.0 # raw_input("Please enter base thikness:")
n = float(n)

Fx = 0.0
Fy = 0.0
Magnitude = 0.0
Direction = 0.0

p = 1000 #dencity
g = 9.81 #gravity

R = math.sqrt(H*H + n*n)
#Force in x direction
Fx = (-p*g*m*(H*H))/2.0
#Force in y direction
Fy = -p*g*R*(((math.asin(n/H))/2.0)-math.sin((2*math.asin(n/H))/4.0))

#Overall force
Direction = math.atan(Fy/Fx)
Magnitude = math.sqrt(Fx*Fy + Fy*Fy)

print ("The force magnitude is", Magnitude)
print ("The force direction is", Direction)

('The force magnitude is', 1291.77652735702)
('The force direction is', 0.00017336501979739458)
于 2015-05-04T00:15:46.547 に答える