Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

All published worksheets from http://sagenb.org

Views: 168757
Image: ubuntu2004

this is a very fast approximation of a trigonometric function like cos using polynomials

cosplot = plot(cos(x), (x,-pi/2,pi), color="red")
approx(x,k) = 1-(x/(pi/2))^2 + k *(x^2*(x - (pi/2)))
l_sum=[(k, sum([abs(cos(_) - approx(_,k).n()) for _ in srange(0,pi/2,0.05,include_endpoint=True)])) for k in sxrange(0.093000,0.095000,.000001,include_endpoint=True)] k_best_sum = sorted(l_sum, key=lambda x:x[1])[0][0] print k_best_sum
0.0937900000000008
l_max=[(k, max([abs(cos(_) - approx(_,k).n()) for _ in srange(0,pi/2,0.05,include_endpoint=True)])) for k in sxrange(0.093000,0.0950000,.000001,include_endpoint=True)] k_best_max = sorted(l_max, key=lambda x:x[1])[0][0] print k_best_max
0.0945440000000015
p1 = plot(cos(x) - approx(x,k_best_sum), (x,-0.1, pi/2+.1), color="green") p2 = plot(cos(x) - approx(x,k_best_max), (x,-0.1, pi/2+.1), color="orange") print 'error plot: green=best-sum, orange=best-max' show(p1 + p2)
error plot: green=best-sum, orange=best-max
show(cosplot + plot(approx(x,k_best_max), (x,0,pi/2)), ymin=-1, ymax=1)