# 2D-kromme import numpy as np ubegin = 0.000000001 ueinde = 1.000000001 aantalstappen = 1000000 stap = (ueinde - ubegin) / aantalstappen nulpunt = 0.646027717321562 ibegin = nulpunt - 0.02 ieinde = nulpunt + 0.02 phi0 = 0 E = 2.0117769801886 J = 5 K = E U = 1 - K**2 a = 1 b = -1 c = 1 / J**2 d = - U / J**2 u = ubegin fu = 1 / np.sqrt (a * u**3 + b * u**2 + c * u + d) phi = phi0 while u < ueinde: if u > ibegin: stap = stap / 1000 ibegin = 2 * ueinde if u > ieinde: stap = stap * 1000 ieinde = 2 * ueinde u = u + stap fuprev = fu fu = 1 / np.sqrt (a * u**3 + b * u**2 + c * u + d) phi = phi + (fuprev + fu) * stap / 2 r = 1 / u x = r * np.cos (phi) y = r * np.sin (phi) print ('{:10.5e}'.format (x), '{:10.5e}'.format (y))