2016-12-02 19 views
0

計算領域の不正確さとPythonの実際の値に関する質問があります。私はそれについてたくさん調べましたが、何も見つかりませんでした。私はこの違いが次の計算を不正確にしてしまうのではないかと心配しています。ここ は、私はそれで、半径1.5の円の面積を計算するコードです:Pythonで計算された面積値と実際の値の差

from shapely.geometry import Point, Polygon 

a = Point(1, 1).buffer(1.5) 

print (a.area) 

と私が得た結果は次のとおりです。

7.05723410373 

しかし、円の面積の実際の値半径1.5の場合:

pi()*(1.5^2) = 7.0685834705 

誰でもこの違いを私に説明できますか?コンピュータのデフォルト値を変更する必要がありますか? 、マニュアルに従って

object.buffer(distance, resolution=16, cap_style=1, join_style=1, mitre_limit=1.0) 
    Returns an approximate representation of all points within a given distance of the this geometric object. 

import math 

print (math.pi) 

正確に実際のpi()値と同じです::Shapely User Manualから

3.14159265359 

答えて

1

はまた、ここに私のコンピュータのpi()値であり、戻り値は近似値に過ぎません。このドキュメントのさらに下には、円の例があります。

The default (resolution of 16) buffer of a point is a polygonal patch with 99.8% of the area of the circular disk it approximates. 

>>> p = Point(0, 0).buffer(10.0) 
>>> len(p.exterior.coords) 
66 
>>> p.area 
313.65484905459385 

また、ドキュメントには近似値のみが記載されています。半径7.0の実際の値である7.068の99.8%はおよそ7.054であり、これは滑らかに計算された値です。

あなたは、より高い解像度を渡すことによって、精度を向上させることができます。

a = Point(1, 1).buffer(1.5, resolution=32) 
関連する問題