73920


①計算1と計算2の使い方の違いを教えて下さい。  
②キーインを少なくしたいので、piだけでできると助かります。  
③(追加)ルートの正解は、sympyで、できるはず?

sympyで入試問題に挑戦！  
解説は、理解できてません。方べきの定理ですか?

(参考)入試問題に挑戦！ 平成17年宮城県(超難)  
<http://www.5kaku.net/?p=9299>  
(参考)WolframAlphaで  
28/3 π - 3 sqrt(3)  
[https://www.wolframalpha.com/input/?i=28%2F3+%C3%97+%CF%80+%E2%80%93+3%E2%88%9A3+&lang=ja](https://www.wolframalpha.com/input/?i=28%2F3+%C3%97+%CF%80+%E2%80%93+3%E2%88%9A3+&lang=ja)

[code]

    import math
    from sympy import *
    def my_sanArea(a,b,deg):
        return 1/2*a*b*sin(deg*math.pi/180)
    def my_yumArea(r,deg):
        return 1/2*r**2*(deg*math.pi/180-sin(deg*math.pi/180))
    g=8.0
    L=2.0
    # t=(180-60)*pi/180      #計算1
    t=(180-60)*math.pi/180   #計算2
    #
    P0= Point(0.0, 0.0)
    P1= P0+Point(-g/2, 0.0)
    P2= P0+Point( g/2, 0.0)
    P3= P0+Point(L*cos(t), L*sin(t))
    C123 = Circle(P1, P2, P3)
    P0P2 = P0.distance(P2)
    P1P3 = P1.distance(P3)
    AS1 = my_sanArea(g/2,L,60.0)
    AR1 = my_yumArea(C123.radius,math.asin(P1P3/2/C123.radius)*180/math.pi*2)
    #
    result = C123.intersection(Line(P3, P0))
    PK = Point(result[1][0], result[1][1])
    P0PK = P0.distance(PK)
    P2PK = P2.distance(PK)
    AS2 = my_sanArea(P0P2,P0PK,60.0)
    AR2 = my_yumArea(C123.radius,math.asin(P2PK/2/C123.radius)*180/math.pi*2)
    #
    print('面積=',AS1+AR1+AS2+AR2)
    print('面積=',float(AS1+AR1+AS2+AR2))
    
    # 正解            28/3 × π – 3√3 c㎡
    # wolfram   面積= 24.125379010798105011735665886091076485011831966069845778265395256...
    # AutoCAD   面積= 2412.53790108　ｍｍ2
    #
    # 計算1の結果 面積= 24.1253790107981
    # 計算1の結果 面積= 24.125379010798106
    # 計算2の結果 面積= 10.2689725502471 + 5.54256258422039e-13*sqrt(625000000000001464921241321)
    # 計算2の結果 面積= 24.12537901079808
    
[/code]


CC BY-SA 4.0
2021-02-10T10:49:13.643
73916
2021-02-10T14:27:48.263
2021-02-10T13:51:27.447
17199
17199
question
sympy 数学
sympyで、円周率(piとmath.pi)の使い方の違いを教えて下さい。


`pi` は `from sympy import *` でインポートされたもので、元々は `sympy.pi` です。円周率を表します。
<https://docs.sympy.org/latest/modules/core.html?highlight=pi#pi>

`math.pi` は Python の標準ライブラリの math モジュールで定義されている定数です。円周率を利用可能な精度の浮動小数点数で表します。
<https://docs.python.org/ja/3/library/math.html#math.pi>

①計算1は `sympy.pi`
に関して記号計算を行うので、正確に(2/3)πを表します。計算2は精度に限りのある浮動小数点数計算なので、(2/3)πの近似値になります。手元の環境では2.0943951023931953でした。

②何を計算したいかによります。片方の `pi` だけ使うならそちらだけ from-import でインポートしてください。両方とも使うなら from-
import-as で短い別名をつけることもできます。

[code]

    import math
    from sympy import *
    from math import pi as mpi
    
    t=(180-60)*pi/180      # 計算1
    t=(180-60)*math.pi/180 # 計算2
    t=(180-60)*mpi/180     # 計算2′
    
[/code]


CC BY-SA 4.0
2021-02-10T14:27:48.263
73920
2021-02-10T14:27:48.263
2259
73916
answer