2016-12-02 3 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 

Может ли кто-нибудь объяснить эту разницу для меня? Должен ли я изменить значение по умолчанию на моем компьютере? Кроме того, здесь есть pi() значение моего компьютера:

import math 

print (math.pi) 

который точно так же, как и фактическое pi() значение:

3.14159265359 

ответ

1

Из Shapely User Manual:

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. 

За документацию, возвращаемое значение является только приближением. Еще немного ниже в документе приведен пример окружности:

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 

Опять же, в документации указано, что это всего лишь приблизительное значение. 99,8% от 7,0688, фактическое значение с радиусом 1,5, составляет приблизительно 7,054, что является величиной, которая оптимально вычисляется.

Вы можете повысить точность путем пропускания в более высоком разрешении:

a = Point(1, 1).buffer(1.5, resolution=32) 
Смежные вопросы