# 2D-kromme import math from decimal import * getcontext().prec = 50 ubegin = Decimal ('0.000000001') ueinde = Decimal ('1.000000001') aantalstappen = Decimal ('1000') stap = (Decimal (ueinde) - Decimal (ubegin)) / Decimal (aantalstappen) nulpunt = Decimal ('0.646027717321562') iabegin = Decimal (nulpunt) - Decimal ('0.01') iaeinde = Decimal (nulpunt) + Decimal ('0.01') ibbegin = Decimal (nulpunt) - Decimal ('0.001') ibeinde = Decimal (nulpunt) + Decimal ('0.001') phi0 = Decimal ('0') E = Decimal ('2.01177698018854097539') J = Decimal ('5') K = Decimal (E) U = Decimal ('1') - Decimal (K) ** Decimal ('2') a = Decimal ('1') b = Decimal ('-1') c = Decimal ('1') / Decimal (J) ** Decimal ('2') d = - Decimal (U) / Decimal (J) ** Decimal ('2') u = Decimal (ubegin) fu = Decimal ('1') / (Decimal (a) * Decimal (u) ** Decimal ('3') + Decimal (b) * Decimal (u) ** Decimal ('2') \ + Decimal (c) * Decimal (u) + Decimal (d)) ** Decimal ('0.5') phi = Decimal (phi0) while u < ueinde: if u > iabegin: stap = Decimal (stap) / Decimal ('10') iabegin = Decimal ('2') * Decimal (ueinde) if u > ibbegin: stap = Decimal (stap) / Decimal ('10000000') ibbegin = Decimal ('2') * Decimal (ueinde) if u > ibeinde: stap = Decimal (stap) * Decimal ('10000000') ibeinde = Decimal ('2') * Decimal (ueinde) if u > iaeinde: stap = Decimal (stap) * Decimal ('10') iaeinde = Decimal ('2') * Decimal (ueinde) u = Decimal (u) + Decimal (stap) fuprev = Decimal (fu) fu = Decimal ('1') / (Decimal (a) * Decimal (u) ** Decimal ('3') + Decimal (b) * Decimal (u) ** Decimal ('2') \ + Decimal (c) * Decimal (u) + Decimal (d)) ** Decimal ('0.5') phi = Decimal (phi) + (Decimal (fuprev) + Decimal (fu)) * Decimal (stap) / Decimal ('2') r = Decimal ('1') / Decimal (u) x = Decimal (r) * Decimal (math.cos (Decimal (phi))) y = Decimal (r) * Decimal (math.sin (Decimal (phi))) print ('{:10.5e}'.format (x), '{:10.5e}'.format (y))