jeudi 23 juin 2016

Python - Area of a Flag

Trying to solve Building Skills with Python, area of a flag . I am trying to solve for the blue area however I'm off by about 2%. Additionally when I total up the other areas, the total does not equal the area of the flag itself. My code is as follows: import math def area_star(width): a = 36.00 b = 72.00 radius_star = 0.0308 * width a_radians = float(a) * float(math.pi) / float(180) b_radians = float(b) * float(math.pi) / float(180) a_sin = math.sin(float(a_radians)/float(2)) b_sin = math.sin(float(b_radians)/float(2)) top = a_sin*b_sin c_radians = float((a+b)*math.pi)/float(180) c_sin = math.sin(c_radians) bottom = 0.5 * c_sin return 5 * float(top)/float(bottom) * radius_star * radius_star def fifty_stars(width): return 50 * area_star(width) def calculate_areas(width): WIDTH = width length = 1.9 * WIDTH width_union = float(7)/float(13) * WIDTH length_union = 0.76*WIDTH NUMBER_RED_STRIPES = 7 NUMBER_WHITE_STRIPES = 6 width_strip_denom = NUMBER_RED_STRIPES+NUMBER_WHITE_STRIPES width_strip = float(1)/float(width_strip_denom)*WIDTH blue_area = length_union * width_union - fifty_stars(WIDTH) white_area = 3 * width_strip * (length*length_union)+3*width_strip*length+fifty_stars(WIDTH) red_area = 4 * width_strip*(length*length_union)+3*width_strip*length print 'Our width was given as : %f' %WIDTH print 'Our length calculates as : %f' %length print 'Width of our union is: %f' %width_union print 'Length of our union is: %f' %length_union print 'Area of a star is %f'%area_star(WIDTH) print 'Area of 50 stars is %f'%fifty_stars(WIDTH) print 'Area of our flag in total is : %f '%(WIDTH*length) print 'Actual WHITE AREA is %f'%white_area print 'Actual RED AREA is %f'%red_area print 'Expected BLUE AREA is %f' %(WIDTH*length*.1873) print 'Actual BLUE AREA is %f'%blue_area print 'SumofallAreas: %f' % (red_area+white_area+blue_area) calculate_areas(1.0) My output is: Our width was given as : 1.000000 Our length calculates as : 1.900000 Width of our union is: 0.538462 Length of our union is: 0.760000 Area of a star is 0.001812 Area of 50 stars is 0.090587 Area of our flag in total is : 1.900000 Actual WHITE AREA is 0.862279 Actual RED AREA is 0.882769 Expected BLUE AREA is 0.355870 Actual BLUE AREA is 0.318644 SumofallAreas: 2.063692 Is there something about Float that could explain the variance or is the problem in my code itself?

Aucun commentaire:

Enregistrer un commentaire