Exceptions einheitlich
This commit is contained in:
@@ -245,7 +245,7 @@ def gha1_ES(ell: EllipsoidTriaxial, beta0: float, omega0: float, alpha0: float,
|
|||||||
P_all.append(P)
|
P_all.append(P)
|
||||||
alpha_end.append(alpha)
|
alpha_end.append(alpha)
|
||||||
if step > nsteps_est + 50:
|
if step > nsteps_est + 50:
|
||||||
raise RuntimeError("Zu viele Schritte – vermutlich Konvergenzproblem / falsche Azimut-Konvention.")
|
raise RuntimeError("GHA1_ES: Zu viele Schritte – vermutlich Konvergenzproblem / falsche Azimut-Konvention.")
|
||||||
Pk = P_all[-1]
|
Pk = P_all[-1]
|
||||||
alpha1 = float(alpha_end[-1])
|
alpha1 = float(alpha_end[-1])
|
||||||
|
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ def gha1_ana(ell: EllipsoidTriaxial, point: NDArray, alpha0: float, s: float, ma
|
|||||||
|
|
||||||
_, _, h = ell.cart2geod(point_end, "ligas3")
|
_, _, h = ell.cart2geod(point_end, "ligas3")
|
||||||
if h > 1e-5:
|
if h > 1e-5:
|
||||||
raise Exception("Analytische Methode ist explodiert, Punkt liegt nicht mehr auf dem Ellipsoid")
|
raise Exception("GHA1_ana: explodiert, Punkt liegt nicht mehr auf dem Ellipsoid")
|
||||||
|
|
||||||
return point_end, alpha_end
|
return point_end, alpha_end
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ def gha1_approx(ell: EllipsoidTriaxial, p0: np.ndarray, alpha0: float, s: float,
|
|||||||
points = [p0]
|
points = [p0]
|
||||||
alphas = [alpha0]
|
alphas = [alpha0]
|
||||||
s_curr = 0.0
|
s_curr = 0.0
|
||||||
|
last_sigma = None
|
||||||
|
|
||||||
while s_curr < s:
|
while s_curr < s:
|
||||||
ds_step = min(ds, s - s_curr)
|
ds_step = min(ds, s - s_curr)
|
||||||
@@ -30,6 +31,8 @@ def gha1_approx(ell: EllipsoidTriaxial, p0: np.ndarray, alpha0: float, s: float,
|
|||||||
alpha1 = alphas[-1]
|
alpha1 = alphas[-1]
|
||||||
|
|
||||||
sigma = func_sigma_ell(ell, p1, alpha1)
|
sigma = func_sigma_ell(ell, p1, alpha1)
|
||||||
|
if last_sigma is not None and np.linalg.norm(sigma - last_sigma) > 0.2:
|
||||||
|
raise Exception("GHA1_approx: Plötzlicher Richtungswechsel")
|
||||||
p2 = p1 + ds_step * sigma
|
p2 = p1 + ds_step * sigma
|
||||||
p2 = ell.point_onto_ellipsoid(p2)
|
p2 = ell.point_onto_ellipsoid(p2)
|
||||||
|
|
||||||
@@ -43,7 +46,7 @@ def gha1_approx(ell: EllipsoidTriaxial, p0: np.ndarray, alpha0: float, s: float,
|
|||||||
|
|
||||||
ds_step = np.linalg.norm(p2 - p1)
|
ds_step = np.linalg.norm(p2 - p1)
|
||||||
s_curr += ds_step
|
s_curr += ds_step
|
||||||
if s_curr > 10000000:
|
last_sigma = sigma
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if all_points:
|
if all_points:
|
||||||
@@ -79,10 +82,10 @@ def show_points(points: NDArray, p0: NDArray, p1: NDArray):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
ell = EllipsoidTriaxial.init_name("BursaSima1980round")
|
ell = EllipsoidTriaxial.init_name("BursaSima1980round")
|
||||||
P0 = ell.para2cart(0.2, 0.3)
|
P0 = ell.ell2cart(wu.deg2rad(10), wu.deg2rad(1))
|
||||||
alpha0 = wu.deg2rad(35)
|
alpha0 = wu.deg2rad(2)
|
||||||
s = 13000000
|
s = 100000
|
||||||
P1_app, alpha1_app, points, alphas = gha1_approx(ell, P0, alpha0, s, ds=10000, all_points=True)
|
P1_app, alpha1_app, points, alphas = gha1_approx(ell, P0, alpha0, s, ds=10000, all_points=True)
|
||||||
P1_ana, alpha1_ana = gha1_ana(ell, P0, alpha0, s, maxM=60, maxPartCircum=16)
|
P1_ana, alpha1_ana = gha1_ana(ell, P0, alpha0, s, maxM=20, maxPartCircum=2)
|
||||||
show_points(points, P0, P1_ana)
|
show_points(points, P0, P1_ana)
|
||||||
print(np.linalg.norm(P1_app - P1_ana))
|
print(np.linalg.norm(P1_app - P1_ana))
|
||||||
|
|||||||
@@ -78,6 +78,10 @@ def gha1_num(ell: EllipsoidTriaxial, point: NDArray, alpha0: float, s: float, nu
|
|||||||
if alpha1 < 0:
|
if alpha1 < 0:
|
||||||
alpha1 += 2 * np.pi
|
alpha1 += 2 * np.pi
|
||||||
|
|
||||||
|
_, _, h = ell.cart2geod(point1, "ligas3")
|
||||||
|
if h > 1e-5:
|
||||||
|
raise Exception("GHA1_num: explodiert, Punkt liegt nicht mehr auf dem Ellipsoid")
|
||||||
|
|
||||||
if all_points:
|
if all_points:
|
||||||
return point1, alpha1, werte
|
return point1, alpha1, werte
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ def gha2_ES(ell: EllipsoidTriaxial, P0: NDArray, Pk: NDArray, maxSegLen: float =
|
|||||||
startIter += 1
|
startIter += 1
|
||||||
maxIter = 10000
|
maxIter = 10000
|
||||||
if startIter > maxIter:
|
if startIter > maxIter:
|
||||||
raise RuntimeError("Abbruch: maximale Iterationen überschritten.")
|
raise RuntimeError("GHA2_ES: maximale Iterationen überschritten")
|
||||||
new_points.append(B)
|
new_points.append(B)
|
||||||
|
|
||||||
points = new_points
|
points = new_points
|
||||||
|
|||||||
@@ -282,7 +282,7 @@ def gha2_num(
|
|||||||
if (best is None) or (s_quick < best[0]):
|
if (best is None) or (s_quick < best[0]):
|
||||||
best = (s_quick, sol)
|
best = (s_quick, sol)
|
||||||
if best is None:
|
if best is None:
|
||||||
raise RuntimeError("Keine Startwert-Variante konvergiert (lambda-Fall).")
|
raise RuntimeError("GHA2_num: Keine Startwert-Variante konvergiert (lambda-Fall)")
|
||||||
beta_p0_sol = best[1]
|
beta_p0_sol = best[1]
|
||||||
|
|
||||||
beta_p0 = float(beta_p0_sol)
|
beta_p0 = float(beta_p0_sol)
|
||||||
@@ -362,7 +362,7 @@ def gha2_num(
|
|||||||
break
|
break
|
||||||
|
|
||||||
if abs(Y3_end) < 1e-20:
|
if abs(Y3_end) < 1e-20:
|
||||||
raise RuntimeError("Abbruch (Ableitung ~ 0) im beta-Fall.")
|
raise RuntimeError("GHA2_num: Ableitung ~ 0 im beta-Fall")
|
||||||
|
|
||||||
step = delta / Y3_end
|
step = delta / Y3_end
|
||||||
step = np.clip(step, -1.0, 1.0)
|
step = np.clip(step, -1.0, 1.0)
|
||||||
|
|||||||
@@ -114,6 +114,7 @@
|
|||||||
"# test = \"Karney\"\n",
|
"# test = \"Karney\"\n",
|
||||||
"# test = \"Panou\"\n",
|
"# test = \"Panou\"\n",
|
||||||
"test = \"Random\"\n",
|
"test = \"Random\"\n",
|
||||||
|
"\n",
|
||||||
"if test == \"Karney\":\n",
|
"if test == \"Karney\":\n",
|
||||||
" ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"KarneyTest2024\")\n",
|
" ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"KarneyTest2024\")\n",
|
||||||
" examples = get_examples_karney(4, seed=42)\n",
|
" examples = get_examples_karney(4, seed=42)\n",
|
||||||
@@ -128,9 +129,9 @@
|
|||||||
" examples.append(example)\n",
|
" examples.append(example)\n",
|
||||||
"elif test == \"Random\":\n",
|
"elif test == \"Random\":\n",
|
||||||
" ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"BursaSima1980round\")\n",
|
" ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"BursaSima1980round\")\n",
|
||||||
" examples = [] # beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s\n",
|
" examples = []\n",
|
||||||
" random.seed(42)\n",
|
" random.seed(42)\n",
|
||||||
" for _ in range(30):\n",
|
" for _ in range(50):\n",
|
||||||
" beta0 = wu.deg2rad(random.randint(-90, 90))\n",
|
" beta0 = wu.deg2rad(random.randint(-90, 90))\n",
|
||||||
" lamb0 = wu.deg2rad(random.randint(-179, 180))\n",
|
" lamb0 = wu.deg2rad(random.randint(-179, 180))\n",
|
||||||
" alpha0_ell = wu.deg2rad(random.randint(0, 359))\n",
|
" alpha0_ell = wu.deg2rad(random.randint(0, 359))\n",
|
||||||
@@ -151,16 +152,36 @@
|
|||||||
},
|
},
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"source": [
|
"source": [
|
||||||
"if test != \"Random\":\n",
|
|
||||||
"results = {}\n",
|
"results = {}\n",
|
||||||
"for i, example in enumerate(examples):\n",
|
"for i, example in enumerate(examples):\n",
|
||||||
" print(f\"----- Beispiel {i+1}/{len(examples)}\")\n",
|
" print(f\"----- Beispiel {i+1}/{len(examples)}\")\n",
|
||||||
" example_results = {}\n",
|
" example_results = {}\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
" if test != \"Random\":\n",
|
||||||
" beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example\n",
|
" beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example\n",
|
||||||
" P0 = ell.ell2cart(beta0, lamb0)\n",
|
" P0 = ell.ell2cart(beta0, lamb0)\n",
|
||||||
" P1 = ell.ell2cart(beta1, lamb1)\n",
|
" P1 = ell.ell2cart(beta1, lamb1)\n",
|
||||||
" _, _, alpha0_para = alpha_ell2para(ell, beta0, lamb0, alpha0_ell)\n",
|
" _, _, alpha0_para = alpha_ell2para(ell, beta0, lamb0, alpha0_ell)\n",
|
||||||
|
" else:\n",
|
||||||
|
" beta0, lamb0, alpha0_ell, s = example\n",
|
||||||
|
" P0 = ell.ell2cart(beta0, lamb0)\n",
|
||||||
|
" _, _, alpha0_para = alpha_ell2para(ell, beta0, lamb0, alpha0_ell)\n",
|
||||||
|
"\n",
|
||||||
|
" # try:\n",
|
||||||
|
" # P1, alpha1_para = gha1_ana(ell, P0, alpha0_para, s, maxM=80, maxPartCircum=8)\n",
|
||||||
|
" # beta1, lamb1 = ell.cart2ell(P1)\n",
|
||||||
|
" # u1, v1 = ell.cart2para(P1)\n",
|
||||||
|
" # _, _, alpha1_ell = alpha_para2ell(ell, u1, v1, alpha1_para)\n",
|
||||||
|
" # except Exception as e:\n",
|
||||||
|
" # print(\"Referenz-Berechnung analytisch fehlgeschlagen: \", e)\n",
|
||||||
|
" # continue\n",
|
||||||
|
"\n",
|
||||||
|
" try:\n",
|
||||||
|
" P1, alpha1_ell = gha1_num(ell, P0, alpha0_ell, s, num=10000)\n",
|
||||||
|
" beta1, lamb1 = ell.cart2ell(P1)\n",
|
||||||
|
" except Exception as e:\n",
|
||||||
|
" print(\"Referenz-Berechnung numerisch fehlgeschlagen: \", e)\n",
|
||||||
|
" continue\n",
|
||||||
"\n",
|
"\n",
|
||||||
" for steps in steps_gha1_num:\n",
|
" for steps in steps_gha1_num:\n",
|
||||||
" start = time.perf_counter()\n",
|
" start = time.perf_counter()\n",
|
||||||
@@ -303,131 +324,6 @@
|
|||||||
],
|
],
|
||||||
"execution_count": 15
|
"execution_count": 15
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"metadata": {},
|
|
||||||
"cell_type": "code",
|
|
||||||
"source": [
|
|
||||||
"if test == \"Random\":\n",
|
|
||||||
" results = {}\n",
|
|
||||||
" for i, example in enumerate(examples):\n",
|
|
||||||
" print(f\"----- Beispiel {i+1}/{len(examples)}\")\n",
|
|
||||||
" example_results = {}\n",
|
|
||||||
"\n",
|
|
||||||
" beta0, lamb0, alpha0_ell, s = example\n",
|
|
||||||
" P0 = ell.ell2cart(beta0, lamb0)\n",
|
|
||||||
" _, _, alpha0_para = alpha_ell2para(ell, beta0, lamb0, alpha0_ell)\n",
|
|
||||||
"\n",
|
|
||||||
" # P1_ana, alpha1_ana_para = gha1_ana(ell, P0, alpha0_para, s, maxM=60, maxPartCircum=4)\n",
|
|
||||||
" # beta1_ana, lamb1_ana = ell.cart2ell(P1_ana)\n",
|
|
||||||
" # _, _, alpha1_ana = alpha_para2ell(ell, beta1_ana, lamb1_ana, alpha1_ana_para)\n",
|
|
||||||
"\n",
|
|
||||||
" P1, alpha1_ell = gha1_num(ell, P0, alpha0_ell, s, num=10000)\n",
|
|
||||||
" beta1, lamb1 = ell.cart2ell(P1)\n",
|
|
||||||
"\n",
|
|
||||||
" for maxM in maxM_gha1_ana:\n",
|
|
||||||
" for parts in parts_gha1_ana:\n",
|
|
||||||
" start = time.perf_counter()\n",
|
|
||||||
" try:\n",
|
|
||||||
" P1_ana, alpha1_ana_para = gha1_ana(ell, P0, alpha0_para, s, maxM=maxM, maxPartCircum=parts)\n",
|
|
||||||
" end = time.perf_counter()\n",
|
|
||||||
" beta1_ana, lamb1_ana = ell.cart2ell(P1_ana)\n",
|
|
||||||
" _, _, alpha1_ana_ell = alpha_para2ell(ell, beta1_ana, lamb1_ana, alpha1_ana_para)\n",
|
|
||||||
" d_beta1 = abs(wu.rad2deg(beta1_ana - beta1)) / 3600\n",
|
|
||||||
" d_lamb1 = abs(wu.rad2deg(lamb1_ana - lamb1)) / 3600\n",
|
|
||||||
" d_alpha1 = abs(wu.rad2deg(alpha1_ana_ell - alpha1_ell)) / 3600\n",
|
|
||||||
" d_time = end - start\n",
|
|
||||||
" example_results[f\"GHA1_ana_{maxM}_{parts}\"] = (d_beta1, d_lamb1, d_alpha1, d_time)\n",
|
|
||||||
" except Exception as e:\n",
|
|
||||||
" print(e)\n",
|
|
||||||
" example_results[f\"GHA1_ana_{maxM}_{parts}\"] = (nan, nan, nan, nan)\n",
|
|
||||||
"\n",
|
|
||||||
" for dsPart in dsPart_gha1_approx:\n",
|
|
||||||
" ds = ell.ax/dsPart\n",
|
|
||||||
" start = time.perf_counter()\n",
|
|
||||||
" try:\n",
|
|
||||||
" P1_approx, alpha1_approx = gha1_approx(ell, P0, alpha0_ell, s, ds=ds)\n",
|
|
||||||
" end = time.perf_counter()\n",
|
|
||||||
" beta1_approx, lamb1_approx = ell.cart2ell(P1_approx)\n",
|
|
||||||
" d_beta1 = abs(wu.rad2deg(beta1_approx - beta1)) / 3600\n",
|
|
||||||
" d_lamb1 = abs(wu.rad2deg(lamb1_approx - lamb1)) / 3600\n",
|
|
||||||
" d_alpha1 = abs(wu.rad2deg(alpha1_approx - alpha1_ell)) / 3600\n",
|
|
||||||
" d_time = end - start\n",
|
|
||||||
" example_results[f\"GHA1_approx_{dsPart}\"] = (d_beta1, d_lamb1, d_alpha1, d_time)\n",
|
|
||||||
" except Exception as e:\n",
|
|
||||||
" print(e)\n",
|
|
||||||
" example_results[f\"GHA1_approx_{dsPart}\"] = (nan, nan, nan, nan)\n",
|
|
||||||
"\n",
|
|
||||||
" for dsPart in dsPart_gha1_ES:\n",
|
|
||||||
" ds = ell.ax/dsPart\n",
|
|
||||||
" start = time.perf_counter()\n",
|
|
||||||
" try:\n",
|
|
||||||
" P1_ES, alpha1_ES = gha1_ES(ell, beta0, lamb0, alpha0_ell, s, maxSegLen=ds)\n",
|
|
||||||
" end = time.perf_counter()\n",
|
|
||||||
" beta1_ES, lamb1_ES = ell.cart2ell(P1_ES)\n",
|
|
||||||
" d_beta1 = abs(beta1_ES - beta1)\n",
|
|
||||||
" d_lamb1 = abs(lamb1_ES - lamb1)\n",
|
|
||||||
" d_alpha1 = abs(alpha1_ES - alpha1_ell)\n",
|
|
||||||
" d_time = end - start\n",
|
|
||||||
" example_results[f\"GHA1_ES_{dsPart}\"] = (d_beta1, d_lamb1, d_alpha1, d_time)\n",
|
|
||||||
" except Exception as e:\n",
|
|
||||||
" print(e)\n",
|
|
||||||
" example_results[f\"GHA1_ES_{dsPart}\"] = (nan, nan, nan, nan)\n",
|
|
||||||
"\n",
|
|
||||||
" for steps in steps_gha2_num:\n",
|
|
||||||
" start = time.perf_counter()\n",
|
|
||||||
" try:\n",
|
|
||||||
" with warnings.catch_warnings():\n",
|
|
||||||
" warnings.simplefilter(\"ignore\", RuntimeWarning)\n",
|
|
||||||
" alpha0_num, alpha1_num_2, s_num = gha2_num(ell, beta0, lamb0, beta1, lamb1, n=steps)\n",
|
|
||||||
" end = time.perf_counter()\n",
|
|
||||||
" d_alpha0 = abs(wu.rad2deg(alpha0_num - alpha0_ell)) / 3600\n",
|
|
||||||
" d_alpha1 = abs(wu.rad2deg(alpha1_num_2 - alpha1_ell)) / 3600\n",
|
|
||||||
" d_s = abs(s_num - s) / 1000\n",
|
|
||||||
" d_time = end - start\n",
|
|
||||||
" example_results[f\"GHA2_num_{steps}\"] = (d_alpha0, d_alpha1, d_s, d_time)\n",
|
|
||||||
" except Exception as e:\n",
|
|
||||||
" print(e)\n",
|
|
||||||
" example_results[f\"GHA2_num_{steps}\"] = (nan, nan, nan, nan)\n",
|
|
||||||
"\n",
|
|
||||||
" for dsPart in dsPart_gha2_ES:\n",
|
|
||||||
" ds = ell.ax/dsPart\n",
|
|
||||||
" start = time.perf_counter()\n",
|
|
||||||
" try:\n",
|
|
||||||
" with suppress_print():\n",
|
|
||||||
" alpha0_ES, alpha1_ES, s_ES = gha2_ES(ell, P0, P1, maxSegLen=ds)\n",
|
|
||||||
" end = time.perf_counter()\n",
|
|
||||||
" d_alpha0 = abs(wu.rad2deg(alpha0_ES - alpha0_ell)) / 3600\n",
|
|
||||||
" d_alpha1 = abs(wu.rad2deg(alpha1_ES - alpha1_ell)) / 3600\n",
|
|
||||||
" d_s = abs(s_ES - s) / 1000\n",
|
|
||||||
" d_time = end - start\n",
|
|
||||||
" example_results[f\"GHA2_ES_{dsPart}\"] = (d_alpha0, d_alpha1, d_s, d_time)\n",
|
|
||||||
" except Exception as e:\n",
|
|
||||||
" print(e)\n",
|
|
||||||
" example_results[f\"GHA2_ES_{dsPart}\"] = (nan, nan, nan, nan)\n",
|
|
||||||
"\n",
|
|
||||||
" for dsPart in dsPart_gha2_approx:\n",
|
|
||||||
" ds = ell.ax/dsPart\n",
|
|
||||||
" start = time.perf_counter()\n",
|
|
||||||
" try:\n",
|
|
||||||
" alpha0_approx, alpha1_approx, s_approx = gha2_approx(ell, P0, P1, ds=ds)\n",
|
|
||||||
" end = time.perf_counter()\n",
|
|
||||||
" d_alpha0 = abs(wu.rad2deg(alpha0_approx - alpha0_ell)) / 3600\n",
|
|
||||||
" d_alpha1 = abs(wu.rad2deg(alpha1_approx - alpha1_ell)) / 3600\n",
|
|
||||||
" d_s = abs(s_approx - s) / 1000\n",
|
|
||||||
" d_time = end - start\n",
|
|
||||||
" example_results[f\"GHA2_approx_{dsPart}\"] = (d_alpha0, d_alpha1, d_s, d_time)\n",
|
|
||||||
" except Exception as e:\n",
|
|
||||||
" print(e)\n",
|
|
||||||
" example_results[f\"GHA2_approx_{dsPart}\"] = (nan, nan, nan, nan)\n",
|
|
||||||
"\n",
|
|
||||||
" results[f\"beta0: {wu.rad2deg(beta0):.3f}, lamb0: {wu.rad2deg(lamb0):.3f}, alpha0: {wu.rad2deg(alpha0_ell):.3f}, s: {s}\"] = example_results\n",
|
|
||||||
"\n",
|
|
||||||
"\n"
|
|
||||||
],
|
|
||||||
"id": "6e20a077d522d5",
|
|
||||||
"outputs": [],
|
|
||||||
"execution_count": null
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
|
|||||||
@@ -412,12 +412,12 @@ class EllipsoidTriaxial:
|
|||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
if i == maxI:
|
if i == maxI:
|
||||||
raise Exception("Umrechnung ist nicht konvergiert")
|
raise Exception("Umrechnung cart2ell: nicht konvergiert")
|
||||||
|
|
||||||
point_n = self.ell2cart(beta, lamb)
|
point_n = self.ell2cart(beta, lamb)
|
||||||
delta_r = np.linalg.norm(point - point_n, axis=-1)
|
delta_r = np.linalg.norm(point - point_n, axis=-1)
|
||||||
if delta_r > 1e-6:
|
if delta_r > 1e-6:
|
||||||
raise Exception("Fehler in der Umrechnung cart2ell")
|
raise Exception("Umrechnung cart2ell: Punktdifferenz")
|
||||||
|
|
||||||
return beta, lamb
|
return beta, lamb
|
||||||
|
|
||||||
@@ -511,7 +511,7 @@ class EllipsoidTriaxial:
|
|||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
if i == maxI:
|
if i == maxI:
|
||||||
raise Exception("Umrechung ist nicht konvergiert")
|
raise Exception("Umrechnung cart2ell: nicht konvergiert")
|
||||||
|
|
||||||
return phi, lamb
|
return phi, lamb
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user