From 59ad560f366f03a082582f5d0f11bdd524639ad5 Mon Sep 17 00:00:00 2001 From: Hendrik Date: Wed, 11 Feb 2026 12:08:46 +0100 Subject: [PATCH] Abgabe fertig --- Hansen_ES_CMA.py => ES/Hansen_ES_CMA.py | 34 +- {GHA_biaxial => ES}/__init__.py | 0 {GHA_triaxial => ES}/gha1_ES.py | 78 +- {GHA_triaxial => ES}/gha2_ES.py | 24 +- GHA_triaxial/gha1_ana.py | 9 +- GHA_triaxial/gha1_approx.py | 24 +- GHA_triaxial/gha1_num.py | 18 +- GHA_triaxial/gha2_approx.py | 13 +- GHA_triaxial/gha2_num.py | 110 +- GHA_triaxial/numeric_examples_karney.py | 63 +- GHA_triaxial/utils.py | 23 +- Tests/gha_resultsKarney.pkl | Bin 60280 -> 0 bytes Tests/test_biaxial.py | 34 - ausgaben.py | 6 +- dashboard.py | 72 +- ellipsoide.py => ellipsoid_triaxial.py | 153 +- jacobian_Ligas.py | 8 +- .../GHA_biaxial}/__init__.py | 0 .../GHA_biaxial}/bessel.py | 16 +- .../GHA_biaxial}/gauss.py | 6 +- .../GHA_biaxial}/rk.py | 23 +- nicht abgeben/Tests/__init__.py | 0 .../Tests}/algorithms_test.ipynb | 11203 ++++------------ .../Tests}/alpha_conversion_test.ipynb | 7 +- .../Tests}/conversions_test.ipynb | 11 +- nicht abgeben/Tests/gha_resultsKarney.pkl | Bin 0 -> 23637 bytes .../Tests}/gha_resultsPanou.pkl | Bin .../Tests}/gha_resultsRandom.pkl | Bin nicht abgeben/Tests/gha_resultsRandom_num.pkl | Bin 0 -> 12829 bytes nicht abgeben/__init__.py | 0 nicht abgeben/ellipsoid_biaxial.py | 126 + kugel.py => nicht abgeben/kugel.py | 10 +- plots.ipynb => nicht abgeben/plots.ipynb | 7 +- nicht abgeben/test.py | 8 + requirements.txt | 7 + runge_kutta.py | 44 +- test.py | 7 - utils_angle.py | 38 +- 38 files changed, 3419 insertions(+), 8763 deletions(-) rename Hansen_ES_CMA.py => ES/Hansen_ES_CMA.py (84%) rename {GHA_biaxial => ES}/__init__.py (100%) rename {GHA_triaxial => ES}/gha1_ES.py (81%) rename {GHA_triaxial => ES}/gha2_ES.py (96%) delete mode 100644 Tests/gha_resultsKarney.pkl delete mode 100644 Tests/test_biaxial.py rename ellipsoide.py => ellipsoid_triaxial.py (85%) rename {Tests => nicht abgeben/GHA_biaxial}/__init__.py (100%) rename {GHA_biaxial => nicht abgeben/GHA_biaxial}/bessel.py (81%) rename {GHA_biaxial => nicht abgeben/GHA_biaxial}/gauss.py (97%) rename {GHA_biaxial => nicht abgeben/GHA_biaxial}/rk.py (65%) create mode 100644 nicht abgeben/Tests/__init__.py rename {Tests => nicht abgeben/Tests}/algorithms_test.ipynb (57%) rename {Tests => nicht abgeben/Tests}/alpha_conversion_test.ipynb (94%) rename {Tests => nicht abgeben/Tests}/conversions_test.ipynb (98%) create mode 100644 nicht abgeben/Tests/gha_resultsKarney.pkl rename {Tests => nicht abgeben/Tests}/gha_resultsPanou.pkl (100%) rename {Tests => nicht abgeben/Tests}/gha_resultsRandom.pkl (100%) create mode 100644 nicht abgeben/Tests/gha_resultsRandom_num.pkl create mode 100644 nicht abgeben/__init__.py create mode 100644 nicht abgeben/ellipsoid_biaxial.py rename kugel.py => nicht abgeben/kugel.py (96%) rename plots.ipynb => nicht abgeben/plots.ipynb (99%) create mode 100644 nicht abgeben/test.py create mode 100644 requirements.txt delete mode 100644 test.py diff --git a/Hansen_ES_CMA.py b/ES/Hansen_ES_CMA.py similarity index 84% rename from Hansen_ES_CMA.py rename to ES/Hansen_ES_CMA.py index ae2eed3..85ea721 100644 --- a/Hansen_ES_CMA.py +++ b/ES/Hansen_ES_CMA.py @@ -1,7 +1,8 @@ import numpy as np +from numpy.typing import NDArray -def felli(x): +def felli(x: NDArray) -> float: N = x.shape[0] if N < 2: raise ValueError("dimension must be greater than one") @@ -11,8 +12,7 @@ def felli(x): def escma(func, *, N=10, xmean=None, sigma=0.5, stopfitness=1e-14, stopeval=2000, func_args=(), func_kwargs=None, seed=0, - bestEver = np.inf, noImproveGen = 0, absTolImprove = 1e-12, maxNoImproveGen = 100, sigmaImprove = 1e-12): - + bestEver=np.inf, noImproveGen=0, absTolImprove=1e-12, maxNoImproveGen=100, sigmaImprove=1e-12): if func_kwargs is None: func_kwargs = {} @@ -27,7 +27,7 @@ def escma(func, *, N=10, xmean=None, sigma=0.5, stopfitness=1e-14, stopeval=2000 N = xmean.shape[0] if stopeval is None: - stopeval = int(1e3 * N**2) + stopeval = int(1e3 * N ** 2) # Strategy parameter setting: Selection lambda_ = 4 + int(np.floor(3 * np.log(N))) @@ -37,14 +37,14 @@ def escma(func, *, N=10, xmean=None, sigma=0.5, stopfitness=1e-14, stopeval=2000 weights = np.log(mu + 0.5) - np.log(np.arange(1, int(mu) + 1)) mu = int(np.floor(mu)) weights = weights / np.sum(weights) - mueff = np.sum(weights)**2 / np.sum(weights**2) + mueff = np.sum(weights) ** 2 / np.sum(weights ** 2) # Strategy parameter setting: Adaptation cc = (4 + mueff / N) / (N + 4 + 2 * mueff / N) cs = (mueff + 2) / (N + mueff + 5) - c1 = 2 / ((N + 1.3)**2 + mueff) + c1 = 2 / ((N + 1.3) ** 2 + mueff) cmu = min(1 - c1, - 2 * (mueff - 2 + 1 / mueff) / ((N + 2)**2 + 2 * mueff)) + 2 * (mueff - 2 + 1 / mueff) / ((N + 2) ** 2 + 2 * mueff)) damps = 1 + 2 * max(0, np.sqrt((mueff - 1) / (N + 1)) - 1) + cs # Initialize dynamic (internal) strategy parameters and constants @@ -54,7 +54,7 @@ def escma(func, *, N=10, xmean=None, sigma=0.5, stopfitness=1e-14, stopeval=2000 D = np.eye(N) C = B @ D @ (B @ D).T eigeneval = 0 - chiN = np.sqrt(N) * (1 - 1/(4*N) + 1/(21 * N**2)) + chiN = np.sqrt(N) * (1 - 1 / (4 * N) + 1 / (21 * N ** 2)) # Generation Loop counteval = 0 @@ -91,10 +91,9 @@ def escma(func, *, N=10, xmean=None, sigma=0.5, stopfitness=1e-14, stopeval=2000 bestEver = fbest noImproveGen = 0 else: - noImproveGen = noImproveGen + 1 + noImproveGen += 1 - - if gen == 1 or gen%50==0: + if gen == 1 or gen % 50 == 0: # print(f' [CMA-ES] Gen {gen}, best = {round(fbest, 6)}, sigma = {sigma:.3g}') pass @@ -106,13 +105,10 @@ def escma(func, *, N=10, xmean=None, sigma=0.5, stopfitness=1e-14, stopeval=2000 # print(f' [CMA-ES] Abbruch: sigma zu klein {sigma:.3g}') break - - # Cumulation: Update evolution paths ps = (1 - cs) * ps + np.sqrt(cs * (2 - cs) * mueff) * (B @ zmean) norm_ps = np.linalg.norm(ps) - hsig = norm_ps / np.sqrt(1 - (1 - cs)**(2 * counteval / lambda_)) / chiN < \ - (1.4 + 2 / (N + 1)) + hsig = norm_ps / np.sqrt(1 - (1 - cs) ** (2 * counteval / lambda_)) / chiN < (1.4 + 2 / (N + 1)) hsig = 1.0 if hsig else 0.0 pc = (1 - cc) * pc + hsig * np.sqrt(cc * (2 - cc) * mueff) * (B @ D @ zmean) @@ -142,13 +138,13 @@ def escma(func, *, N=10, xmean=None, sigma=0.5, stopfitness=1e-14, stopeval=2000 if arfitness[0] == arfitness[int(np.ceil(0.7 * lambda_)) - 1]: sigma = sigma * np.exp(0.2 + cs / damps) # print(' [CMA-ES] stopfitness erreicht.') - #print("warning: flat fitness, consider reformulating the objective") + # print("warning: flat fitness, consider reformulating the objective") break - #print(f"{counteval}: {arfitness[0]}") + # print(f"{counteval}: {arfitness[0]}") - #Final Message - #print(f"{counteval}: {arfitness[0]}") + # Final Message + # print(f"{counteval}: {arfitness[0]}") xmin = arx[:, arindex[0]] bestValue = arfitness[0] # print(f' [CMA-ES] Ende: Gen = {gen}, best = {round(bestValue, 6)}') diff --git a/GHA_biaxial/__init__.py b/ES/__init__.py similarity index 100% rename from GHA_biaxial/__init__.py rename to ES/__init__.py diff --git a/GHA_triaxial/gha1_ES.py b/ES/gha1_ES.py similarity index 81% rename from GHA_triaxial/gha1_ES.py rename to ES/gha1_ES.py index 8296b95..17c5a42 100644 --- a/GHA_triaxial/gha1_ES.py +++ b/ES/gha1_ES.py @@ -1,29 +1,17 @@ from __future__ import annotations -from codeop import PyCF_ALLOW_INCOMPLETE_INPUT -from typing import List, Optional, Tuple +from typing import List, Tuple + import numpy as np -from ellipsoide import EllipsoidTriaxial +from numpy.typing import NDArray + +import winkelumrechnungen as wu +from ES.Hansen_ES_CMA import escma from GHA_triaxial.gha1_ana import gha1_ana from GHA_triaxial.gha1_approx import gha1_approx -from Hansen_ES_CMA import escma +from GHA_triaxial.utils import jacobi_konstante +from ellipsoid_triaxial import EllipsoidTriaxial from utils_angle import wrap_mpi_pi -from numpy.typing import NDArray -import winkelumrechnungen as wu - - -def ellipsoid_formparameter(ell: EllipsoidTriaxial): - """ - Berechnet die Formparameter des dreiachsigen Ellipsoiden nach Karney (2025), Gl. (2) - :param ell: Ellipsoid - :return: e, k und k' - """ - nenner = np.sqrt(max(ell.ax * ell.ax - ell.b * ell.b, 0.0)) - k = np.sqrt(max(ell.ay * ell.ay - ell.b * ell.b, 0.0)) / nenner - k_ = np.sqrt(max(ell.ax * ell.ax - ell.ay * ell.ay, 0.0)) / nenner - e = np.sqrt(max(ell.ax * ell.ax - ell.b * ell.b, 0.0)) / ell.ay - - return e, k, k_ def ENU_beta_omega(beta: float, omega: float, ell: EllipsoidTriaxial) \ @@ -61,47 +49,32 @@ def ENU_beta_omega(beta: float, omega: float, ell: EllipsoidTriaxial) \ # --- Ableitungen - Karney Gl. (5a,b,c)--- # E = ∂R/∂ω dX_dw = -ell.ax * so * Sx / D - dY_dw = ell.ay * cb * co + dY_dw = ell.ay * cb * co dZ_dw = ell.b * sb * (so * co * (ell.ax*ell.ax - ell.ay*ell.ay) / Sz) / D E = np.array([dX_dw, dY_dw, dZ_dw], dtype=float) # N = ∂R/∂β dX_db = ell.ax * co * (sb * cb * (ell.b*ell.b - ell.ay*ell.ay) / Sx) / D dY_db = -ell.ay * sb * so - dZ_db = ell.b * cb * Sz / D + dZ_db = ell.b * cb * Sz / D N = np.array([dX_db, dY_db, dZ_db], dtype=float) # U = Grad(x^2/a^2 + y^2/b^2 + z^2/c^2 - 1) U = np.array([X/(ell.ax*ell.ax), Y/(ell.ay*ell.ay), Z/(ell.b*ell.b)], dtype=float) - En = np.linalg.norm(E) - Nn = np.linalg.norm(N) - Un = np.linalg.norm(U) + En = float(np.linalg.norm(E)) + Nn = float(np.linalg.norm(N)) + Un = float(np.linalg.norm(U)) N_hat = N / Nn E_hat = E / En U_hat = U / Un - E_hat = E_hat - float(np.dot(E_hat, N_hat)) * N_hat + E_hat -= float(np.dot(E_hat, N_hat)) * N_hat E_hat = E_hat / max(np.linalg.norm(E_hat), 1e-18) return E_hat, N_hat, U_hat, En, Nn, R -def jacobi_konstante(beta: float, omega: float, alpha: float, ell: EllipsoidTriaxial) -> float: - """ - Jacobi-Konstante nach Karney (2025), Gl. (14) - :param beta: Beta Koordinate - :param omega: Omega Koordinate - :param alpha: Azimut alpha - :param ell: Ellipsoid - :return: Jacobi-Konstante - """ - e, k, k_ = ellipsoid_formparameter(ell) - gamma_jacobi = float((k ** 2) * (np.cos(beta) ** 2) * (np.sin(alpha) ** 2) - (k_ ** 2) * (np.sin(omega) ** 2) * (np.cos(alpha) ** 2)) - - return gamma_jacobi - - def azimuth_at_ESpoint(P_prev: NDArray, P_curr: NDArray, E_hat_curr: NDArray, N_hat_curr: NDArray, U_hat_curr: NDArray) -> float: """ Berechnet das Azimut in der lokalen Tangentialebene am aktuellen Punkt P_curr, gemessen @@ -117,7 +90,6 @@ def azimuth_at_ESpoint(P_prev: NDArray, P_curr: NDArray, E_hat_curr: NDArray, N_ vT = v - float(np.dot(v, U_hat_curr)) * U_hat_curr vTn = max(np.linalg.norm(vT), 1e-18) vT_hat = vT / vTn - #vT_hat = vT / np.linalg.norm(vT) sE = float(np.dot(vT_hat, E_hat_curr)) sN = float(np.dot(vT_hat, N_hat_curr)) @@ -154,9 +126,8 @@ def optimize_next_point(beta_i: float, omega_i: float, alpha_i: float, ds: float d_beta = float(np.clip(d_beta, -0.2, 0.2)) # rad d_omega = float(np.clip(d_omega, -0.2, 0.2)) # rad - - #d_beta = ds * float(np.cos(alpha_i)) / Nn_i - #d_omega = ds * float(np.sin(alpha_i)) / En_i + # d_beta = ds * float(np.cos(alpha_i)) / Nn_i + # d_omega = ds * float(np.sin(alpha_i)) / En_i beta_pred = beta_i + d_beta omega_pred = wrap_mpi_pi(omega_i + d_omega) @@ -177,8 +148,8 @@ def optimize_next_point(beta_i: float, omega_i: float, alpha_i: float, ds: float beta = x[0] omega = wrap_mpi_pi(x[1]) - P = ell.ell2cart_karney(beta, omega) # in kartesischer Koordinaten - d = float(np.linalg.norm(P - P_i)) # Distanz zwischen + P = ell.ell2cart_karney(beta, omega) # in kartesischer Koordinaten + d = float(np.linalg.norm(P - P_i)) # Distanz zwischen # maxSegLen einhalten J_len = ((d - ds) / ds) ** 2 @@ -197,8 +168,7 @@ def optimize_next_point(beta_i: float, omega_i: float, alpha_i: float, ds: float return f - - xb = escma(fitness, N=2, xmean=xmean, sigma=sigma0) # Aufruf CMA-ES + xb = escma(fitness, N=2, xmean=xmean, sigma=sigma0) # Aufruf CMA-ES beta_best = xb[0] omega_best = wrap_mpi_pi(xb[1]) @@ -209,7 +179,7 @@ def optimize_next_point(beta_i: float, omega_i: float, alpha_i: float, ds: float return beta_best, omega_best, P_best, alpha_end -def gha1_ES(ell: EllipsoidTriaxial, beta0: float, omega0: float, alpha0: float, s_total: float, maxSegLen: float = 1000, all_points: boolean = False)\ +def gha1_ES(ell: EllipsoidTriaxial, beta0: float, omega0: float, alpha0: float, s_total: float, maxSegLen: float = 1000, all_points: bool = False)\ -> Tuple[NDArray, float, NDArray] | Tuple[NDArray, float]: """ Aufruf der 1. GHA mittels CMA-ES @@ -226,7 +196,7 @@ def gha1_ES(ell: EllipsoidTriaxial, beta0: float, omega0: float, alpha0: float, omega = wrap_mpi_pi(float(omega0)) alpha = wrap_mpi_pi(float(alpha0)) - gamma0 = jacobi_konstante(beta, omega, alpha, ell) # Referenz-γ0 + gamma0 = jacobi_konstante(beta, omega, alpha, ell) # Referenz-γ0 P_all: List[NDArray] = [ell.ell2cart_karney(beta, omega)] alpha_end: List[float] = [alpha] @@ -258,8 +228,8 @@ def gha1_ES(ell: EllipsoidTriaxial, beta0: float, omega0: float, alpha0: float, if __name__ == "__main__": ell = EllipsoidTriaxial.init_name("BursaSima1980round") s = 180000 - #alpha0 = 3 - alpha0 = wu.gms2rad([5 ,0 ,0]) + # alpha0 = 3 + alpha0 = wu.gms2rad([5, 0, 0]) beta = 0 omega = 0 P0 = ell.ell2cart(beta, omega) @@ -272,6 +242,6 @@ if __name__ == "__main__": print(res) print(alpha) print(points) - #print("alpha1 (am Endpunkt):", res.alpha1) + # print("alpha1 (am Endpunkt):", res.alpha1) print(res - point1) print(point1app - point1, "approx") \ No newline at end of file diff --git a/GHA_triaxial/gha2_ES.py b/ES/gha2_ES.py similarity index 96% rename from GHA_triaxial/gha2_ES.py rename to ES/gha2_ES.py index aa261c7..db347c9 100644 --- a/GHA_triaxial/gha2_ES.py +++ b/ES/gha2_ES.py @@ -1,14 +1,13 @@ -import numpy as np -from Hansen_ES_CMA import escma -from ellipsoide import EllipsoidTriaxial -from numpy.typing import NDArray from typing import Tuple + +import numpy as np import plotly.graph_objects as go +from numpy.typing import NDArray + from GHA_triaxial.gha2_num import gha2_num -from GHA_triaxial.utils import sigma2alpha, pq_ell - - - +from GHA_triaxial.utils import sigma2alpha +from Hansen_ES_CMA import escma +from ellipsoid_triaxial import EllipsoidTriaxial def Sehne(P1: NDArray, P2: NDArray) -> float: @@ -19,14 +18,11 @@ def Sehne(P1: NDArray, P2: NDArray) -> float: :return: Bogenlänge s """ R12 = P2-P1 - s = np.linalg.norm(R12) + s = float(np.linalg.norm(R12)) return s - - - def gha2_ES(ell: EllipsoidTriaxial, P0: NDArray, Pk: NDArray, maxSegLen: float = None, all_points: bool = False) -> Tuple[float, float, float, NDArray] | Tuple[float, float, float]: """ Berechnen der 2. GHA mithilfe der CMA-ES. @@ -70,7 +66,7 @@ def gha2_ES(ell: EllipsoidTriaxial, P0: NDArray, Pk: NDArray, maxSegLen: float = R0 = (ell.ax + ell.ay + ell.b) / 3 if maxSegLen is None: - maxSegLen = R0 * 1 / (637.4*2) # 10km Segment bei mittleren Erdradius + maxSegLen = R0 * 1 / (637.4*2) # 10km Segment bei mittleren Erdradius sigma_uv_nom = 1e-3 * (maxSegLen / R0) # ~1e-5 points: list[NDArray] = [P0, Pk] @@ -102,7 +98,7 @@ def gha2_ES(ell: EllipsoidTriaxial, P0: NDArray, Pk: NDArray, maxSegLen: float = sigmaStep = sigma_uv_nom * (Sehne(A, B) / maxSegLen) - u, v = escma(midpoint_fitness, N=2, xmean=xmean, sigma=sigmaStep) # Aufruf CMA-ES + u, v = escma(midpoint_fitness, N=2, xmean=xmean, sigma=sigmaStep) # Aufruf CMA-ES P_next = ell.para2cart(u, v) new_points.append(P_next) diff --git a/GHA_triaxial/gha1_ana.py b/GHA_triaxial/gha1_ana.py index 69d0ca0..a9a594f 100644 --- a/GHA_triaxial/gha1_ana.py +++ b/GHA_triaxial/gha1_ana.py @@ -3,13 +3,13 @@ from math import comb from typing import Tuple import numpy as np -from numpy import sin, cos, arctan2 +from numpy import arctan2, cos, sin from numpy.typing import NDArray -import winkelumrechnungen as wu -from utils_angle import wrap_0_2pi -from ellipsoide import EllipsoidTriaxial +import winkelumrechnungen as wu from GHA_triaxial.utils import pq_para +from ellipsoid_triaxial import EllipsoidTriaxial +from utils_angle import wrap_0_2pi def gha1_ana_step(ell: EllipsoidTriaxial, point: NDArray, alpha0: float, s: float, maxM: int) -> Tuple[NDArray, float]: @@ -143,4 +143,3 @@ if __name__ == "__main__": p0 = ell.ell2cart(wu.deg2rad(10), wu.deg2rad(20)) p1, alpha1 = gha1_ana(ell, p0, wu.deg2rad(36), 200000, 70) print(p1, wu.rad2gms(alpha1)) - diff --git a/GHA_triaxial/gha1_approx.py b/GHA_triaxial/gha1_approx.py index e81c043..bc6d6b5 100644 --- a/GHA_triaxial/gha1_approx.py +++ b/GHA_triaxial/gha1_approx.py @@ -1,14 +1,18 @@ -import numpy as np -from numpy import sin, cos -from numpy.typing import NDArray -from ellipsoide import EllipsoidTriaxial -from GHA_triaxial.gha1_ana import gha1_ana -from GHA_triaxial.utils import func_sigma_ell, louville_constant, pq_ell -import plotly.graph_objects as go -import winkelumrechnungen as wu -from utils_angle import wrap_0_2pi, wrap_mhalfpi_halfpi, wrap_mpi_pi +from typing import Tuple -def gha1_approx(ell: EllipsoidTriaxial, p0: np.ndarray, alpha0: float, s: float, ds: float, all_points: bool = False) -> Tuple[NDArray, float] | Tuple[NDArray, float, NDArray]: +import numpy as np +import plotly.graph_objects as go +from numpy import cos, sin +from numpy.typing import NDArray + +import winkelumrechnungen as wu +from GHA_triaxial.utils import louville_constant, pq_ell +from ellipsoid_triaxial import EllipsoidTriaxial +from utils_angle import wrap_0_2pi + + +def gha1_approx(ell: EllipsoidTriaxial, p0: np.ndarray, alpha0: float, s: float, ds: float, all_points: bool = False) \ + -> Tuple[NDArray, float] | Tuple[NDArray, float, NDArray, NDArray]: """ Berechung einer Näherungslösung der ersten Hauptaufgabe :param ell: Ellipsoid diff --git a/GHA_triaxial/gha1_num.py b/GHA_triaxial/gha1_num.py index 25dcca3..580a0f0 100644 --- a/GHA_triaxial/gha1_num.py +++ b/GHA_triaxial/gha1_num.py @@ -1,15 +1,15 @@ +from typing import Callable, List, Tuple + import numpy as np -from numpy import sin, cos, arctan2 -import ellipsoide -import runge_kutta as rk -import winkelumrechnungen as wu -import GHA_triaxial.numeric_examples_karney as ne_karney -from GHA_triaxial.gha1_ana import gha1_ana -from ellipsoide import EllipsoidTriaxial -from typing import Callable, Tuple, List +from numpy import arctan2, cos, sin from numpy.typing import NDArray +import GHA_triaxial.numeric_examples_karney as ne_karney +import runge_kutta as rk +import winkelumrechnungen as wu +from GHA_triaxial.gha1_ana import gha1_ana from GHA_triaxial.utils import alpha_ell2para, pq_ell +from ellipsoid_triaxial import EllipsoidTriaxial from utils_angle import wrap_0_2pi @@ -108,7 +108,7 @@ if __name__ == "__main__": # diffs_panou[mask_360] = np.abs(diffs_panou[mask_360] - 360) # print(diffs_panou) - ell: EllipsoidTriaxial = ellipsoide.EllipsoidTriaxial.init_name("KarneyTest2024") + ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name("KarneyTest2024") diffs_karney = [] # examples_karney = ne_karney.get_examples((30499, 30500, 40500)) examples_karney = ne_karney.get_random_examples(20) diff --git a/GHA_triaxial/gha2_approx.py b/GHA_triaxial/gha2_approx.py index dd5316d..edc1d39 100644 --- a/GHA_triaxial/gha2_approx.py +++ b/GHA_triaxial/gha2_approx.py @@ -1,12 +1,13 @@ -import numpy as np -from ellipsoide import EllipsoidTriaxial -from GHA_triaxial.gha2_num import gha2_num -import plotly.graph_objects as go -import winkelumrechnungen as wu -from numpy.typing import NDArray from typing import Tuple +import numpy as np +import plotly.graph_objects as go +from numpy.typing import NDArray + +import winkelumrechnungen as wu +from GHA_triaxial.gha2_num import gha2_num from GHA_triaxial.utils import sigma2alpha +from ellipsoid_triaxial import EllipsoidTriaxial def gha2_approx(ell: EllipsoidTriaxial, p0: NDArray, p1: NDArray, ds: float, all_points: bool = False) -> Tuple[float, float, float] | Tuple[float, float, float, NDArray]: diff --git a/GHA_triaxial/gha2_num.py b/GHA_triaxial/gha2_num.py index 6a920e8..d2af889 100644 --- a/GHA_triaxial/gha2_num.py +++ b/GHA_triaxial/gha2_num.py @@ -1,13 +1,15 @@ -import numpy as np -from ellipsoide import EllipsoidTriaxial -from runge_kutta import rk4, rk4_step, rk4_end, rk4_integral -import GHA_triaxial.numeric_examples_karney as ne_karney -import GHA_triaxial.numeric_examples_panou as ne_panou -import winkelumrechnungen as wu from typing import Tuple + +import numpy as np from numpy.typing import NDArray + import ausgaben as aus -from utils_angle import cot, arccot, wrap_mpi_pi, wrap_0_2pi +import numeric_examples_karney as ne_karney +import numeric_examples_panou as ne_panou +import winkelumrechnungen as wu +from ellipsoid_triaxial import EllipsoidTriaxial +from runge_kutta import rk4, rk4_end, rk4_integral +from utils_angle import cot, wrap_0_2pi, wrap_mpi_pi def norm_a(a: float) -> float: @@ -176,7 +178,7 @@ def gha2_num( ) p_00 = 0.5 * ((E * G_beta_beta - E_beta * G_beta) / (E**2)) - return (BETA, LAMBDA, E, G, p_3, p_2, p_1, p_0, p_33, p_22, p_11, p_00) + return BETA, LAMBDA, E, G, p_3, p_2, p_1, p_0, p_33, p_22, p_11, p_00 # Berechnung der ODE Koeffizienten für Fall 2 (lambda_0 == lambda_1) def q_coef(beta, lamb): @@ -589,53 +591,53 @@ def gha2_num( if __name__ == "__main__": - # ell = EllipsoidTriaxial.init_name("BursaSima1980round") - # beta1 = np.deg2rad(75) - # lamb1 = np.deg2rad(-90) - # beta2 = np.deg2rad(75) - # lamb2 = np.deg2rad(66) - # a0, a1, s = gha2_num(ell, beta1, lamb1, beta2, lamb2, n=5000) - # print(aus.gms("a0", a0, 4)) - # print(aus.gms("a1", a1, 4)) - # print("s: ", s) - # # print(aus.gms("a2", a2, 4)) - # # print(s) - # cart1 = ell.para2cart(0, 0) - # cart2 = ell.para2cart(0.4, 1.4) - # beta1, lamb1 = ell.cart2ell(cart1) - # beta2, lamb2 = ell.cart2ell(cart2) - # - # a1, a2, s = gha2_num(ell, beta1, lamb1, beta2, lamb2, n=5000) + ell = EllipsoidTriaxial.init_name("BursaSima1980round") + beta1 = np.deg2rad(75) + lamb1 = np.deg2rad(-90) + beta2 = np.deg2rad(75) + lamb2 = np.deg2rad(66) + a0, a1, s = gha2_num(ell, beta1, lamb1, beta2, lamb2, n=100) + print(aus.gms("a0", a0, 4)) + print(aus.gms("a1", a1, 4)) + print("s: ", s) + # print(aus.gms("a2", a2, 4)) # print(s) + cart1 = ell.para2cart(0, 0) + cart2 = ell.para2cart(0.4, 1.4) + beta1, lamb1 = ell.cart2ell(cart1) + beta2, lamb2 = ell.cart2ell(cart2) - # ell = EllipsoidTriaxial.init_name("BursaSima1980round") - # diffs_panou = [] - # examples_panou = ne_panou.get_random_examples(4) - # for example in examples_panou: - # beta0, lamb0, beta1, lamb1, _, alpha0, alpha1, s = example - # P0 = ell.ell2cart(beta0, lamb0) - # try: - # alpha0_num, alpha1_num, s_num = gha2_num(ell, beta0, lamb0, beta1, lamb1, n=4000, iter_max=10) - # diffs_panou.append( - # (wu.rad2deg(abs(alpha0 - alpha0_num)), wu.rad2deg(abs(alpha1 - alpha1_num)), abs(s - s_num))) - # except: - # print(f"Fehler für {beta0}, {lamb0}, {beta1}, {lamb1}") - # diffs_panou = np.array(diffs_panou) - # print(diffs_panou) - # - # ell = EllipsoidTriaxial.init_name("KarneyTest2024") - # diffs_karney = [] - # # examples_karney = ne_karney.get_examples((30500, 40500)) - # examples_karney = ne_karney.get_random_examples(2) - # for example in examples_karney: - # beta0, lamb0, alpha0, beta1, lamb1, alpha1, s = example - # - # try: - # alpha0_num, alpha1_num, s_num = gha2_num(ell, beta0, lamb0, beta1, lamb1, n=4000, iter_max=10) - # diffs_karney.append((wu.rad2deg(abs(alpha0-alpha0_num)), wu.rad2deg(abs(alpha1-alpha1_num)), abs(s-s_num))) - # except: - # print(f"Fehler für {beta0}, {lamb0}, {beta1}, {lamb1}") - # diffs_karney = np.array(diffs_karney) - # print(diffs_karney) + a1, a2, s = gha2_num(ell, beta1, lamb1, beta2, lamb2, n=5000) + print(s) + + ell = EllipsoidTriaxial.init_name("BursaSima1980round") + diffs_panou = [] + examples_panou = ne_panou.get_random_examples(4) + for example in examples_panou: + beta0, lamb0, beta1, lamb1, _, alpha0, alpha1, s = example + P0 = ell.ell2cart(beta0, lamb0) + try: + alpha0_num, alpha1_num, s_num = gha2_num(ell, beta0, lamb0, beta1, lamb1, n=4000, iter_max=10) + diffs_panou.append( + (wu.rad2deg(abs(alpha0 - alpha0_num)), wu.rad2deg(abs(alpha1 - alpha1_num)), abs(s - s_num))) + except: + print(f"Fehler für {beta0}, {lamb0}, {beta1}, {lamb1}") + diffs_panou = np.array(diffs_panou) + print(diffs_panou) + + ell = EllipsoidTriaxial.init_name("KarneyTest2024") + diffs_karney = [] + # examples_karney = ne_karney.get_examples((30500, 40500)) + examples_karney = ne_karney.get_random_examples(2) + for example in examples_karney: + beta0, lamb0, alpha0, beta1, lamb1, alpha1, s = example + + try: + alpha0_num, alpha1_num, s_num = gha2_num(ell, beta0, lamb0, beta1, lamb1, n=4000, iter_max=10) + diffs_karney.append((wu.rad2deg(abs(alpha0-alpha0_num)), wu.rad2deg(abs(alpha1-alpha1_num)), abs(s-s_num))) + except: + print(f"Fehler für {beta0}, {lamb0}, {beta1}, {lamb1}") + diffs_karney = np.array(diffs_karney) + print(diffs_karney) pass diff --git a/GHA_triaxial/numeric_examples_karney.py b/GHA_triaxial/numeric_examples_karney.py index 207fb31..47a37ae 100644 --- a/GHA_triaxial/numeric_examples_karney.py +++ b/GHA_triaxial/numeric_examples_karney.py @@ -1,11 +1,12 @@ import random +from typing import List + import winkelumrechnungen as wu -from typing import List, Tuple -import numpy as np -from ellipsoide import EllipsoidTriaxial -from GHA_triaxial.gha1_ES import jacobi_konstante +from GHA_triaxial.utils import jacobi_konstante +from ellipsoid_triaxial import EllipsoidTriaxial ell = EllipsoidTriaxial.init_name("KarneyTest2024") +file_path = r"Karney_2024_Testset.txt" def line2example(line: str) -> List: """ @@ -31,7 +32,7 @@ def get_random_examples(num: int, seed: int = None) -> List: """ if seed is not None: random.seed(seed) - with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: + with open(file_path) as datei: lines = datei.readlines() examples = [] for i in range(num): @@ -46,7 +47,7 @@ def get_examples(l_i: List) -> List: :param l_i: Liste von Indizes :return: Liste mit Beispielen """ - with open("Karney_2024_Testset.txt") as datei: + with open(file_path) as datei: lines = datei.readlines() examples = [] for i in l_i: @@ -54,53 +55,21 @@ def get_examples(l_i: List) -> List: examples.append(example) return examples -# beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s - -def get_random_examples_simple_short(num: int, seed: int = None) -> List: - if seed is not None: - random.seed(seed) - with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: - lines = datei.readlines() - examples = [] - while len(examples) < num: - example = line2example(lines[random.randint(0, len(lines) - 1)]) - beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example - if s < 1 and abs(abs(beta0) - np.pi/2) > 1e-5 and lamb0 != 0 and abs(abs(lamb0) - np.pi) > 1e-5: - examples.append(example) - return examples - -def get_random_examples_umbilics_start(num: int, seed: int = None) -> List: - if seed is not None: - random.seed(seed) - with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: - lines = datei.readlines() - examples = [] - while len(examples) < num: - example = line2example(lines[random.randint(0, len(lines) - 1)]) - beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example - if abs(abs(beta0) - np.pi/2) < 1e-5 and (lamb0 == 0 or abs(abs(lamb0) - np.pi) < 1e-5): - examples.append(example) - return examples - -def get_random_examples_umbilics_end(num: int, seed: int = None) -> List: - if seed is not None: - random.seed(seed) - with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: - lines = datei.readlines() - examples = [] - while len(examples) < num: - example = line2example(lines[random.randint(0, len(lines) - 1)]) - beta0, lamb0, alpha0_ell, beta1, lamb1, alpha1_ell, s = example - if abs(abs(beta1) - np.pi/2) < 1e-5 and (lamb1 == 0 or abs(abs(lamb1) - np.pi) < 1e-5): - examples.append(example) - return examples def get_random_examples_gamma(group: str, num: int, seed: int = None, length: str = None) -> List: + """ + Zufällige Beispiele aus Karney in Gruppen nach Einteilung anhand der Jacobi-Konstanten + :param group: Gruppe + :param num: Anzahl + :param seed: Random-Seed + :param length: long oder short, sond egal + :return: Liste mit Beispielen + """ eps = 1e-20 long_short = 2 if seed is not None: random.seed(seed) - with open(r"C:\Users\moell\OneDrive\Desktop\Vorlesungen\Master-Projekt\Python_Masterprojekt\GHA_triaxial\Karney_2024_Testset.txt") as datei: + with open(file_path) as datei: lines = datei.readlines() examples = [] i = 0 diff --git a/GHA_triaxial/utils.py b/GHA_triaxial/utils.py index 8eed03d..27114de 100644 --- a/GHA_triaxial/utils.py +++ b/GHA_triaxial/utils.py @@ -1,11 +1,13 @@ +from __future__ import annotations + from typing import Tuple import numpy as np -from numpy import arctan2, sin, cos, sqrt +from numpy import arctan2, cos, sin, sqrt from numpy.typing import NDArray -from utils_angle import wrap_mpi_pi, wrap_0_2pi, wrap_mhalfpi_halfpi -from ellipsoide import EllipsoidTriaxial +from ellipsoid_triaxial import EllipsoidTriaxial +from utils_angle import wrap_0_2pi def sigma2alpha(ell: EllipsoidTriaxial, sigma: NDArray, point: NDArray) -> float: @@ -178,9 +180,22 @@ def pq_para(ell: EllipsoidTriaxial, point: NDArray) -> Tuple[NDArray, NDArray]: return p, q +def jacobi_konstante(beta: float, omega: float, alpha: float, ell: EllipsoidTriaxial) -> float: + """ + Jacobi-Konstante nach Karney (2025), Gl. (14) + :param beta: Beta Koordinate + :param omega: Omega Koordinate + :param alpha: Azimut alpha + :param ell: Ellipsoid + :return: Jacobi-Konstante + """ + gamma_jacobi = float((ell.k ** 2) * (np.cos(beta) ** 2) * (np.sin(alpha) ** 2) - (ell.k_ ** 2) * (np.sin(omega) ** 2) * (np.cos(alpha) ** 2)) + return gamma_jacobi + + if __name__ == "__main__": ell = EllipsoidTriaxial.init_name("KarneyTest2024") alpha_para = 0 u, v = ell.ell2para(np.pi/2, 0) alpha_ell = alpha_para2ell(ell, u, v, alpha_para) - pass \ No newline at end of file + pass diff --git a/Tests/gha_resultsKarney.pkl b/Tests/gha_resultsKarney.pkl deleted file mode 100644 index 109624058c4e87a8afb20168542b5647e2f95efd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60280 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 diff --git a/Tests/test_biaxial.py b/Tests/test_biaxial.py deleted file mode 100644 index a36e45b..0000000 --- a/Tests/test_biaxial.py +++ /dev/null @@ -1,34 +0,0 @@ -import numpy as np -from ellipsoide import EllipsoidBiaxial -from GHA_biaxial.bessel import gha1 as gha1_bessel -from GHA_biaxial.gauss import gha1 as gha1_gauss -from GHA_biaxial.rk import gha1 as gha1_rk -from GHA_biaxial.gauss import gha2 as gha2_gauss - -re = EllipsoidBiaxial.init_name("Bessel") - -# phi0 = 0.6 -# lamb0 = 1.2 -# alpha0 = 0.45 -# s = 123456 -# -# values_bessel = gha1_bessel(re, phi0, lamb0, alpha0, s) -# alpha1_bessel = values_bessel[-1] -# p1_bessel = re.bi_ell2cart(values_bessel[0], values_bessel[1], 0) -# -# values_gauss1 = gha1_gauss(re, phi0, lamb0, alpha0, s) -# alpha1_gauss1 = values_gauss1[-1] -# p1_gauss = re.bi_ell2cart(values_gauss1[0], values_gauss1[1], 0) -# -# values_rk = gha1_rk(re, phi0, lamb0 , alpha0, s, 10000) -# alpha1_rk = values_rk[-1] -# p1_rk = re.bi_ell2cart(values_rk[0], values_rk[1], 0) -# -# alpha0_gauss, alpha1_gauss2, s_gauss = gha2_gauss(re, phi0, lamb0, values_gauss1[0], values_gauss1[1]) - -phi0 = 0.6 -lamb0 = 1.2 - -cart = re.bi_ell2cart(phi0, lamb0, 0) -ell = re.bi_cart2ell(cart) -pass \ No newline at end of file diff --git a/ausgaben.py b/ausgaben.py index 05a328c..3431b16 100644 --- a/ausgaben.py +++ b/ausgaben.py @@ -10,7 +10,7 @@ def xyz(x: float, y: float, z: float, stellen: int) -> str: :param stellen: Anzahl Nachkommastellen :return: String zur Ausgabe der Koordinaten """ - return f"""x = {(round(x,stellen))} m y = {(round(y,stellen))} m z = {(round(z,stellen))} m""" + return f"""x = {(round(x, stellen))} m y = {(round(y, stellen))} m z = {(round(z, stellen))} m""" def gms(name: str, rad: float, stellen: int) -> str: @@ -21,5 +21,5 @@ def gms(name: str, rad: float, stellen: int) -> str: :param stellen: Anzahl Nachkommastellen :return: String zur Ausgabe des Winkels """ - gms = wu.rad2gms(rad) - return f"{name} = {int(gms[0])}° {int(gms[1])}' {round(gms[2],stellen):.{stellen}f}''" + values = wu.rad2gms(rad) + return f"{name} = {int(values[0])}° {int(values[1])}' {round(values[2], stellen):.{stellen}f}''" diff --git a/dashboard.py b/dashboard.py index f6420dd..33b8366 100644 --- a/dashboard.py +++ b/dashboard.py @@ -1,34 +1,31 @@ -from dash import Dash, dash, html, dcc, Input, Output, State, no_update, ctx -import plotly.graph_objects as go -import numpy as np -import dash_bootstrap_components as dbc - import builtins -from dash.exceptions import PreventUpdate import traceback -import webbrowser -from threading import Timer +import dash_bootstrap_components as dbc +import numpy as np +import plotly.graph_objects as go +from dash import Dash, Input, Output, State, dcc, html, no_update +from dash.exceptions import PreventUpdate +from numpy import pi -from ellipsoide import EllipsoidTriaxial -import winkelumrechnungen as wu import ausgaben as aus -from GHA_triaxial.utils import alpha_ell2para, alpha_para2ell - +import winkelumrechnungen as wu +from ES.gha1_ES import gha1_ES +from ES.gha2_ES import gha2_ES from GHA_triaxial.gha1_ana import gha1_ana -from GHA_triaxial.gha1_num import gha1_num -from GHA_triaxial.gha1_ES import gha1_ES from GHA_triaxial.gha1_approx import gha1_approx - -from GHA_triaxial.gha2_num import gha2_num -from GHA_triaxial.gha2_ES import gha2_ES +from GHA_triaxial.gha1_num import gha1_num from GHA_triaxial.gha2_approx import gha2_approx +from GHA_triaxial.gha2_num import gha2_num +from GHA_triaxial.utils import alpha_ell2para, alpha_para2ell +from ellipsoid_triaxial import EllipsoidTriaxial # Prints von importierten Funktionen unterdücken def _no_print(*args, **kwargs): pass + builtins.print = _no_print @@ -39,7 +36,7 @@ app.title = "Geodätische Hauptaufgaben" # Erzeugen der Eingabefelder -def inputfeld(left_text, input_id, right_text="", width=200, min=None, max=None): +def inputfeld(left_text, input_id, right_text="", width=200, mini=None, maxi=None): return html.Div( children=[ html.Span(f"{left_text} =", style={"minWidth": 36, "textAlign": "right", "marginRight": 5}), @@ -142,7 +139,7 @@ def method_failed(method_label: str, exc: Exception): return html.Div([ html.Strong(f"{method_label}: "), html.Span("konnte nicht berechnet werden. ", style={"color": "red"}), - #html.Span(f"({type(exc).__name__}: {exc})", style={"color": "#b02a37"}), + # html.Span(f"({type(exc).__name__}: {exc})", style={"color": "#b02a37"}), html.Details([ html.Summary("Details"), @@ -177,7 +174,7 @@ def ellipsoid_figure(ell: EllipsoidTriaxial, title="Dreiachsiges Ellipsoid"): scene=dict( xaxis=dict( range=[-rx, rx], - #title="X [m]", + # title="X [m]", title="", showgrid=False, zeroline=False, @@ -186,7 +183,7 @@ def ellipsoid_figure(ell: EllipsoidTriaxial, title="Dreiachsiges Ellipsoid"): ), yaxis=dict( range=[-ry, ry], - #title="Y [m]", + # title="Y [m]", title="", showgrid=False, zeroline=False, @@ -195,7 +192,7 @@ def ellipsoid_figure(ell: EllipsoidTriaxial, title="Dreiachsiges Ellipsoid"): ), zaxis=dict( range=[-rz, rz], - #title="Z [m]", + # title="Z [m]", title="", showgrid=False, zeroline=False, @@ -209,8 +206,8 @@ def ellipsoid_figure(ell: EllipsoidTriaxial, title="Dreiachsiges Ellipsoid"): ) # Ellipsoid - u = np.linspace(-np.pi/2, np.pi/2, 80) - v = np.linspace(-np.pi, np.pi, 160) + u = np.linspace(-pi/2, pi/2, 80) + v = np.linspace(-pi, pi, 160) U, V = np.meshgrid(u, v) X, Y, Z = ell.para2cart(U, V) fig.add_trace(go.Surface( @@ -260,7 +257,7 @@ def figure_constant_lines(fig, ell: EllipsoidTriaxial, coordsystem: str = "para" all_beta[-1] -= 1e-8 constants_lamb = wu.deg2rad(np.arange(-180, 180, 15)) for lamb in constants_lamb: - if lamb != 0 and abs(lamb) != np.pi: + if lamb != 0 and abs(lamb) != pi: xyz = ell.ell2cart(all_beta, lamb) fig.add_trace(go.Scatter3d( x=xyz[:, 0], y=xyz[:, 1], z=xyz[:, 2], mode="lines", @@ -335,8 +332,10 @@ def figure_lines(fig, line, name, color): )) return fig + # HTML der beiden Tabs # Tab 1 + pane_gha1 = html.Div( [ html.Div( @@ -468,7 +467,7 @@ app.layout = html.Div( style={"fontFamily": "Arial", "padding": "10px", "width": "95%", "margin": "0 auto"}, children=[ html.H2("Geodätische Hauptaufgaben für dreiachsige Ellipsoide"), - #html.H2("für dreiachsige Ellipsoide"), + # html.H2("für dreiachsige Ellipsoide"), html.Div( style={ @@ -507,9 +506,9 @@ app.layout = html.Div( html.Div( [ - inputfeld("aₓ", "input-ax", "m", min=0, width="clamp(80px, 7vw, 200px)"), - inputfeld("aᵧ", "input-ay", "m", min=0, width="clamp(80px, 7vw, 200px)"), - inputfeld("b", "input-b", "m", min=0, width="clamp(80px, 7vw, 200px)"), + inputfeld("aₓ", "input-ax", "m", mini=0, width="clamp(80px, 7vw, 200px)"), + inputfeld("aᵧ", "input-ay", "m", mini=0, width="clamp(80px, 7vw, 200px)"), + inputfeld("b", "input-b", "m", mini=0, width="clamp(80px, 7vw, 200px)"), ], style={ "display": "grid", @@ -520,7 +519,7 @@ app.layout = html.Div( }, ), - #html.Br(), + # html.Br(), dcc.Tabs( id="tabs-GHA", @@ -572,7 +571,7 @@ app.layout = html.Div( dcc.Store(id="calc-token-gha1", data=0), dcc.Store(id="calc-token-gha2", data=0), - #html.P("© 2026", style={"fontSize": "10px", "color": "gray", "textAlign": "center", "marginTop": "16px"}), + # html.P("© 2026", style={"fontSize": "10px", "color": "gray", "textAlign": "center", "marginTop": "16px"}), ], @@ -662,10 +661,8 @@ def toggle_ds(v): return "on" not in (v or []) - # Abfrage ob Berechnungsverfahren gewählt -from dash.exceptions import PreventUpdate -from dash import no_update, html + @app.callback( Output("calc-token-gha1", "data"), @@ -961,7 +958,7 @@ def compute_gha1_ana(n1, cb_ana, max_M, maxPartCircum, beta0, lamb0, s, a0, ax, def compute_gha1_num(n1, cb_num, n_in, beta0, lamb0, s, a0, ax, ay, b): if not n1: return no_update, no_update - if "on" not in (cb_num or []): + if "on" not in (cb_num or []): return "", None n_in = int(n_in) if n_in else 2000 @@ -974,7 +971,6 @@ def compute_gha1_num(n1, cb_num, n_in, beta0, lamb0, s, a0, ax, ay, b): alpha_rad = wu.deg2rad(float(a0)) s_val = float(s) - P0 = ell.ell2cart(beta_rad, lamb_rad) P1_num, alpha1, werte = gha1_num(ell, P0, alpha_rad, s_val, n_in, all_points=True) @@ -1402,7 +1398,7 @@ def clear_all_stores_on_ellipsoid_change(ax, ay, b): if None in (ax, ay, b): return (no_update,)*7 - return (None, None, None, None, None, None, None) + return None, None, None, None, None, None, None # Funktionen zur Erzeugung der Überschriften @app.callback( @@ -1483,6 +1479,6 @@ if __name__ == "__main__": # Automatisiertes Öffnen der Seite im Browser HOST = "127.0.0.1" PORT = 8050 - #Timer(1.0, webbrowser.open_new_tab(f"http://{HOST}:{PORT}/")).start + # Timer(1.0, webbrowser.open_new_tab(f"http://{HOST}:{PORT}/")).start app.run(host=HOST, port=PORT, debug=False) diff --git a/ellipsoide.py b/ellipsoid_triaxial.py similarity index 85% rename from ellipsoide.py rename to ellipsoid_triaxial.py index f5d9f8e..32d6992 100644 --- a/ellipsoide.py +++ b/ellipsoid_triaxial.py @@ -1,117 +1,20 @@ -import numpy as np -from numpy import sin, cos, arctan, arctan2, sqrt, pi, arccos -import winkelumrechnungen as wu -import jacobian_Ligas -import matplotlib.pyplot as plt -from typing import Tuple -from numpy.typing import NDArray import math -from utils_angle import wrap_mpi_pi, wrap_0_2pi, wrap_mhalfpi_halfpi +from typing import Tuple +import numpy as np +from numpy import arccos, arctan, arctan2, cos, pi, sin, sqrt +from numpy.typing import NDArray -class EllipsoidBiaxial: - def __init__(self, a: float, b: float): - self.a = a - self.b = b - self.c = a ** 2 / b - self.e = sqrt(a ** 2 - b ** 2) / a - self.e_ = sqrt(a ** 2 - b ** 2) / b +import jacobian_Ligas +from utils_angle import wrap_mhalfpi_halfpi, wrap_mpi_pi - @classmethod - def init_name(cls, name: str): - if name == "Bessel": - a = 6377397.15508 - b = 6356078.96290 - return cls(a, b) - elif name == "Hayford": - a = 6378388 - f = 1/297 - b = a - a * f - return cls(a, b) - elif name == "Krassowski": - a = 6378245 - f = 298.3 - b = a - a * f - return cls(a, b) - elif name == "WGS84": - a = 6378137 - f = 298.257223563 - b = a - a * f - return cls(a, b) - - @classmethod - def init_af(cls, a: float, f: float): - b = a - a * f - return cls(a, b) - - V = lambda self, phi: sqrt(1 + self.e_ ** 2 * cos(phi) ** 2) - M = lambda self, phi: self.c / self.V(phi) ** 3 - N = lambda self, phi: self.c / self.V(phi) - - beta2psi = lambda self, beta: np.arctan2(self.a * np.sin(beta), self.b * np.cos(beta)) - beta2phi = lambda self, beta: np.arctan2(self.a ** 2 * np.sin(beta), self.b ** 2 * np.cos(beta)) - - psi2beta = lambda self, psi: np.arctan2(self.b * np.sin(psi), self.a * np.cos(psi)) - psi2phi = lambda self, psi: np.arctan2(self.a * np.sin(psi), self.b * np.cos(psi)) - - phi2beta = lambda self, phi: np.arctan2(self.b**2 * np.sin(phi), self.a**2 * np.cos(phi)) - phi2psi = lambda self, phi: np.arctan2(self.b * np.sin(phi), self.a * np.cos(phi)) - - phi2p = lambda self, phi: self.N(phi) * cos(phi) - - def bi_cart2ell(self, point: NDArray, Eh: float = 0.001, Ephi: float = wu.gms2rad([0, 0, 0.001])) -> Tuple[float, float, float]: - """ - Umrechnung von kartesischen in ellipsoidische Koordinaten auf einem Rotationsellipsoid - # TODO: Quelle - :param point: Punkt in kartesischen Koordinaten - :param Eh: Grenzwert für die Höhe - :param Ephi: Grenzwert für die Breite - :return: ellipsoidische Breite, Länge, geodätische Höhe - """ - x, y, z = point - - lamb = arctan2(y, x) - - p = sqrt(x**2+y**2) - - phi_null = arctan2(z, p*(1 - self.e**2)) - - hi = [0] - phii = [phi_null] - - i = 0 - - while True: - N = self.a / sqrt(1 - self.e**2 * sin(phii[i])**2) - h = p / cos(phii[i]) - N - phi = arctan2(z, p * (1-(self.e**2*N) / (N+h))) - hi.append(h) - phii.append(phi) - dh = abs(hi[i]-h) - dphi = abs(phii[i]-phi) - i = i+1 - if dh < Eh: - if dphi < Ephi: - break - return phi, lamb, h - - def bi_ell2cart(self, phi: float, lamb: float, h: float) -> NDArray: - """ - Umrechnung von ellipsoidischen in kartesische Koordinaten auf einem Rotationsellipsoid - # TODO: Quelle - :param phi: ellipsoidische Breite - :param lamb: ellipsoidische Länge - :param h: geodätische Höhe - :return: Punkt in kartesischen Koordinaten - """ - W = sqrt(1 - self.e**2 * sin(phi)**2) - N = self.a / W - x = (N+h) * cos(phi) * cos(lamb) - y = (N+h) * cos(phi) * sin(lamb) - z = (N * (1-self.e**2) + h) * sin(phi) - return np.array([x, y, z]) class EllipsoidTriaxial: + """ + Klasse für dreiachsige Ellipsoide + Parameter: Formparameter + Funktionen: Koordinatenumrechnungen + """ def __init__(self, ax: float, ay: float, b: float): self.ax = ax self.ay = ay @@ -125,14 +28,19 @@ class EllipsoidTriaxial: self.Ex = sqrt(self.ax**2 - self.b**2) self.Ey = sqrt(self.ay**2 - self.b**2) self.Ee = sqrt(self.ax**2 - self.ay**2) + nenner = sqrt(max(self.ax * self.ax - self.b * self.b, 0.0)) + self.k = sqrt(max(self.ay * self.ay - self.b * self.b, 0.0)) / nenner + self.k_ = sqrt(max(self.ax * self.ax - self.ay * self.ay, 0.0)) / nenner + self.e = sqrt(max(self.ax * self.ax - self.b * self.b, 0.0)) / self.ay @classmethod - def init_name(cls, name: str): + def init_name(cls, name: str) -> EllipsoidTriaxial: """ - Mögliche Ellipsoide: BursaFialova1993, BursaSima1980, BursaSima1980round, Eitschberger1978, Bursa1972, - Bursa1970, BesselBiaxial, Fiction, KarneyTest2024 + Mögliche Ellipsoide: BursaSima1980round, KarneyTest2024, Fiction, BursaFialova1993, BursaSima1980, Eitschberger1978, Bursa1972, + Bursa1970 Panou et al (2020) :param name: Name des dreiachsigen Ellipsoids + :return: dreiachsiger Ellipsoid """ if name == "BursaFialova1993": ax = 6378171.36 @@ -165,11 +73,6 @@ class EllipsoidTriaxial: ay = 6378105 b = 6356754 return cls(ax, ay, b) - elif name == "BesselBiaxial": - ax = 6377397.15509 - ay = 6377397.15508 - b = 6356078.96290 - return cls(ax, ay, b) elif name == "Fiction": ax = 6000000 ay = 4000000 @@ -180,6 +83,8 @@ class EllipsoidTriaxial: ay = 1 b = 1 / sqrt(2) return cls(ax, ay, b) + else: + raise Exception(f"EllipsoidTriaxial.init_name: Name {name} unbekannt") def func_H(self, point: NDArray) -> float: """ @@ -220,7 +125,6 @@ class EllipsoidTriaxial: (self.ay ** 2 + self.b ** 2) * x ** 2 - (self.ax ** 2 + self.b ** 2) * y ** 2 - ( self.ax ** 2 + self.ay ** 2) * z ** 2) if c1 ** 2 - 4 * c0 < -1e-9: - t2 = np.nan raise Exception("t1, t2: Negativer Wurzelterm") elif c1 ** 2 - 4 * c0 < 0: t2 = 0 @@ -265,7 +169,6 @@ class EllipsoidTriaxial: s1 = 2 * sqrt(p) * cos(omega/3) - c2/3 s2 = 2 * sqrt(p) * cos(omega/3 - 2*pi/3) - c2/3 s3 = 2 * sqrt(p) * cos(omega/3 - 4*pi/3) - c2/3 - # print(s1, s2, s3) beta = arctan(sqrt((-self.b**2 - s2) / (self.ay**2 + s2))) if abs((-self.ay**2 - s3) / (self.ax**2 + s3)) > 1e-7: @@ -289,7 +192,7 @@ class EllipsoidTriaxial: beta, lamb = np.broadcast_arrays(beta, lamb) beta = np.where( - np.isclose(np.abs(beta), np.pi / 2, atol=1e-15), + np.isclose(np.abs(beta), pi / 2, atol=1e-15), beta * 8999999999999999 / 9000000000000000, beta ) @@ -586,6 +489,8 @@ class EllipsoidTriaxial: invJ, fxE = jacobian_Ligas.case2(E, F, G, np.array([xG, yG, zG]), pE) elif mode == "ligas3": invJ, fxE = jacobian_Ligas.case3(E, F, G, np.array([xG, yG, zG]), pE) + else: + raise Exception(f"cart2geod: Modus {mode} nicht bekannt") pEi = pE.reshape(-1, 1) - invJ @ fxE.reshape(-1, 1) pEi = pEi.reshape(1, -1).flatten() loa = sqrt((pEi[0]-pE[0])**2 + (pEi[1]-pE[1])**2 + (pEi[2]-pE[2])**2) @@ -607,10 +512,10 @@ class EllipsoidTriaxial: phi, lamb, h = self.cart2geod(point, f"ligas{new_mode}", maxIter, maxLoa) else: if xG < 0 and yG < 0: - lamb = -pi + lamb + lamb += -pi elif xG < 0: - lamb = pi + lamb + lamb += pi if abs(zG) < eps: phi = 0 @@ -759,11 +664,11 @@ class EllipsoidTriaxial: if __name__ == "__main__": ell = EllipsoidTriaxial.init_name("KarneyTest2024") - # cart = ell.ell2cart(np.pi/2, 0) + # cart = ell.ell2cart(pi/2, 0) # print(cart) - # cart = ell.ell2cart(np.pi/2*8999999999999999/9000000000000000, 0) + # cart = ell.ell2cart(pi/2*8999999999999999/9000000000000000, 0) # print(cart) - elli = ell.cart2ell([0, 0.0, 1/np.sqrt(2)]) + elli = ell.cart2ell(np.array([0, 0.0, 1/sqrt(2)])) print(elli) # ell = EllipsoidTriaxial.init_name("BursaSima1980") diff --git a/jacobian_Ligas.py b/jacobian_Ligas.py index 0e143b1..dc94ec1 100644 --- a/jacobian_Ligas.py +++ b/jacobian_Ligas.py @@ -1,6 +1,8 @@ +from typing import Tuple + import numpy as np from numpy.typing import NDArray -from typing import Tuple + def case1(E: float, F: float, G: float, pG: NDArray, pE: NDArray) -> Tuple[NDArray, NDArray]: """ @@ -34,7 +36,7 @@ def case1(E: float, F: float, G: float, pG: NDArray, pE: NDArray) -> Tuple[NDArr return invJ, fxE -def case2(E: float, F: float, G: float, pG: np.ndarray, pE: np.ndarray) -> Tuple[NDArray, NDArray]: +def case2(E: float, F: float, G: float, pG: NDArray, pE: NDArray) -> Tuple[NDArray, NDArray]: """ Aufstellen des Gleichungssystem für den zweiten Fall :param E: Konstante E @@ -68,7 +70,7 @@ def case2(E: float, F: float, G: float, pG: np.ndarray, pE: np.ndarray) -> Tuple return invJ, fxE -def case3(E: float, F: float, G: float, pG: np.ndarray, pE: np.ndarray) -> Tuple[NDArray, NDArray]: +def case3(E: float, F: float, G: float, pG: NDArray, pE: NDArray) -> Tuple[NDArray, NDArray]: """ Aufstellen des Gleichungssystem für den dritten Fall :param E: Konstante E diff --git a/Tests/__init__.py b/nicht abgeben/GHA_biaxial/__init__.py similarity index 100% rename from Tests/__init__.py rename to nicht abgeben/GHA_biaxial/__init__.py diff --git a/GHA_biaxial/bessel.py b/nicht abgeben/GHA_biaxial/bessel.py similarity index 81% rename from GHA_biaxial/bessel.py rename to nicht abgeben/GHA_biaxial/bessel.py index 898124f..875200b 100644 --- a/GHA_biaxial/bessel.py +++ b/nicht abgeben/GHA_biaxial/bessel.py @@ -1,10 +1,20 @@ -from numpy import * -import scipy as sp -from ellipsoide import EllipsoidBiaxial from typing import Tuple +import scipy as sp +from ellipsoid_biaxial import EllipsoidBiaxial +from numpy import * + def gha1(re: EllipsoidBiaxial, phi0: float, lamb0: float, alpha0:float, s: float) -> Tuple[float, float, float]: + """ + Berechnung der 1.GHA auf einem Rotationsellipsoid nach Bessel + :param re: + :param phi0: + :param lamb0: + :param alpha0: + :param s: + :return: + """ psi0 = re.phi2psi(phi0) clairant = arcsin(cos(psi0) * sin(alpha0)) sigma0 = arcsin(sin(psi0) / cos(clairant)) diff --git a/GHA_biaxial/gauss.py b/nicht abgeben/GHA_biaxial/gauss.py similarity index 97% rename from GHA_biaxial/gauss.py rename to nicht abgeben/GHA_biaxial/gauss.py index 834fb4d..74c2c0d 100644 --- a/GHA_biaxial/gauss.py +++ b/nicht abgeben/GHA_biaxial/gauss.py @@ -1,8 +1,8 @@ -from numpy import sin, cos, pi, sqrt, tan, arcsin, arccos, arctan -import ausgaben as aus -from ellipsoide import EllipsoidBiaxial from typing import Tuple +from ellipsoid_biaxial import EllipsoidBiaxial +from numpy import arctan, cos, sin, sqrt, tan + def gha1(re: EllipsoidBiaxial, phi0: float, lamb0: float, alpha0: float, s: float, eps: float = 1e-12) -> Tuple[float, float, float]: """ diff --git a/GHA_biaxial/rk.py b/nicht abgeben/GHA_biaxial/rk.py similarity index 65% rename from GHA_biaxial/rk.py rename to nicht abgeben/GHA_biaxial/rk.py index aca6631..a12e2cc 100644 --- a/GHA_biaxial/rk.py +++ b/nicht abgeben/GHA_biaxial/rk.py @@ -1,13 +1,26 @@ -import runge_kutta as rk -from numpy import sin, cos, tan -import winkelumrechnungen as wu -from ellipsoide import EllipsoidBiaxial +from typing import Tuple + import numpy as np +from ellipsoid_biaxial import EllipsoidBiaxial +from numpy import cos, sin, tan from numpy.typing import NDArray +import runge_kutta as rk + + def gha1(re: EllipsoidBiaxial, phi0: float, lamb0: float, alpha0: float, s: float, num: int) -> Tuple[float, float, float]: + """ + Berechnung der 1. GHA auf einem Rotationsellipsoid mittels RK4 + :param re: + :param phi0: + :param lamb0: + :param alpha0: + :param s: + :param num: + :return: + """ def buildODE(): - def ODE(s, v): + def ODE(s: float, v: NDArray): phi, lam, A = v V = re.V(phi) dphi = cos(A) * V ** 3 / re.c diff --git a/nicht abgeben/Tests/__init__.py b/nicht abgeben/Tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Tests/algorithms_test.ipynb b/nicht abgeben/Tests/algorithms_test.ipynb similarity index 57% rename from Tests/algorithms_test.ipynb rename to nicht abgeben/Tests/algorithms_test.ipynb index eb7e0be..4ecc8cc 100644 --- a/Tests/algorithms_test.ipynb +++ b/nicht abgeben/Tests/algorithms_test.ipynb @@ -1,58 +1,62 @@ { "cells": [ { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-10T14:18:58.461729Z", + "start_time": "2026-02-10T14:18:56.643008Z" + } + }, "cell_type": "code", "source": [ - "from requests import delete\n", "%load_ext autoreload\n", "%autoreload 2" ], - "id": "89aa93e9dbedd113", + "id": "62cfad268170e40e", "outputs": [], - "execution_count": null + "execution_count": 1 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-10T14:18:59.771948Z", + "start_time": "2026-02-10T14:18:58.473530Z" + } + }, "cell_type": "code", "source": [ "%reload_ext autoreload\n", "%autoreload 2\n", - "import time\n", - "from numpy import nan\n", - "import numpy as np\n", "import math\n", - "import winkelumrechnungen as wu\n", "import os\n", - "from contextlib import contextmanager, redirect_stdout, redirect_stderr\n", - "import plotly.graph_objects as go\n", - "import warnings\n", "import pickle\n", "import random\n", - "from GHA_triaxial.gha1_ES import jacobi_konstante\n", + "import time\n", + "from contextlib import contextmanager, redirect_stderr, redirect_stdout\n", "\n", - "from ellipsoide import EllipsoidTriaxial\n", - "from GHA_triaxial.utils import alpha_para2ell, alpha_ell2para\n", + "import numpy as np\n", + "import plotly.graph_objects as go\n", + "from numpy import nan\n", "\n", - "from GHA_triaxial.gha1_num import gha1_num\n", + "import winkelumrechnungen as wu\n", "from GHA_triaxial.gha1_ana import gha1_ana\n", - "from GHA_triaxial.gha1_ES import gha1_ES\n", - "from GHA_triaxial.gha1_approx import gha1_approx\n", - "\n", - "from GHA_triaxial.gha2_num import gha2_num\n", - "from GHA_triaxial.gha2_ES import gha2_ES\n", - "from GHA_triaxial.gha2_approx import gha2_approx\n", - "\n", + "from GHA_triaxial.gha1_num import gha1_num\n", + "from GHA_triaxial.numeric_examples_karney import get_random_examples_gamma as get_examples_karney_gamma\n", "from GHA_triaxial.numeric_examples_panou import get_tables as get_tables_panou\n", - "from GHA_triaxial.numeric_examples_karney import get_random_examples as get_examples_karney\n", - "from GHA_triaxial.numeric_examples_karney import get_random_examples_gamma as get_examples_karney_gamma" + "from GHA_triaxial.utils import alpha_ell2para, alpha_para2ell, jacobi_konstante\n", + "from ellipsoid_triaxial import EllipsoidTriaxial" ], - "id": "2005e5a8854eea1e", + "id": "8162bc4fc2db52b4", "outputs": [], - "execution_count": null + "execution_count": 2 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-10T14:33:46.657663Z", + "start_time": "2026-02-10T14:33:46.475353Z" + } + }, "cell_type": "code", "source": [ "@contextmanager\n", @@ -61,13 +65,15 @@ " with redirect_stdout(fnull), redirect_stderr(fnull):\n", " yield" ], - "id": "90f107a11ff0de7e", + "id": "cf9a806495cb8b18", "outputs": [], - "execution_count": null + "execution_count": 14 }, { "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ "# dsPart = [60, 125, 600, 1250, 6000, 60000] entspricht bei der Erde ca. 100km, 50km, 10km, 5km, 1km, 100m\n", "\n", @@ -81,20 +87,23 @@ "dsPart_gha2_ES = [60, 600, 1250]\n", "dsPart_gha2_approx = [600, 1250, 6000]" ], - "id": "fc6c39b8d358e54b", - "outputs": [], - "execution_count": null + "id": "864ed6d620a8bf32" }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-10T17:57:04.649273Z", + "start_time": "2026-02-10T17:57:04.361578Z" + } + }, "cell_type": "code", "source": [ "def build_examples(test):\n", " if test == \"Karney\":\n", " ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"KarneyTest2024\")\n", - " num = 5\n", + " num = 2\n", " seed = 42\n", - " groups = [\"a_short\", \"a_long\", \"b_short\", \"b_long\", \"c_short\", \"c_long\", \"de_short\", \"de_long\", \"e_short\", \"e_long\"]\n", + " groups = [\"c_short\", \"c_long\", \"de_short\", \"de_long\"]\n", " group_indices = []\n", " examples = []\n", " for group in groups:\n", @@ -131,12 +140,17 @@ "ell, examples, group_indices = build_examples(test)\n", "pass" ], - "id": "6770dbd57d475127", + "id": "7995a2cb59eaa6c1", "outputs": [], - "execution_count": null + "execution_count": 86 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-10T17:32:59.227572Z", + "start_time": "2026-02-10T17:32:59.000734Z" + } + }, "cell_type": "code", "source": [ "def execute_results(test, ell, examples):\n", @@ -204,97 +218,102 @@ " print(e)\n", " example_results[f\"GHA1_ana_{maxM}_{parts}\"] = (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 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(beta1_approx - beta1)\n", - " # d_lamb1 = abs(lamb1_approx - lamb1)\n", - " # d_alpha1 = abs(alpha1_approx - alpha1_ell)\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", - " # # ----------------------------------------------\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(alpha0_num - alpha0_ell)\n", - " # d_alpha1 = abs(alpha1_num_2 - alpha1_ell)\n", - " # d_s = abs(s_num - s)\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(alpha0_ES - alpha0_ell)\n", - " # d_alpha1 = abs(alpha1_ES - alpha1_ell)\n", - " # d_s = abs(s_ES - s)\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(alpha0_approx - alpha0_ell)\n", - " # d_alpha1 = abs(alpha1_approx - alpha1_ell)\n", - " # d_s = abs(s_approx - s)\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", + " # 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 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(beta1_approx - beta1)\n", + " # d_lamb1 = abs(lamb1_approx - lamb1)\n", + " # d_alpha1 = abs(alpha1_approx - alpha1_ell)\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", + " # # ----------------------------------------------\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(alpha0_num - alpha0_ell)\n", + " # d_alpha1 = abs(alpha1_num_2 - alpha1_ell)\n", + " # d_s = abs(s_num - s)\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(alpha0_ES - alpha0_ell)\n", + " # d_alpha1 = abs(alpha1_ES - alpha1_ell)\n", + " # d_s = abs(s_ES - s)\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(alpha0_approx - alpha0_ell)\n", + " # d_alpha1 = abs(alpha1_approx - alpha1_ell)\n", + " # d_s = abs(s_approx - s)\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", " return results\n", "# results = execute_results(test, ell, examples)" ], - "id": "fc45e0f618a0e4d8", + "id": "e8de0630b75958d0", "outputs": [], - "execution_count": null + "execution_count": 69 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-10T17:31:07.926665Z", + "start_time": "2026-02-10T17:31:07.737326Z" + } + }, "cell_type": "code", "source": [ "def save_results(test, results):\n", @@ -302,13 +321,15 @@ " pickle.dump(results, f)\n", "# save_results(test, results)" ], - "id": "74fbd4d33c288839", + "id": "5459c14f54ebeb8", "outputs": [], - "execution_count": null + "execution_count": 54 }, { "metadata": {}, "cell_type": "code", + "outputs": [], + "execution_count": null, "source": [ "# dsPart = [60, 125, 600, 1250, 6000, 60000] entspricht bei der Erde ca. 100km, 50km, 10km, 5km, 1km, 100m\n", "\n", @@ -327,9 +348,7 @@ "results_panou = execute_results(test, ell_panou, examples_panou)\n", "save_results(test, results_panou)" ], - "id": "58697308664fa539", - "outputs": [], - "execution_count": null + "id": "277d8f1f2de34e96" }, { "metadata": {}, @@ -352,7 +371,7 @@ "results_karney = execute_results(test, ell_karney, examples_karney)\n", "save_results(test, results_karney)" ], - "id": "5d35a01ba8d6e2b1", + "id": "2db1d1039247920f", "outputs": [], "execution_count": null }, @@ -377,35 +396,35 @@ "results_random = execute_results(test, ell_random, examples_random)\n", "save_results(test, results_random)" ], - "id": "848eab44283945c6", + "id": "3ae230891d70b2e9", "outputs": [], "execution_count": null }, { "metadata": { "ExecuteTime": { - "end_time": "2026-02-09T10:56:29.360372Z", - "start_time": "2026-02-09T10:56:29.108940Z" + "end_time": "2026-02-10T17:55:34.868646Z", + "start_time": "2026-02-10T17:55:34.546540Z" } }, "cell_type": "code", "source": [ "test = \"Karney\"\n", - "with open(f\"gha_results{test}.pkl\", \"rb\") as f:\n", + "with open(f\"gha_results{test}_new.pkl\", \"rb\") as f:\n", " results = pickle.load(f)\n", "\n", "if test == \"Panou\":\n", " del results[list(results.keys())[7]]" ], - "id": "4c20a0579c0f7038", + "id": "b6eab15f11b1af83", "outputs": [], - "execution_count": 47 + "execution_count": 82 }, { "metadata": { "ExecuteTime": { - "end_time": "2026-02-09T13:06:21.830652Z", - "start_time": "2026-02-09T13:06:21.411031Z" + "end_time": "2026-02-10T17:54:07.766943Z", + "start_time": "2026-02-10T17:54:07.528595Z" } }, "cell_type": "code", @@ -439,15 +458,15 @@ " results[example][method][i] = metric\n", " pass" ], - "id": "24ee93abe040e707", + "id": "bad7cbd391a25305", "outputs": [], - "execution_count": 57 + "execution_count": 75 }, { "metadata": { "ExecuteTime": { - "end_time": "2026-02-09T13:06:22.428549Z", - "start_time": "2026-02-09T13:06:22.088685Z" + "end_time": "2026-02-10T17:54:37.168518Z", + "start_time": "2026-02-10T17:54:36.892036Z" } }, "cell_type": "code", @@ -474,44 +493,30 @@ " listed_results[method][metrics_gha2[i]].append(metric)\n", " pass" ], - "id": "2086b5bcd8416e33", + "id": "f9f239355b4f8c45", "outputs": [], - "execution_count": 58 + "execution_count": 78 }, { "metadata": { + "jupyter": { + "is_executing": true + }, "ExecuteTime": { - "end_time": "2026-02-09T13:14:57.595993Z", - "start_time": "2026-02-09T13:06:24.823191Z" + "start_time": "2026-02-10T18:06:31.749955Z" } }, "cell_type": "code", "source": "pass", - "id": "8d46dd972dfdc66f", - "outputs": [ - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001B[31m---------------------------------------------------------------------------\u001B[39m", - "\u001B[31mKeyboardInterrupt\u001B[39m Traceback (most recent call last)", - "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[59]\u001B[39m\u001B[32m, line 1\u001B[39m\n\u001B[32m----> \u001B[39m\u001B[32m1\u001B[39m \u001B[38;5;28;01mpass\u001B[39;00m\n", - "\u001B[36mFile \u001B[39m\u001B[32mC:\\Program Files\\JetBrains\\PyCharm 2025.2.4\\plugins\\python-ce\\helpers\\pydev\\_pydevd_bundle\\pydevd_frame.py:755\u001B[39m, in \u001B[36mPyDBFrame.trace_dispatch\u001B[39m\u001B[34m(self, frame, event, arg)\u001B[39m\n\u001B[32m 753\u001B[39m \u001B[38;5;66;03m# if thread has a suspend flag, we suspend with a busy wait\u001B[39;00m\n\u001B[32m 754\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m info.pydev_state == STATE_SUSPEND:\n\u001B[32m--> \u001B[39m\u001B[32m755\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mdo_wait_suspend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mthread\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mframe\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mevent\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43marg\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 756\u001B[39m \u001B[38;5;66;03m# No need to reset frame.f_trace to keep the same trace function.\u001B[39;00m\n\u001B[32m 757\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m.trace_dispatch\n", - "\u001B[36mFile \u001B[39m\u001B[32mC:\\Program Files\\JetBrains\\PyCharm 2025.2.4\\plugins\\python-ce\\helpers\\pydev\\_pydevd_bundle\\pydevd_frame.py:412\u001B[39m, in \u001B[36mPyDBFrame.do_wait_suspend\u001B[39m\u001B[34m(self, *args, **kwargs)\u001B[39m\n\u001B[32m 411\u001B[39m \u001B[38;5;28;01mdef\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34mdo_wait_suspend\u001B[39m(\u001B[38;5;28mself\u001B[39m, *args, **kwargs):\n\u001B[32m--> \u001B[39m\u001B[32m412\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_args\u001B[49m\u001B[43m[\u001B[49m\u001B[32;43m0\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m.\u001B[49m\u001B[43mdo_wait_suspend\u001B[49m\u001B[43m(\u001B[49m\u001B[43m*\u001B[49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", - "\u001B[36mFile \u001B[39m\u001B[32mC:\\Program Files\\JetBrains\\PyCharm 2025.2.4\\plugins\\python-ce\\helpers\\pydev\\pydevd.py:1196\u001B[39m, in \u001B[36mPyDB.do_wait_suspend\u001B[39m\u001B[34m(self, thread, frame, event, arg, send_suspend_message, is_unhandled_exception)\u001B[39m\n\u001B[32m 1193\u001B[39m from_this_thread.append(frame_id)\n\u001B[32m 1195\u001B[39m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[38;5;28mself\u001B[39m._threads_suspended_single_notification.notify_thread_suspended(thread_id, stop_reason):\n\u001B[32m-> \u001B[39m\u001B[32m1196\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_do_wait_suspend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mthread\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mframe\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mevent\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43marg\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43msuspend_type\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mfrom_this_thread\u001B[49m\u001B[43m)\u001B[49m\n", - "\u001B[36mFile \u001B[39m\u001B[32mC:\\Program Files\\JetBrains\\PyCharm 2025.2.4\\plugins\\python-ce\\helpers\\pydev\\pydevd.py:1211\u001B[39m, in \u001B[36mPyDB._do_wait_suspend\u001B[39m\u001B[34m(self, thread, frame, event, arg, suspend_type, from_this_thread)\u001B[39m\n\u001B[32m 1208\u001B[39m \u001B[38;5;28mself\u001B[39m._call_mpl_hook()\n\u001B[32m 1210\u001B[39m \u001B[38;5;28mself\u001B[39m.process_internal_commands()\n\u001B[32m-> \u001B[39m\u001B[32m1211\u001B[39m \u001B[43mtime\u001B[49m\u001B[43m.\u001B[49m\u001B[43msleep\u001B[49m\u001B[43m(\u001B[49m\u001B[32;43m0.01\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[32m 1213\u001B[39m \u001B[38;5;28mself\u001B[39m.cancel_async_evaluation(get_current_thread_id(thread), \u001B[38;5;28mstr\u001B[39m(\u001B[38;5;28mid\u001B[39m(frame)))\n\u001B[32m 1215\u001B[39m \u001B[38;5;66;03m# process any stepping instructions\u001B[39;00m\n", - "\u001B[31mKeyboardInterrupt\u001B[39m: " - ] - } - ], - "execution_count": 59 + "id": "61d5338f21c7b39c", + "outputs": [], + "execution_count": null }, { "metadata": { "ExecuteTime": { - "end_time": "2026-02-09T10:56:32.604304Z", - "start_time": "2026-02-09T10:56:32.423267Z" + "end_time": "2026-02-10T17:56:02.273938Z", + "start_time": "2026-02-10T17:56:02.062761Z" } }, "cell_type": "code", @@ -548,15 +553,15 @@ "\n", " group_indices.append(index)" ], - "id": "567b66ef21126628", + "id": "bbe7338eec2b77ca", "outputs": [], - "execution_count": 49 + "execution_count": 84 }, { "metadata": { "ExecuteTime": { - "end_time": "2026-02-09T13:04:46.869828Z", - "start_time": "2026-02-09T13:04:45.309895Z" + "end_time": "2026-02-10T17:57:11.678573Z", + "start_time": "2026-02-10T17:57:11.166454Z" } }, "cell_type": "code", @@ -647,25 +652,29 @@ "for fig in figs:\n", " fig.show()" ], - "id": "eeb5a204cc4bbf7d", + "id": "26f24015e48dbe09", "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_7832\\1271482206.py:6: RuntimeWarning:\n", + "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_9084\\1271482206.py:6: RuntimeWarning:\n", "\n", "All-NaN slice encountered\n", "\n", - "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_7832\\1271482206.py:6: RuntimeWarning:\n", + "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_9084\\1271482206.py:6: RuntimeWarning:\n", "\n", "All-NaN slice encountered\n", "\n", - "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_7832\\1271482206.py:6: RuntimeWarning:\n", + "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_9084\\1271482206.py:6: RuntimeWarning:\n", "\n", "All-NaN slice encountered\n", "\n", - "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_7832\\1271482206.py:6: RuntimeWarning:\n", + "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_9084\\1271482206.py:6: RuntimeWarning:\n", + "\n", + "All-NaN slice encountered\n", + "\n", + "C:\\Users\\moell\\AppData\\Local\\Temp\\ipykernel_9084\\1271482206.py:6: RuntimeWarning:\n", "\n", "All-NaN slice encountered\n", "\n" @@ -719,7788 +728,12 @@ 0, 0, 0, - 4, - 0, - 0, 2, 0, 0, 0, 0, 0, - 0 - ], - [ - "9.62e+04", - "4.95e+04", - "7.42e+04", - "0.00999", - "2.73e-09", - "8.89e-05", - "8.93e-10", - "2.73e-09", - "0.042", - "8.27e+03", - "1.72e+05", - "1.72e+05", - "0.373", - "0.373", - "0.373" - ], - [ - "3.28e+04", - "6.27e+04", - "8.06e+04", - "0.0177", - "3.46e-09", - "2.23e-05", - "1.2e-09", - "3.46e-09", - "0.00507", - "9.92e+03", - "1.16e+05", - "1.16e+05", - "0.547", - "0.547", - "0.547" - ], - [ - "2.18e+04", - "7.32e+04", - "1.08e+05", - "0.0327", - "3.66e-09", - "1.47e-05", - "1.47e-09", - "3.66e-09", - "0.839", - "1.05e+04", - "2.74e+05", - "2.74e+05", - "0.853", - "0.853", - "0.853" - ], - [ - "57.1", - "4.12", - "32.3", - "0.0606", - "0.248", - "0.0308", - "1.02", - "4.01", - "0.502", - "1.61", - "38.7", - "7.43", - "0.0388", - "0.413", - "2.08" - ] - ] - }, - "header": { - "align": "center", - "fill": { - "color": "lightgrey" - }, - "font": { - "size": 13 - }, - "values": [ - "Algorithmus", - "Parameter", - "NaN", - "dBeta [\"]", - "dLambda [\"]", - "dAlpha1 [\"]", - "time [s]" - ] - }, - "type": "table" - } - ], - "layout": { - "template": { - "data": { - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "contour" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermap" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0.0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1.0, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "margin": { - "l": 20, - "r": 20, - "t": 60, - "b": 20 - }, - "title": { - "text": "Karney - Gruppe a_long - GHA1" - }, - "width": 800, - "height": 280 - }, - "config": { - "plotlyServerURL": "https://plot.ly" - } - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": "center", - "values": [ - [ - "ES", - "ES", - "ES", - "approx", - "approx", - "approx", - "num", - "num", - "num" - ], - [ - "1250", - "60", - "600", - "1250", - "600", - "6000", - "1000", - "10000", - "5000" - ], - [ - 0, - 0, - 0, - 1, - 1, - 1, - 0, - 0, - 0 - ], - [ - "1.04e+05", - "1.04e+05", - "1.04e+05", - "1.76e+05", - "1.76e+05", - "1.76e+05", - "3.46e+05", - "3.46e+05", - "3.46e+05" - ], - [ - "9.27e+04", - "9.29e+04", - "9.27e+04", - "2.94e+05", - "2.94e+05", - "2.94e+05", - "3.15e+05", - "3.15e+05", - "3.15e+05" - ], - [ - "0.00785", - "0.00782", - "0.00785", - "0.106", - "0.106", - "0.106", - "2.11", - "2.11", - "2.11" - ], - [ - "73.1", - "5.53", - "37.5", - "0.568", - "0.242", - "1.63", - "14.4", - "56.4", - "55.2" - ] - ] - }, - "header": { - "align": "center", - "fill": { - "color": "lightgrey" - }, - "font": { - "size": 13 - }, - "values": [ - "Algorithmus", - "Parameter", - "NaN", - "dAlpha0 [\"]", - "dAlpha1 [\"]", - "dStrecke [m]", - "time [s]" - ] - }, - "type": "table" - } - ], - "layout": { - "template": { - "data": { - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "contour" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermap" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0.0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1.0, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "margin": { - "l": 20, - "r": 20, - "t": 60, - "b": 20 - }, - "title": { - "text": "Karney - Gruppe a_long - GHA2" - }, - "width": 800, - "height": 280 - }, - "config": { - "plotlyServerURL": "https://plot.ly" - } - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": "center", - "values": [ - [ - "ES", - "ES", - "ES", - "ana", - "ana", - "ana", - "ana", - "ana", - "ana", - "approx", - "approx", - "approx", - "num", - "num", - "num" - ], - [ - "1250", - "60", - "600", - "20_16", - "20_64", - "20_8", - "60_16", - "60_64", - "60_8", - "1250", - "30000", - "6000", - "1000", - "10000", - "50000" - ], - [ - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0 - ], - [ - "1.22e+04", - "3.46e+04", - "3.45e+04", - "0.0024", - "1.72e-09", - "0.0012", - "1.6e-10", - "1.72e-09", - "3.39e-05", - "1.27e+03", - "4.83e+04", - "2.65e+03", - "0.158", - "0.158", - "0.158" - ], - [ - "9.54e+03", - "2.27e+04", - "2.28e+04", - "0.0022", - "1.6e-09", - "0.000762", - "1.79e-10", - "1.6e-09", - "2.63e-05", - "831", - "1.78e+04", - "1.31e+03", - "0.0418", - "0.0418", - "0.0418" - ], - [ - "1.7e+04", - "6.99e+04", - "6.98e+04", - "0.0167", - "2.56e-09", - "0.00102", - "2.75e-10", - "2.56e-09", - "1.31e+05", - "4.72e+03", - "5.04e+04", - "1.78e+03", - "0.165", - "0.165", - "0.165" - ], - [ - "29.7", - "2.21", - "16.4", - "0.0304", - "0.121", - "0.0154", - "0.506", - "2.01", - "0.253", - "0.75", - "17.3", - "3.54", - "0.0436", - "0.412", - "1.95" - ] - ] - }, - "header": { - "align": "center", - "fill": { - "color": "lightgrey" - }, - "font": { - "size": 13 - }, - "values": [ - "Algorithmus", - "Parameter", - "NaN", - "dBeta [\"]", - "dLambda [\"]", - "dAlpha1 [\"]", - "time [s]" - ] - }, - "type": "table" - } - ], - "layout": { - "template": { - "data": { - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "contour" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermap" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0.0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1.0, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "margin": { - "l": 20, - "r": 20, - "t": 60, - "b": 20 - }, - "title": { - "text": "Karney - Gruppe a_short - GHA1" - }, - "width": 800, - "height": 280 - }, - "config": { - "plotlyServerURL": "https://plot.ly" - } - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": "center", - "values": [ - [ - "ES", - "ES", - "ES", - "approx", - "approx", - "approx", - "num", - "num", - "num" - ], - [ - "1250", - "60", - "600", - "1250", - "600", - "6000", - "1000", - "10000", - "5000" - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 2, - 2 - ], - [ - "9.51e+04", - "9.58e+04", - "9.52e+04", - "4.66e+03", - "4.66e+03", - "1.27e+04", - "1.69e-06", - "8.9e-08", - "8.9e-08" - ], - [ - "9.58e+04", - "9.67e+04", - "9.59e+04", - "1.24e+04", - "5.48e+03", - "6.47e+04", - "1.87e-07", - "1.9e-07", - "4.98e-08" - ], - [ - "9.59e-05", - "7.07e-05", - "9.56e-05", - "0.000142", - "0.000138", - "0.000209", - "3.84e-12", - "3.74e-13", - "2.45e-13" - ], - [ - "34.5", - "2.45", - "17.4", - "0.176", - "0.0882", - "0.757", - "13.3", - "54.5", - "55.6" - ] - ] - }, - "header": { - "align": "center", - "fill": { - "color": "lightgrey" - }, - "font": { - "size": 13 - }, - "values": [ - "Algorithmus", - "Parameter", - "NaN", - "dAlpha0 [\"]", - "dAlpha1 [\"]", - "dStrecke [m]", - "time [s]" - ] - }, - "type": "table" - } - ], - "layout": { - "template": { - "data": { - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "contour" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermap" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0.0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1.0, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "margin": { - "l": 20, - "r": 20, - "t": 60, - "b": 20 - }, - "title": { - "text": "Karney - Gruppe a_short - GHA2" - }, - "width": 800, - "height": 280 - }, - "config": { - "plotlyServerURL": "https://plot.ly" - } - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": "center", - "values": [ - [ - "ES", - "ES", - "ES", - "ana", - "ana", - "ana", - "ana", - "ana", - "ana", - "approx", - "approx", - "approx", - "num", - "num", - "num" - ], - [ - "1250", - "60", - "600", - "20_16", - "20_64", - "20_8", - "60_16", - "60_64", - "60_8", - "1250", - "30000", - "6000", - "1000", - "10000", - "50000" - ], - [ - 0, - 0, - 0, - 2, - 2, - 4, - 2, - 2, - 1, - 0, - 0, - 0, - 2, - 0, - 0 - ], - [ - "1.2e+03", - "5.01e+04", - "2.9e+03", - "0.00175", - "3.66e-10", - "0.000586", - "2.93e-09", - "3.66e-10", - "24.5", - "423", - "4.29e+03", - "4.06e+03", - "5.76", - "76.4", - "76.4" - ], - [ - "2.02e+03", - "5.26e+04", - "4.9e+03", - "9.66e-06", - "4.18e-09", - "0.000114", - "3.61e-09", - "4.18e-09", - "17.3", - "81.1", - "9.46e+03", - "8.83e+03", - "8.11", - "88.6", - "88.6" - ], - [ - "1.68e+05", - "3.03e+05", - "2.1e+05", - "1.63e+05", - "1.67e+05", - "1.63e+05", - "1.46e-07", - "1.67e+05", - "1.67e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", - "328", - "2.16e+05", - "2.16e+05" - ], - [ - "67.8", - "4.84", - "35.4", - "0.0727", - "0.265", - "0.0355", - "1.06", - "4.58", - "0.544", - "1.46", - "36.2", - "6.84", - "0.0467", - "0.422", - "1.92" - ] - ] - }, - "header": { - "align": "center", - "fill": { - "color": "lightgrey" - }, - "font": { - "size": 13 - }, - "values": [ - "Algorithmus", - "Parameter", - "NaN", - "dBeta [\"]", - "dLambda [\"]", - "dAlpha1 [\"]", - "time [s]" - ] - }, - "type": "table" - } - ], - "layout": { - "template": { - "data": { - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "contour" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermap" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0.0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1.0, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "margin": { - "l": 20, - "r": 20, - "t": 60, - "b": 20 - }, - "title": { - "text": "Karney - Gruppe b_long - GHA1" - }, - "width": 800, - "height": 280 - }, - "config": { - "plotlyServerURL": "https://plot.ly" - } - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": "center", - "values": [ - [ - "ES", - "ES", - "ES", - "approx", - "approx", - "approx", - "num", - "num", - "num" - ], - [ - "1250", - "60", - "600", - "1250", - "600", - "6000", - "1000", - "10000", - "5000" - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 4, - 4, - 4 - ], - [ - "9.12e+04", - "9.14e+04", - "9.12e+04", - "8.25e+04", - "8.28e+04", - "2.56e+05", - "8.81e+04", - "8.81e+04", - "8.81e+04" - ], - [ - "6.19e+05", - "6.19e+05", - "6.19e+05", - "5.68e+05", - "5.68e+05", - "5.68e+05", - "9.22e+04", - "9.22e+04", - "9.22e+04" - ], - [ - "1.21", - "1.21", - "1.21", - "1.21", - "1.21", - "1.21", - "1.44", - "1.44", - "1.44" - ], - [ - "78", - "3.64", - "40.1", - "0.359", - "0.18", - "1.48", - "16.8", - "69.7", - "67.3" - ] - ] - }, - "header": { - "align": "center", - "fill": { - "color": "lightgrey" - }, - "font": { - "size": 13 - }, - "values": [ - "Algorithmus", - "Parameter", - "NaN", - "dAlpha0 [\"]", - "dAlpha1 [\"]", - "dStrecke [m]", - "time [s]" - ] - }, - "type": "table" - } - ], - "layout": { - "template": { - "data": { - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "contour" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermap" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0.0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1.0, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "margin": { - "l": 20, - "r": 20, - "t": 60, - "b": 20 - }, - "title": { - "text": "Karney - Gruppe b_long - GHA2" - }, - "width": 800, - "height": 280 - }, - "config": { - "plotlyServerURL": "https://plot.ly" - } - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": "center", - "values": [ - [ - "ES", - "ES", - "ES", - "ana", - "ana", - "ana", - "ana", - "ana", - "ana", - "approx", - "approx", - "approx", - "num", - "num", - "num" - ], - [ - "1250", - "60", - "600", - "20_16", - "20_64", - "20_8", - "60_16", - "60_64", - "60_8", - "1250", - "30000", - "6000", - "1000", - "10000", - "50000" - ], - [ - 0, - 0, - 0, - 3, - 1, - 3, - 1, - 1, - 3, - 0, - 0, - 0, - 0, - 0, - 0 - ], - [ - "2.38e+04", - "2.51e+05", - "3.69e+05", - "0.000157", - "2.02e-09", - "7.73", - "0.000857", - "1.83e-09", - "0.00368", - "3.65e+03", - "6.24e+03", - "2.63e+03", - "173", - "173", - "173" - ], - [ - "1.96e+05", - "1.18e+05", - "3.71e+05", - "1.05e-06", - "9.16e-10", - "5.45", - "0.000376", - "7.33e-10", - "5.5e-05", - "1.97e+03", - "3.28e+03", - "1.41e+03", - "21.1", - "21.1", - "21.1" - ], - [ - "2.75e+05", - "3.08e+05", - "2.38e+05", - "0.000404", - "5.5e-10", - "5.5e-10", - "2.54e+05", - "6.41e-10", - "0.0204", - "1.55e+05", - "3.24e+05", - "3.24e+05", - "5.63e+04", - "5.63e+04", - "5.63e+04" - ], - [ - "21.3", - "1.5", - "10.8", - "0.0146", - "0.0583", - "0.00377", - "0.263", - "1.04", - "0.12", - "0.517", - "12.1", - "2.45", - "0.0384", - "0.401", - "1.94" - ] - ] - }, - "header": { - "align": "center", - "fill": { - "color": "lightgrey" - }, - "font": { - "size": 13 - }, - "values": [ - "Algorithmus", - "Parameter", - "NaN", - "dBeta [\"]", - "dLambda [\"]", - "dAlpha1 [\"]", - "time [s]" - ] - }, - "type": "table" - } - ], - "layout": { - "template": { - "data": { - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "contour" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermap" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0.0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1.0, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "margin": { - "l": 20, - "r": 20, - "t": 60, - "b": 20 - }, - "title": { - "text": "Karney - Gruppe b_short - GHA1" - }, - "width": 800, - "height": 280 - }, - "config": { - "plotlyServerURL": "https://plot.ly" - } - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": "center", - "values": [ - [ - "ES", - "ES", - "ES", - "approx", - "approx", - "approx", - "num", - "num", - "num" - ], - [ - "1250", - "60", - "600", - "1250", - "600", - "6000", - "1000", - "10000", - "5000" - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 5, - 5, - 5 - ], - [ - "4.44e+05", - "4.44e+05", - "4.44e+05", - "4.01e+05", - "4.02e+05", - "3.92e+05", - "nan", - "nan", - "nan" - ], - [ - "5.11e+05", - "5.11e+05", - "5.11e+05", - "4.75e+05", - "4.75e+05", - "4.75e+05", - "nan", - "nan", - "nan" - ], - [ - "0.499", - "0.499", - "0.499", - "0.499", - "0.499", - "0.499", - "nan", - "nan", - "nan" - ], - [ - "20.2", - "1.41", - "9.61", - "0.129", - "0.0686", - "0.806", - "nan", - "nan", - "nan" - ] - ] - }, - "header": { - "align": "center", - "fill": { - "color": "lightgrey" - }, - "font": { - "size": 13 - }, - "values": [ - "Algorithmus", - "Parameter", - "NaN", - "dAlpha0 [\"]", - "dAlpha1 [\"]", - "dStrecke [m]", - "time [s]" - ] - }, - "type": "table" - } - ], - "layout": { - "template": { - "data": { - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "contour" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermap" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0.0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1.0, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0.0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1.0, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "margin": { - "l": 20, - "r": 20, - "t": 60, - "b": 20 - }, - "title": { - "text": "Karney - Gruppe b_short - GHA2" - }, - "width": 800, - "height": 280 - }, - "config": { - "plotlyServerURL": "https://plot.ly" - } - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "data": [ - { - "cells": { - "align": "center", - "values": [ - [ - "ES", - "ES", - "ES", - "ana", - "ana", - "ana", - "ana", - "ana", - "ana", - "approx", - "approx", - "approx", - "num", - "num", - "num" - ], - [ - "1250", - "60", - "600", - "20_16", - "20_64", - "20_8", - "60_16", - "60_64", - "60_8", - "1250", - "30000", - "6000", - "1000", - "10000", - "50000" - ], - [ - 0, - 0, - 0, - 0, - 0, - 4, - 0, - 0, - 2, - 0, - 0, 0, 0, 0, @@ -8509,70 +742,70 @@ [ "5.14e+05", "3.68e+05", - "5.11e+05", - "4.5e+05", - "4.5e+05", - "2.9e+05", - "4.5e+05", - "4.5e+05", - "2.9e+05", - "3.96e+05", - "3.04e+05", - "4.5e+05", - "4.5e+05", - "4.5e+05", - "4.5e+05" + "4.65e+05", + "5.6e+05", + "5.6e+05", + "nan", + "5.6e+05", + "5.6e+05", + "5.6e+05", + "5.38e+05", + "5.38e+05", + "5.38e+05", + "5.12e+05", + "5.12e+05", + "5.12e+05" ], [ "4.98e+05", - "1.38e+05", + "1.85e+05", "4.87e+05", - "5.04e+05", - "5.04e+05", - "5.04e+05", - "5.04e+05", - "5.04e+05", - "5.04e+05", - "5.82e+05", - "5.87e+05", - "5.75e+05", - "5.04e+05", - "5.04e+05", - "5.04e+05" + "3.09e+05", + "3.09e+05", + "nan", + "3.09e+05", + "3.09e+05", + "3.09e+05", + "3.08e+05", + "3.08e+05", + "3.08e+05", + "1.81e+05", + "1.81e+05", + "1.81e+05" ], [ - "3.17e+05", - "1.34e+05", - "3.16e+05", - "2.6e+05", - "2.6e+05", - "1.26e+05", - "2.6e+05", - "2.6e+05", - "1.26e+05", - "2.64e+05", - "2.79e+05", - "2.58e+05", - "2.79e+05", - "2.79e+05", - "2.79e+05" + "2.55e+05", + "8.91e+04", + "2.63e+05", + "2.3e+05", + "2.3e+05", + "nan", + "2.3e+05", + "2.3e+05", + "2.3e+05", + "2.46e+05", + "2.46e+05", + "2.46e+05", + "5.59e+04", + "5.59e+04", + "5.59e+04" ], [ - "75", - "5.56", - "33", - "0.0591", - "0.236", - "0.0295", - "1.06", - "4.01", - "0.548", - "1.7", - "40.3", - "9.58", - "0.0596", - "0.424", - "1.93" + "75.1", + "7.29", + "48.6", + "0.0607", + "0.284", + "nan", + "0.971", + "4.19", + "0.364", + "2.28", + "50.7", + "10.2", + "0.21", + "1.23", + "5.97" ] ] }, @@ -9477,50 +1710,50 @@ 0, 0, 0, - 5, - 5, - 5 + 2, + 2, + 2 ], [ - "3.4e+05", - "3.4e+05", - "3.4e+05", - "3.64e+05", - "3.64e+05", - "3.64e+05", + "3.24e+05", + "3.24e+05", + "3.24e+05", + "3.1e+05", + "3.1e+05", + "3.1e+05", "nan", "nan", "nan" ], [ - "3.24e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", + "1.08e+04", + "1.09e+04", + "1.08e+04", + "534", + "416", + "2.6e+03", "nan", "nan", "nan" ], [ - "1.19", - "1.19", - "1.19", - "1.19", - "1.19", - "1.19", + "1.06e-06", + "3.68e-05", + "6.17e-07", + "2.31e-06", + "1.83e-06", + "3.84e-06", "nan", "nan", "nan" ], [ - "74.3", - "4.43", - "38.5", - "0.402", - "0.179", - "1.44", + "57", + "4.25", + "30", + "0.348", + "0.123", + "2.22", "nan", "nan", "nan" @@ -10439,7 +2672,7 @@ 0, 0, 0, - 0, + 1, 0, 0, 0, @@ -10451,72 +2684,72 @@ 0 ], [ - "1.15e+05", - "3.2e+05", - "6.45e+05", - "5.54e+05", - "5.54e+05", - "5.54e+05", - "5.54e+05", - "5.54e+05", - "5.54e+05", - "6.45e+05", - "6.48e+05", - "6.48e+05", - "6.48e+05", - "6.48e+05", - "6.48e+05" + "6.58e+04", + "4.05e+04", + "1.88e+05", + "3.63e+05", + "3.63e+05", + "4.58e-11", + "3.63e+05", + "3.63e+05", + "3.63e+05", + "4.5e+05", + "4.5e+05", + "4.5e+05", + "5.03e+04", + "5.03e+04", + "5.03e+04" ], [ "2.37e+05", - "1.85e+05", - "2.87e+05", - "6.28e+05", - "6.28e+05", - "6.28e+05", - "6.28e+05", - "6.28e+05", - "6.28e+05", - "6.18e+05", - "6.18e+05", - "6.18e+05", - "5.95e+05", - "5.95e+05", - "5.95e+05" + "2.06e+04", + "1.79e+05", + "4.18e+05", + "4.18e+05", + "0", + "4.18e+05", + "4.18e+05", + "4.18e+05", + "4.29e+05", + "4.29e+05", + "4.29e+05", + "2.53e+04", + "2.53e+04", + "2.53e+04" ], [ "3.08e+05", - "8.91e+04", - "2.63e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", - "2.25e+05", - "2.24e+05", - "2.24e+05", - "1.14e+05", - "1.14e+05", - "1.14e+05" + "956", + "1.91e+05", + "2.15e+05", + "2.15e+05", + "2.72e-10", + "2.15e+05", + "2.15e+05", + "2.15e+05", + "1.56e+05", + "1.56e+05", + "1.56e+05", + "880", + "880", + "880" ], [ - "35.4", - "2.18", - "18.2", - "0.0291", - "0.117", - "0.0149", - "0.491", + "44.2", "2.04", - "0.248", - "0.798", - "18.7", - "3.73", - "0.0504", - "0.489", - "1.99" + "30.2", + "0.0244", + "0.0821", + "0.00407", + "0.444", + "1.11", + "0.151", + "1.61", + "38.7", + "7.46", + "0.0788", + "0.501", + "2.43" ] ] }, @@ -11421,53 +3654,53 @@ 0, 0, 0, - 4, - 4, - 4 + 1, + 1, + 1 ], [ - "6.27e+05", - "6.27e+05", - "6.27e+05", - "6.25e+05", - "6.25e+05", - "6.25e+05", + "4.71e+05", + "4.7e+05", + "4.71e+05", + "5.52e+05", + "5.52e+05", + "5.52e+05", "0", "0", "0" ], [ - "2.71e+05", - "2.72e+05", - "2.71e+05", - "3.24e+05", - "3.24e+05", - "3.24e+05", - "1.83e-10", - "1.83e-10", - "1.83e-10" + "8.3e+04", + "8.32e+04", + "8.3e+04", + "4.91e+03", + "4.8e+03", + "5.73e+03", + "1.5e-10", + "1.5e-10", + "1.5e-10" ], [ - "1.54", - "1.54", - "1.54", - "1.27", - "1.27", - "1.27", + "0.000158", + "0.000125", + "0.000158", + "0.000271", + "0.000268", + "0.000527", "6.18e-16", "2.57e-14", "2.57e-14" ], [ - "66.5", - "2.88", - "33.9", - "0.185", - "0.0905", - "1.3", - "0.352", - "3.11", - "1.55" + "27.5", + "1.9", + "14.3", + "0.11", + "0.0543", + "0.92", + "2.59", + "10.1", + "5.59" ] ] }, @@ -12381,12 +4614,12 @@ 0, 0, 0, - 1, - 1, - 1, 0, - 1, - 1, + 0, + 0, + 0, + 0, + 0, 0, 0, 0, @@ -12395,72 +4628,72 @@ 0 ], [ - "27.6", - "803", - "166", - "nan", - "nan", - "nan", + "41", + "1.66e+03", + "198", + "77.6", "24.5", - "nan", - "nan", - "159", - "4.55e+03", - "979", - "567", - "567", - "567" + "1.07e+03", + "6.48e+05", + "24.5", + "77.6", + "77", + "1.11e+03", + "221", + "352", + "352", + "352" ], [ - "124", - "2e+03", - "193", - "nan", - "nan", - "nan", + "115", + "1.44e+03", + "125", + "54.8", "17.3", - "nan", - "nan", - "32", - "966", - "199", - "262", - "262", - "262" + "21.9", + "54.8", + "17.3", + "54.8", + "61.2", + "640", + "127", + "223", + "223", + "223" ], [ - "8.93e+04", - "86.1", - "5.55e+04", - "nan", - "nan", - "nan", - "nan", - "nan", - "2.97e+05", + "1.33e+05", + "319", + "8.53e+04", + "2.54e+05", + "2.54e+05", + "2.54e+05", + "2.54e+05", + "2.54e+05", + "2.54e+05", + "2.81e+05", "3.24e+05", - "3.21e+05", - "3.23e+05", - "2.62e+05", - "2.62e+05", - "2.62e+05" + "3.24e+05", + "5.63e+04", + "5.63e+04", + "5.63e+04" ], [ - "14.1", - "0.996", - "7.5", - "0.015", - "nan", - "nan", - "0.255", - "nan", - "0.126", - "0.354", - "8.74", - "1.7", - "0.039", - "0.39", - "1.93" + "50.2", + "3.53", + "27.2", + "0.0334", + "0.174", + "0.0149", + "0.542", + "2.33", + "0.318", + "1.79", + "37.4", + "7.49", + "0.0469", + "0.518", + "2.33" ] ] }, @@ -13312,7 +5545,7 @@ "b": 20 }, "title": { - "text": "Karney - Gruppe e_short - GHA1" + "text": "Karney - Gruppe de_long - GHA1" }, "width": 800, "height": 280 @@ -13365,50 +5598,50 @@ 0, 0, 0, - 1, - 1, - 1 + 2, + 2, + 2 ], [ - "1.89e+05", - "1.9e+05", - "1.89e+05", - "1.66e+05", - "1.36e+05", - "4.24e+05", + "9.46e+04", + "9.47e+04", + "9.46e+04", + "5.24e+03", + "5.24e+03", + "2.33e+04", "nan", "nan", "nan" ], [ - "3.48e+05", - "3.48e+05", - "3.48e+05", - "3.23e+05", - "3.23e+05", - "3.23e+05", + "5.7e+05", + "5.7e+05", + "5.7e+05", + "5.56e+05", + "5.56e+05", + "5.56e+05", "nan", "nan", "nan" ], [ - "1.11", - "1.11", - "1.11", - "1.11", - "1.11", - "1.11", + "3.45e-05", + "1.9e-05", + "3.44e-05", + "0.000811", + "0.000811", + "0.000813", "nan", "nan", "nan" ], [ - "36.4", - "2.72", - "18.9", - "0.177", - "0.0886", - "0.686", + "56.1", + "3.69", + "27.9", + "0.222", + "0.119", + "1.05", "nan", "nan", "nan" @@ -14263,7 +6496,1951 @@ "b": 20 }, "title": { - "text": "Karney - Gruppe e_short - GHA2" + "text": "Karney - Gruppe de_long - GHA2" + }, + "width": 800, + "height": 280 + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + } + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "cells": { + "align": "center", + "values": [ + [ + "ES", + "ES", + "ES", + "ana", + "ana", + "ana", + "ana", + "ana", + "ana", + "approx", + "approx", + "approx", + "num", + "num", + "num" + ], + [ + "1250", + "60", + "600", + "20_16", + "20_64", + "20_8", + "60_16", + "60_64", + "60_8", + "1250", + "30000", + "6000", + "1000", + "10000", + "50000" + ], + [ + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + "5.13e+05", + "2.72e+04", + "5.11e+05", + "0.488", + "0.00488", + "nan", + "0.00488", + "0.00488", + "48.8", + "5.47e+05", + "6.48e+05", + "6.27e+05", + "0.488", + "0.0071", + "0.0488" + ], + [ + "2.66e+05", + "4.87e+04", + "2.66e+05", + "3.64e-06", + "2.75e-10", + "nan", + "2.75e-10", + "2.75e-10", + "0.00781", + "2.67e+05", + "2.2e+05", + "4e+05", + "0.164", + "0.164", + "0.164" + ], + [ + "3.17e+05", + "1.29e+05", + "3.16e+05", + "0.00794", + "0.00794", + "nan", + "0.00794", + "0.00794", + "0.000794", + "3.24e+05", + "8.22e+04", + "2.14e+05", + "0.794", + "0.00794", + "0.0794" + ], + [ + "126", + "9.55", + "56", + "0.0917", + "0.498", + "nan", + "2.03", + "5", + "0.571", + "3.38", + "94.2", + "16.3", + "0.0639", + "0.523", + "3.01" + ] + ] + }, + "header": { + "align": "center", + "fill": { + "color": "lightgrey" + }, + "font": { + "size": 13 + }, + "values": [ + "Algorithmus", + "Parameter", + "NaN", + "dBeta [\"]", + "dLambda [\"]", + "dAlpha1 [\"]", + "time [s]" + ] + }, + "type": "table" + } + ], + "layout": { + "template": { + "data": { + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "bar": [ + { + "error_x": { + "color": "rgb(36,36,36)" + }, + "error_y": { + "color": "rgb(36,36,36)" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "rgb(36,36,36)", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "rgb(36,36,36)" + }, + "baxis": { + "endlinecolor": "rgb(36,36,36)", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "rgb(36,36,36)" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "type": "choropleth" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "type": "contourcarpet" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "contour" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "heatmap" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "histogram2dcontour" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "histogram2d" + } + ], + "histogram": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.6 + } + }, + "type": "histogram" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattermapbox" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattermap" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scatterpolargl" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scatterpolar" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "rgb(237,237,237)" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "rgb(217,217,217)" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "colorscale": { + "diverging": [ + [ + 0.0, + "rgb(103,0,31)" + ], + [ + 0.1, + "rgb(178,24,43)" + ], + [ + 0.2, + "rgb(214,96,77)" + ], + [ + 0.3, + "rgb(244,165,130)" + ], + [ + 0.4, + "rgb(253,219,199)" + ], + [ + 0.5, + "rgb(247,247,247)" + ], + [ + 0.6, + "rgb(209,229,240)" + ], + [ + 0.7, + "rgb(146,197,222)" + ], + [ + 0.8, + "rgb(67,147,195)" + ], + [ + 0.9, + "rgb(33,102,172)" + ], + [ + 1.0, + "rgb(5,48,97)" + ] + ], + "sequential": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ] + }, + "colorway": [ + "#1F77B4", + "#FF7F0E", + "#2CA02C", + "#D62728", + "#9467BD", + "#8C564B", + "#E377C2", + "#7F7F7F", + "#BCBD22", + "#17BECF" + ], + "font": { + "color": "rgb(36,36,36)" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "rgb(232,232,232)", + "gridwidth": 2, + "linecolor": "rgb(36,36,36)", + "showbackground": true, + "showgrid": false, + "showline": true, + "ticks": "outside", + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "rgb(232,232,232)", + "gridwidth": 2, + "linecolor": "rgb(36,36,36)", + "showbackground": true, + "showgrid": false, + "showline": true, + "ticks": "outside", + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "rgb(232,232,232)", + "gridwidth": 2, + "linecolor": "rgb(36,36,36)", + "showbackground": true, + "showgrid": false, + "showline": true, + "ticks": "outside", + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + } + }, + "shapedefaults": { + "fillcolor": "black", + "line": { + "width": 0 + }, + "opacity": 0.3 + }, + "ternary": { + "aaxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + }, + "baxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside", + "title": { + "standoff": 15 + }, + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + }, + "yaxis": { + "automargin": true, + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside", + "title": { + "standoff": 15 + }, + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + } + } + }, + "margin": { + "l": 20, + "r": 20, + "t": 60, + "b": 20 + }, + "title": { + "text": "Karney - Gruppe de_short - GHA1" + }, + "width": 800, + "height": 280 + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + } + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "cells": { + "align": "center", + "values": [ + [ + "ES", + "ES", + "ES", + "approx", + "approx", + "approx", + "num", + "num", + "num" + ], + [ + "1250", + "60", + "600", + "1250", + "600", + "6000", + "1000", + "10000", + "5000" + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 2, + 2 + ], + [ + "0.0265", + "0.0217", + "0.0256", + "3.65e-06", + "1.75e-06", + "1.76e-05", + "nan", + "nan", + "nan" + ], + [ + "0.0119", + "0.0109", + "0.0117", + "0.00794", + "0.00794", + "0.00793", + "nan", + "nan", + "nan" + ], + [ + "1.19e-07", + "3.4e-05", + "4.77e-07", + "1.65e-07", + "6.59e-07", + "1.03e-08", + "nan", + "nan", + "nan" + ], + [ + "116", + "7.11", + "60", + "0.653", + "0.282", + "2.19", + "nan", + "nan", + "nan" + ] + ] + }, + "header": { + "align": "center", + "fill": { + "color": "lightgrey" + }, + "font": { + "size": 13 + }, + "values": [ + "Algorithmus", + "Parameter", + "NaN", + "dAlpha0 [\"]", + "dAlpha1 [\"]", + "dStrecke [m]", + "time [s]" + ] + }, + "type": "table" + } + ], + "layout": { + "template": { + "data": { + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "bar": [ + { + "error_x": { + "color": "rgb(36,36,36)" + }, + "error_y": { + "color": "rgb(36,36,36)" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "rgb(36,36,36)", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "rgb(36,36,36)" + }, + "baxis": { + "endlinecolor": "rgb(36,36,36)", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "rgb(36,36,36)" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "type": "choropleth" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "type": "contourcarpet" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "contour" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "heatmap" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "histogram2dcontour" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "histogram2d" + } + ], + "histogram": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.6 + } + }, + "type": "histogram" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattermapbox" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scattermap" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scatterpolargl" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scatterpolar" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + }, + "colorscale": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "rgb(237,237,237)" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "rgb(217,217,217)" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 1, + "tickcolor": "rgb(36,36,36)", + "ticks": "outside" + } + }, + "colorscale": { + "diverging": [ + [ + 0.0, + "rgb(103,0,31)" + ], + [ + 0.1, + "rgb(178,24,43)" + ], + [ + 0.2, + "rgb(214,96,77)" + ], + [ + 0.3, + "rgb(244,165,130)" + ], + [ + 0.4, + "rgb(253,219,199)" + ], + [ + 0.5, + "rgb(247,247,247)" + ], + [ + 0.6, + "rgb(209,229,240)" + ], + [ + 0.7, + "rgb(146,197,222)" + ], + [ + 0.8, + "rgb(67,147,195)" + ], + [ + 0.9, + "rgb(33,102,172)" + ], + [ + 1.0, + "rgb(5,48,97)" + ] + ], + "sequential": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#440154" + ], + [ + 0.1111111111111111, + "#482878" + ], + [ + 0.2222222222222222, + "#3e4989" + ], + [ + 0.3333333333333333, + "#31688e" + ], + [ + 0.4444444444444444, + "#26828e" + ], + [ + 0.5555555555555556, + "#1f9e89" + ], + [ + 0.6666666666666666, + "#35b779" + ], + [ + 0.7777777777777778, + "#6ece58" + ], + [ + 0.8888888888888888, + "#b5de2b" + ], + [ + 1.0, + "#fde725" + ] + ] + }, + "colorway": [ + "#1F77B4", + "#FF7F0E", + "#2CA02C", + "#D62728", + "#9467BD", + "#8C564B", + "#E377C2", + "#7F7F7F", + "#BCBD22", + "#17BECF" + ], + "font": { + "color": "rgb(36,36,36)" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "rgb(232,232,232)", + "gridwidth": 2, + "linecolor": "rgb(36,36,36)", + "showbackground": true, + "showgrid": false, + "showline": true, + "ticks": "outside", + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "rgb(232,232,232)", + "gridwidth": 2, + "linecolor": "rgb(36,36,36)", + "showbackground": true, + "showgrid": false, + "showline": true, + "ticks": "outside", + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "rgb(232,232,232)", + "gridwidth": 2, + "linecolor": "rgb(36,36,36)", + "showbackground": true, + "showgrid": false, + "showline": true, + "ticks": "outside", + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + } + }, + "shapedefaults": { + "fillcolor": "black", + "line": { + "width": 0 + }, + "opacity": 0.3 + }, + "ternary": { + "aaxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + }, + "baxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside", + "title": { + "standoff": 15 + }, + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + }, + "yaxis": { + "automargin": true, + "gridcolor": "rgb(232,232,232)", + "linecolor": "rgb(36,36,36)", + "showgrid": false, + "showline": true, + "ticks": "outside", + "title": { + "standoff": 15 + }, + "zeroline": false, + "zerolinecolor": "rgb(36,36,36)" + } + } + }, + "margin": { + "l": 20, + "r": 20, + "t": 60, + "b": 20 + }, + "title": { + "text": "Karney - Gruppe de_short - GHA2" }, "width": 800, "height": 280 @@ -14280,7 +8457,523 @@ } } ], - "execution_count": 55 + "execution_count": 87 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-10T17:16:02.180630Z", + "start_time": "2026-02-10T17:16:01.895646Z" + } + }, + "cell_type": "code", + "source": [ + "# Latex-Tabelle ausgeben\n", + "\n", + "def to_latex_sci(x, decimals=3, exp_digits=2):\n", + " \"\"\"\n", + " Immer wissenschaftliche Schreibweise in LaTeX mit:\n", + " - fester Mantisse (z.B. 1.234)\n", + " - Exponent immer mit Vorzeichen (+/-)\n", + " - Exponent immer feste Stellenzahl (z.B. +03, -01)\n", + "\n", + " Beispiel:\n", + " 0.216 -> $2.160\\\\cdot10^{-01}$\n", + " 12.3 -> $1.230\\\\cdot10^{+01}$\n", + " \"\"\"\n", + "\n", + " if x is None:\n", + " return \"nan\"\n", + " try:\n", + " xf = float(x)\n", + " except Exception:\n", + " return str(x)\n", + "\n", + " if math.isnan(xf):\n", + " return \"nan\"\n", + "\n", + " if xf == 0.0:\n", + " exp_fmt = f\"+{0:0{exp_digits}d}\"\n", + " mant = f\"{0:.{decimals}f}\"\n", + " return f\"${mant}\\\\cdot10^{{{exp_fmt}}}$\"\n", + "\n", + " s = f\"{xf:.{decimals}e}\" # z.B. 2.160e-01\n", + " mant, exp = s.split(\"e\")\n", + " exp = int(exp)\n", + "\n", + " # Exponent formatieren: Vorzeichen + feste Länge\n", + " sign = \"+\" if exp >= 0 else \"-\"\n", + " exp_abs = abs(exp)\n", + " exp_fmt = f\"{sign}{exp_abs:0{exp_digits}d}\"\n", + "\n", + " return f\"${mant}\\\\cdot10^{{{exp_fmt}}}$\"\n", + "\n", + "\n", + "def nan_count_for_algorithm(results, example_keys, algorithm):\n", + " vals = []\n", + " for k in example_keys:\n", + " vals.append(results[k][algorithm][0])\n", + " return int(np.sum(np.isnan(np.array(vals, dtype=float))))\n", + "\n", + "\n", + "def max_abs_metric(results, example_keys, algorithm, metric_index, is_angle=False, wu=None, mask=None):\n", + " \"\"\"\n", + " Echter Max(|...|) über alle example_keys.\n", + " Wenn is_angle=True: Werte werden als rad angenommen und in Bogensekunden umgerechnet.\n", + " \"\"\"\n", + " arr = []\n", + " for i, k in enumerate(example_keys):\n", + " if mask is not None and not mask[i]:\n", + " continue\n", + " arr.append(results[k][algorithm][metric_index])\n", + " arr = np.array(arr, dtype=float)\n", + "\n", + " if arr.size == 0:\n", + " return np.nan\n", + " m = np.nanmax(np.abs(arr))\n", + " if is_angle:\n", + " if wu is None:\n", + " raise ValueError(\"wu wird benötigt für rad2deg, wenn is_angle=True\")\n", + " m = wu.rad2deg(m)\n", + " return m\n", + "\n", + "\n", + "def parse_variant_params(algorithm_key):\n", + " \"\"\"\n", + " Erwartet: GHA1_ana_20_4 -> variant='ana', params='20_4'\n", + " Gibt zusätzlich eine hübsche Parameterdarstellung zurück.\n", + " \"\"\"\n", + " ghaNr, variant, params = algorithm_key.split(\"_\", 2)\n", + "\n", + " # Standard: params 그대로\n", + " pretty = params\n", + "\n", + " # Für deine Tabellen: ana hat z.B. '20_4' -> '4, 20' (Segmentgröße, Ordnung)\n", + " if variant == \"ana\":\n", + " # bei dir: params = '20_4' oder '50_8' -> Ordnung_Segment\n", + " # du willst aber: Segment, Ordnung -> '4, 20'\n", + " a, b = params.split(\"_\")\n", + " order = a\n", + " seg = b\n", + " pretty = f\"{seg}, {order}\"\n", + " else:\n", + " # num: '2000' bleibt '2000'\n", + " # approx/ES: oft eine Zahl mit Punkt/Unterstrich? -> 그대로\n", + " pretty = params.replace(\"_\", \", \")\n", + "\n", + " return variant, params, pretty\n", + "\n", + "\n", + "def build_latex_table_from_results(\n", + " results,\n", + " gha_prefix=\"GHA1\",\n", + " example_keys=None,\n", + " caption=\"\",\n", + " label=\"tab:results_algorithms\",\n", + " include_nan_col=False,\n", + " wu=None\n", + "):\n", + " \"\"\"\n", + " Erzeugt LaTeX Tabular (inkl. table-Umgebung) im gewünschten Stil.\n", + " \"\"\"\n", + "\n", + " if example_keys is None:\n", + " example_keys = list(results.keys())\n", + "\n", + " # Metriken & Winkel-Maske wie bei dir\n", + " if gha_prefix == \"GHA1\":\n", + " metric_headers = [\n", + " r\"$\\max(|\\Delta \\beta|)$ [$''$]\",\n", + " r\"$\\max(|\\Delta \\lambda|)$ [$''$]\",\n", + " r\"$\\max(|\\Delta \\alpha_1|)$ [$''$]\",\n", + " r\"time [s]\"\n", + " ]\n", + " angle_mask = [True, True, True, False]\n", + " else:\n", + " metric_headers = [\n", + " r\"$\\max(|\\Delta \\alpha_0|)$ [$''$]\",\n", + " r\"$\\max(|\\Delta \\alpha_1|)$ [$''$]\",\n", + " r\"$\\max(|\\Delta s|)$ [m]\",\n", + " r\"time [s]\"\n", + " ]\n", + " angle_mask = [True, True, False, False]\n", + "\n", + " # Alle Algorithmen sammeln\n", + " algorithms = sorted({\n", + " alg for k in example_keys\n", + " for alg in results[k].keys()\n", + " if alg.startswith(gha_prefix)\n", + " })\n", + "\n", + " # Gruppieren nach variant (ana, num, approx, ES, ...)\n", + " grouped = defaultdict(list)\n", + " for alg in algorithms:\n", + " variant, raw_params, pretty = parse_variant_params(alg)\n", + " grouped[variant].append((alg, pretty))\n", + "\n", + " # gewünschte Reihenfolge (falls vorhanden)\n", + " variant_order = [\"ana\", \"num\", \"approx\", \"ES\"]\n", + " ordered_variants = [v for v in variant_order if v in grouped] + [v for v in grouped.keys() if v not in variant_order]\n", + "\n", + " # LaTeX Header\n", + " cols = 2 + (1 if include_nan_col else 0) + len(metric_headers)\n", + " colspec = \"|\" + \"|\".join([\"c\"] * cols) + \"|\"\n", + "\n", + " header_cells = [\"Methode\", \"Parameter\"]\n", + " if include_nan_col:\n", + " header_cells.append(\"NaN\")\n", + " header_cells += metric_headers\n", + "\n", + " lines = []\n", + " lines.append(r\"\\begin{table}[H]\")\n", + " lines.append(r\"\\centering\")\n", + " if caption:\n", + " lines.append(rf\"\\caption{{{caption}}}\")\n", + " lines.append(rf\"\\label{{{label}}}\")\n", + " lines.append(rf\"\\begin{{tabular}}{{{colspec}}}\")\n", + " lines.append(r\"\\hline\")\n", + " lines.append(\" & \".join(header_cells) + r\" \\\\\")\n", + " lines.append(r\"\\Xhline{1.5pt}\")\n", + "\n", + " # Zeilen bauen\n", + " for variant in ordered_variants:\n", + " rows = grouped[variant]\n", + " # für stable output: sort by pretty param (numerisch)\n", + " # (du kannst das ändern, wenn du eine andere Reihenfolge willst)\n", + " def sort_key(t):\n", + " _, pretty = t\n", + " # versuche numerisch zu sortieren\n", + " try:\n", + " parts = [float(p.strip()) for p in pretty.split(\",\")]\n", + " return parts\n", + " except Exception:\n", + " return [pretty]\n", + " rows = sorted(rows, key=sort_key)\n", + "\n", + " multi_n = len(rows)\n", + " method_name = {\n", + " \"ana\": \"analytisch\",\n", + " \"num\": \"numerisch\",\n", + " \"approx\": \"approximiert\"\n", + " }.get(variant, variant)\n", + "\n", + " for idx, (alg, pretty_param) in enumerate(rows):\n", + " row_cells = []\n", + "\n", + " if multi_n > 1:\n", + " if idx == 0:\n", + " row_cells.append(rf\"\\multirow{{{multi_n}}}{{*}}{{{method_name}}}\")\n", + " else:\n", + " row_cells.append(\"\") # Multirow fortsetzen\n", + " else:\n", + " row_cells.append(method_name)\n", + "\n", + " row_cells.append(pretty_param)\n", + "\n", + " if include_nan_col:\n", + " nans = nan_count_for_algorithm(results, example_keys, alg)\n", + " row_cells.append(str(nans))\n", + "\n", + " # Metriken\n", + " for mi in range(len(metric_headers)):\n", + " other_GL_mask = None\n", + " if gha_prefix == \"GHA2\" and variant == \"num\":\n", + " other_GL_mask = [\n", + " (\n", + " np.isfinite(results[k][alg][2]) and\n", + " abs(results[k][alg][2]) <= 10.0\n", + " )\n", + " for k in example_keys\n", + " ]\n", + " if other_GL_mask is not None:\n", + " print(f\"{alg}: {other_GL_mask.count(False)} falsche Linien\")\n", + " m = max_abs_metric(results, example_keys, alg, mi, is_angle=angle_mask[mi], wu=wu, mask=other_GL_mask)\n", + " if mi == 3:\n", + " row_cells.append(f\"${m:.2f}$\")\n", + " else:\n", + " row_cells.append(to_latex_sci(m))\n", + "\n", + " # Zeile + Linienlogik wie in deinem Beispiel\n", + " latex_row = \" & \".join(row_cells) + r\" \\\\\"\n", + "\n", + " # nach letzter Zeile einer Methode eine \\hline (wie bei dir)\n", + " if idx == multi_n - 1:\n", + " latex_row += r\"\\hline\"\n", + " lines.append(latex_row)\n", + "\n", + " lines.append(r\"\\end{tabular}\")\n", + " lines.append(r\"\\end{table}\")\n", + " lines.append(r\"\\noindent\")\n", + "\n", + " return \"\\n\".join(lines)" + ], + "id": "73a47c43591aeff9", + "outputs": [], + "execution_count": 29 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-10T17:16:06.651314Z", + "start_time": "2026-02-10T17:16:06.413390Z" + } + }, + "cell_type": "code", + "source": [ + "# example_keys = list(key for i, key in enumerate(results.keys()))\n", + "# group = None\n", + "group = \"de_short\"\n", + "example_keys = list(key for i, key in enumerate(results.keys()) if group_indices[i] == group)\n", + "gha = \"GHA1\"\n", + "latex = build_latex_table_from_results(\n", + " results,\n", + " gha_prefix=gha,\n", + " example_keys=example_keys,\n", + " caption=f\"Ergebnisse der Lösungsmethoden der {gha[3]}. GHA ({test})\" if group is None else f\"Ergebnisse der Lösungsmethoden der {gha[3]}. GHA ({test}, Gruppe {group})\",\n", + " label=f\"tab:results_{test}_{gha}\" if group is None else f\"tab:results_{test}_{gha}_{group}\",\n", + " include_nan_col=True,\n", + " wu=wu\n", + ")\n", + "print(latex)" + ], + "id": "ee6883460c1b9286", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\\begin{table}[H]\n", + "\\centering\n", + "\\caption{Ergebnisse der Lösungsmethoden der 1. GHA (Karney, Gruppe de_short)}\n", + "\\label{tab:results_Karney_GHA1_de_short}\n", + "\\begin{tabular}{|c|c|c|c|c|c|c|}\n", + "\\hline\n", + "Methode & Parameter & NaN & $\\max(|\\Delta \\beta|)$ [$''$] & $\\max(|\\Delta \\lambda|)$ [$''$] & $\\max(|\\Delta \\alpha_1|)$ [$''$] & time [s] \\\\\n", + "\\Xhline{1.5pt}\n", + "\\multirow{6}{*}{analytisch} & 8, 20 & 1 & $2.972\\cdot10^{-01}$ & $6.090\\cdot10^{-03}$ & $7.050\\cdot10^{+01}$ & $0.01$ \\\\\n", + " & 8, 60 & 0 & $3.089\\cdot10^{-02}$ & $1.524\\cdot10^{-02}$ & $7.043\\cdot10^{+01}$ & $0.32$ \\\\\n", + " & 16, 20 & 0 & $2.155\\cdot10^{-02}$ & $1.524\\cdot10^{-02}$ & $7.043\\cdot10^{+01}$ & $0.04$ \\\\\n", + " & 16, 60 & 0 & $1.800\\cdot10^{+02}$ & $1.524\\cdot10^{-02}$ & $7.043\\cdot10^{+01}$ & $0.55$ \\\\\n", + " & 64, 20 & 1 & $6.814\\cdot10^{-03}$ & $4.818\\cdot10^{-03}$ & $7.043\\cdot10^{+01}$ & $0.17$ \\\\\n", + " & 64, 60 & 1 & $6.814\\cdot10^{-03}$ & $4.818\\cdot10^{-03}$ & $7.043\\cdot10^{+01}$ & $2.33$ \\\\\\hline\n", + "\\multirow{3}{*}{numerisch} & 1000 & 0 & $2.237\\cdot10^{-01}$ & $1.627\\cdot10^{-01}$ & $1.691\\cdot10^{+01}$ & $0.08$ \\\\\n", + " & 10000 & 0 & $9.787\\cdot10^{-02}$ & $6.191\\cdot10^{-02}$ & $1.564\\cdot10^{+01}$ & $0.52$ \\\\\n", + " & 50000 & 0 & $9.787\\cdot10^{-02}$ & $6.191\\cdot10^{-02}$ & $1.564\\cdot10^{+01}$ & $2.33$ \\\\\\hline\n", + "\\multirow{3}{*}{approximiert} & 1250 & 0 & $1.530\\cdot10^{-01}$ & $5.609\\cdot10^{-02}$ & $8.989\\cdot10^{+01}$ & $1.79$ \\\\\n", + " & 6000 & 0 & $7.636\\cdot10^{-01}$ & $2.849\\cdot10^{-01}$ & $8.997\\cdot10^{+01}$ & $7.49$ \\\\\n", + " & 30000 & 0 & $4.154\\cdot10^{+00}$ & $1.690\\cdot10^{+00}$ & $8.994\\cdot10^{+01}$ & $37.44$ \\\\\\hline\n", + "\\multirow{3}{*}{ES} & 60 & 0 & $4.614\\cdot10^{-01}$ & $5.219\\cdot10^{-01}$ & $8.858\\cdot10^{-02}$ & $3.53$ \\\\\n", + " & 600 & 0 & $5.494\\cdot10^{-02}$ & $5.796\\cdot10^{-02}$ & $2.369\\cdot10^{+01}$ & $27.16$ \\\\\n", + " & 1250 & 0 & $1.139\\cdot10^{-02}$ & $3.202\\cdot10^{-02}$ & $3.693\\cdot10^{+01}$ & $50.20$ \\\\\\hline\n", + "\\end{tabular}\n", + "\\end{table}\n", + "\\noindent\n" + ] + } + ], + "execution_count": 30 + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "@contextmanager\n", + "def suppress_print():\n", + " with open(os.devnull, 'w') as fnull:\n", + " with redirect_stdout(fnull), redirect_stderr(fnull):\n", + " yield" + ], + "id": "90f107a11ff0de7e", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "def build_examples(test):\n", + " if test == \"Karney\":\n", + " ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"KarneyTest2024\")\n", + " num = 5\n", + " seed = 42\n", + " groups = [\"a_short\", \"a_long\", \"b_short\", \"b_long\", \"c_short\", \"c_long\", \"de_short\", \"de_long\", \"e_short\", \"e_long\"]\n", + " group_indices = []\n", + " examples = []\n", + " for group in groups:\n", + " split = group.split(\"_\")\n", + " examples_group = get_examples_karney_gamma(split[0], num, seed, split[1])\n", + " examples.extend(examples_group)\n", + " group_indices.extend([group] * num)\n", + "\n", + " elif test == \"Panou\":\n", + " ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"BursaSima1980round\")\n", + " tables = get_tables_panou()\n", + " group_indices = []\n", + " examples = []\n", + " for i, table in enumerate(tables):\n", + " for example in table:\n", + " group_indices.append(i+1)\n", + " examples.append(example)\n", + " examples = examples[:14]\n", + " elif test == \"Random\":\n", + " ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"BursaSima1980round\")\n", + " examples = []\n", + " random.seed(42)\n", + " for _ in range(50):\n", + " beta0 = wu.deg2rad(random.randint(-90, 90))\n", + " lamb0 = wu.deg2rad(random.randint(-179, 180))\n", + " alpha0_ell = wu.deg2rad(random.randint(0, 359))\n", + " s = random.randint(10000, int(np.pi*ell.b))\n", + " examples.append([beta0, lamb0, alpha0_ell, s])\n", + " group_indices = None\n", + " return ell, examples, group_indices\n", + "test = \"Karney\"\n", + "# test = \"Panou\"\n", + "# test = \"Random\"\n", + "ell, examples, group_indices = build_examples(test)\n", + "pass" + ], + "id": "6770dbd57d475127", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "def save_results(test, results):\n", + " with open(f\"gha_results{test}.pkl\", \"wb\") as f:\n", + " pickle.dump(results, f)\n", + "# save_results(test, results)" + ], + "id": "74fbd4d33c288839", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "# dsPart = [60, 125, 600, 1250, 6000, 60000] entspricht bei der Erde ca. 100km, 50km, 10km, 5km, 1km, 100m\n", + "\n", + "steps_gha1_num = [1000, 10000, 50000]\n", + "maxM_gha1_ana = [20, 60]\n", + "parts_gha1_ana = [8, 16, 64]\n", + "dsPart_gha1_ES = [60, 600, 1250]\n", + "dsPart_gha1_approx = [1250, 6000, 30000]\n", + "\n", + "steps_gha2_num = [1000, 5000, 10000]\n", + "dsPart_gha2_ES = [60, 600, 1250]\n", + "dsPart_gha2_approx = [600, 1250, 6000]\n", + "\n", + "test = \"Karney\"\n", + "ell_karney, examples_karney, group_indices = build_examples(test)\n", + "results_karney = execute_results(test, ell_karney, examples_karney)\n", + "save_results(test, results_karney)" + ], + "id": "5d35a01ba8d6e2b1", + "outputs": [], + "execution_count": null + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-09T10:56:29.360372Z", + "start_time": "2026-02-09T10:56:29.108940Z" + } + }, + "cell_type": "code", + "source": [ + "test = \"Karney\"\n", + "with open(f\"gha_results{test}.pkl\", \"rb\") as f:\n", + " results = pickle.load(f)\n", + "\n", + "if test == \"Panou\":\n", + " del results[list(results.keys())[7]]" + ], + "id": "4c20a0579c0f7038", + "outputs": [], + "execution_count": 47 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-09T13:06:22.428549Z", + "start_time": "2026-02-09T13:06:22.088685Z" + } + }, + "cell_type": "code", + "source": [ + "# results nach Gruppe sortieren\n", + "metrics_gha1 = ['dBeta [\"]', 'dLambda [\"]', 'dAlpha1 [\"]', 'time [s]']\n", + "metrics_gha2 = ['dAlpha0 [\"]', 'dAlpha1 [\"]', 'dStrecke [m]', 'time [s]']\n", + "listed_results = {}\n", + "for example, example_metrics in results.items():\n", + " for method, method_metrics in example_metrics.items():\n", + " if \"GHA1\" in method:\n", + " if method not in listed_results.keys():\n", + " listed_results[method] = {metric: [] for metric in metrics_gha1}\n", + " for i, metric in enumerate(method_metrics):\n", + " if '[\"]' in metrics_gha1[i]:\n", + " metric = wu.rad2deg(metric)*3600\n", + " listed_results[method][metrics_gha1[i]].append(metric)\n", + " if \"GHA2\" in method:\n", + " if method not in listed_results.keys():\n", + " listed_results[method] = {metric: [] for metric in metrics_gha2}\n", + " for i, metric in enumerate(method_metrics):\n", + " if '[\"]' in metrics_gha2[i]:\n", + " metric = wu.rad2deg(metric)*3600\n", + " listed_results[method][metrics_gha2[i]].append(metric)\n", + " pass" + ], + "id": "2086b5bcd8416e33", + "outputs": [], + "execution_count": 58 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2026-02-09T10:56:32.604304Z", + "start_time": "2026-02-09T10:56:32.423267Z" + } + }, + "cell_type": "code", + "source": [ + "# group_indices Karney\n", + "group_indices = []\n", + "ell: EllipsoidTriaxial = EllipsoidTriaxial.init_name(\"KarneyTest2024\")\n", + "for example in results.keys():\n", + " long_short = 2\n", + " split = example.split(\",\")\n", + " beta0 = wu.deg2rad(float(split[0].split(\":\")[1]))\n", + " lamb0 = wu.deg2rad(float(split[1].split(\":\")[1]))\n", + " alpha0 = wu.deg2rad(float(split[2].split(\":\")[1]))\n", + " s = float(split[3].split(\":\")[1])\n", + " gamma = jacobi_konstante(beta0, lamb0, alpha0, ell)\n", + "\n", + " index = \"\"\n", + " if 1 >= gamma >= 0.01:\n", + " index = \"a\"\n", + " elif 0.01 > gamma > 1e-20:\n", + " index = \"b\"\n", + " elif abs(gamma) <= 1e-20:\n", + " index = \"c\"\n", + " elif -1e-20 > gamma > -1e-17:\n", + " index = \"d\"\n", + " elif -1e-17 >= gamma >= -1:\n", + " index = \"e\"\n", + "\n", + " if index != \"\":\n", + " if s < long_short:\n", + " index += \"_short\"\n", + " elif s >= long_short:\n", + " index += \"_long\"\n", + "\n", + " group_indices.append(index)" + ], + "id": "567b66ef21126628", + "outputs": [], + "execution_count": 49 }, { "metadata": { @@ -14534,84 +9227,6 @@ "id": "12591c3b707da905", "outputs": [], "execution_count": 45 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2026-02-09T10:54:49.489625Z", - "start_time": "2026-02-09T10:54:49.265934Z" - } - }, - "cell_type": "code", - "source": [ - "example_keys = list(key for i, key in enumerate(results.keys()))\n", - "group = None\n", - "# group = \"a\"\n", - "# example_keys = list(key for i, key in enumerate(results.keys()) if group_indices[i] == group)\n", - "gha = \"GHA2\"\n", - "latex = build_latex_table_from_results(\n", - " results,\n", - " gha_prefix=gha,\n", - " example_keys=example_keys,\n", - " caption=f\"Ergebnisse der Lösungsmethoden der {gha[3]}. GHA ({test})\" if group is None else f\"Ergebnisse der Lösungsmethoden der {gha[3]}. GHA ({test}, Gruppe {group})\",\n", - " label=f\"tab:results_{test}_{gha}\" if group is None else f\"tab:results_{test}_{gha}_{group}\",\n", - " include_nan_col=True,\n", - " wu=wu\n", - ")\n", - "print(latex)" - ], - "id": "44f20396e6c5493c", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GHA2_num_200: 22 falsche Linien\n", - "GHA2_num_200: 22 falsche Linien\n", - "GHA2_num_200: 22 falsche Linien\n", - "GHA2_num_200: 22 falsche Linien\n", - "GHA2_num_500: 21 falsche Linien\n", - "GHA2_num_500: 21 falsche Linien\n", - "GHA2_num_500: 21 falsche Linien\n", - "GHA2_num_500: 21 falsche Linien\n", - "GHA2_num_1000: 19 falsche Linien\n", - "GHA2_num_1000: 19 falsche Linien\n", - "GHA2_num_1000: 19 falsche Linien\n", - "GHA2_num_1000: 19 falsche Linien\n", - "GHA2_num_5000: 19 falsche Linien\n", - "GHA2_num_5000: 19 falsche Linien\n", - "GHA2_num_5000: 19 falsche Linien\n", - "GHA2_num_5000: 19 falsche Linien\n", - "GHA2_num_10000: 19 falsche Linien\n", - "GHA2_num_10000: 19 falsche Linien\n", - "GHA2_num_10000: 19 falsche Linien\n", - "GHA2_num_10000: 19 falsche Linien\n", - "\\begin{table}[H]\n", - "\\centering\n", - "\\caption{Ergebnisse der Lösungsmethoden der 2. GHA (Random)}\n", - "\\label{tab:results_Random_GHA2}\n", - "\\begin{tabular}{|c|c|c|c|c|c|c|}\n", - "\\hline\n", - "Methode & Parameter & NaN & $\\max(|\\Delta \\alpha_0|)$ [$''$] & $\\max(|\\Delta \\alpha_1|)$ [$''$] & $\\max(|\\Delta s|)$ [m] & time [s] \\\\\n", - "\\Xhline{1.5pt}\n", - "\\multirow{5}{*}{numerisch} & 200 & 4 & $1.490\\cdot10^{-02}$ & $1.276\\cdot10^{-02}$ & $1.317\\cdot10^{+00}$ & $0.21$ \\\\\n", - " & 500 & 3 & $3.833\\cdot10^{-02}$ & $4.408\\cdot10^{-02}$ & $1.355\\cdot10^{+00}$ & $0.52$ \\\\\n", - " & 1000 & 3 & $3.160\\cdot10^{-02}$ & $2.663\\cdot10^{-02}$ & $3.863\\cdot10^{+00}$ & $1.02$ \\\\\n", - " & 5000 & 3 & $1.275\\cdot10^{-04}$ & $2.077\\cdot10^{-05}$ & $6.141\\cdot10^{-02}$ & $4.67$ \\\\\n", - " & 10000 & 3 & $1.275\\cdot10^{-04}$ & $1.036\\cdot10^{-04}$ & $1.108\\cdot10^{-01}$ & $5.16$ \\\\\\hline\n", - "\\multirow{3}{*}{approximiert} & 600 & 0 & $8.033\\cdot10^{+03}$ & $8.043\\cdot10^{+03}$ & $1.730\\cdot10^{+02}$ & $0.18$ \\\\\n", - " & 1250 & 0 & $8.033\\cdot10^{+03}$ & $8.043\\cdot10^{+03}$ & $1.744\\cdot10^{+02}$ & $0.37$ \\\\\n", - " & 6000 & 0 & $8.033\\cdot10^{+03}$ & $8.043\\cdot10^{+03}$ & $1.749\\cdot10^{+02}$ & $2.61$ \\\\\\hline\n", - "\\multirow{3}{*}{ES} & 60 & 0 & $7.167\\cdot10^{+03}$ & $7.166\\cdot10^{+03}$ & $1.526\\cdot10^{+02}$ & $4.93$ \\\\\n", - " & 600 & 0 & $7.167\\cdot10^{+03}$ & $7.166\\cdot10^{+03}$ & $1.370\\cdot10^{+02}$ & $39.08$ \\\\\n", - " & 1250 & 0 & $7.167\\cdot10^{+03}$ & $7.166\\cdot10^{+03}$ & $1.384\\cdot10^{+02}$ & $73.40$ \\\\\\hline\n", - "\\end{tabular}\n", - "\\end{table}\n", - "\\noindent\n" - ] - } - ], - "execution_count": 46 } ], "metadata": { diff --git a/Tests/alpha_conversion_test.ipynb b/nicht abgeben/Tests/alpha_conversion_test.ipynb similarity index 94% rename from Tests/alpha_conversion_test.ipynb rename to nicht abgeben/Tests/alpha_conversion_test.ipynb index ec55093..a54e261 100644 --- a/Tests/alpha_conversion_test.ipynb +++ b/nicht abgeben/Tests/alpha_conversion_test.ipynb @@ -17,10 +17,11 @@ "source": [ "%reload_ext autoreload\n", "%autoreload 2\n", + "import numpy as np\n", + "\n", "import winkelumrechnungen as wu\n", - "from ellipsoide import EllipsoidTriaxial\n", - "from GHA_triaxial.utils import alpha_para2ell, alpha_ell2para\n", - "import numpy as np" + "from GHA_triaxial.utils import alpha_ell2para, alpha_para2ell\n", + "from ellipsoid_triaxial import EllipsoidTriaxial" ], "id": "46aa84a937fea491", "outputs": [], diff --git a/Tests/conversions_test.ipynb b/nicht abgeben/Tests/conversions_test.ipynb similarity index 98% rename from Tests/conversions_test.ipynb rename to nicht abgeben/Tests/conversions_test.ipynb index 62fd9a9..1e09e6b 100644 --- a/Tests/conversions_test.ipynb +++ b/nicht abgeben/Tests/conversions_test.ipynb @@ -20,13 +20,14 @@ "source": [ "%reload_ext autoreload\n", "%autoreload 2\n", - "import pickle\n", - "import numpy as np\n", - "import winkelumrechnungen as wu\n", "from itertools import product\n", + "\n", + "import numpy as np\n", "import pandas as pd\n", - "from ellipsoide import EllipsoidTriaxial\n", - "import plotly.graph_objects as go" + "import plotly.graph_objects as go\n", + "\n", + "import winkelumrechnungen as wu\n", + "from ellipsoid_triaxial import EllipsoidTriaxial" ], "outputs": [], "execution_count": null diff --git a/nicht abgeben/Tests/gha_resultsKarney.pkl b/nicht abgeben/Tests/gha_resultsKarney.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fe99deab361d44fd6fba3ec64e455d948e4a2d91 GIT binary patch literal 23637 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 A%m4rY literal 0 HcmV?d00001 diff --git a/Tests/gha_resultsPanou.pkl b/nicht abgeben/Tests/gha_resultsPanou.pkl similarity index 100% rename from Tests/gha_resultsPanou.pkl rename to nicht abgeben/Tests/gha_resultsPanou.pkl diff --git a/Tests/gha_resultsRandom.pkl b/nicht abgeben/Tests/gha_resultsRandom.pkl similarity index 100% rename from Tests/gha_resultsRandom.pkl rename to nicht abgeben/Tests/gha_resultsRandom.pkl diff --git a/nicht abgeben/Tests/gha_resultsRandom_num.pkl b/nicht abgeben/Tests/gha_resultsRandom_num.pkl new file mode 100644 index 0000000000000000000000000000000000000000..18414980b591c60393fa14c00a0ac4907a1acd17 GIT binary patch literal 12829 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 U`C$#0!Ek-p7t3>ugn48B7o}?%uK)l5 literal 0 HcmV?d00001 diff --git a/nicht abgeben/__init__.py b/nicht abgeben/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/nicht abgeben/ellipsoid_biaxial.py b/nicht abgeben/ellipsoid_biaxial.py new file mode 100644 index 0000000..d1bb8a4 --- /dev/null +++ b/nicht abgeben/ellipsoid_biaxial.py @@ -0,0 +1,126 @@ +from typing import Tuple + +import numpy as np +from numpy import arctan2, cos, sin, sqrt +from numpy.typing import NDArray + +import winkelumrechnungen as wu + + +class EllipsoidBiaxial: + """ + Klasse für Rotationsellipdoide + """ + def __init__(self, a: float, b: float): + self.a = a + self.b = b + self.c = a ** 2 / b + self.e = sqrt(a ** 2 - b ** 2) / a + self.e_ = sqrt(a ** 2 - b ** 2) / b + + @classmethod + def init_name(cls, name: str) -> EllipsoidBiaxial: + """ + Erstellen eines Rotationsellipdoids nach Namen + :param name: Name des Rotationsellipsoids + :return: Rotationsellipsoid + """ + if name == "Bessel": + a = 6377397.15508 + b = 6356078.96290 + return cls(a, b) + elif name == "Hayford": + a = 6378388 + f = 1/297 + b = a - a * f + return cls(a, b) + elif name == "Krassowski": + a = 6378245 + f = 298.3 + b = a - a * f + return cls(a, b) + elif name == "WGS84": + a = 6378137 + f = 298.257223563 + b = a - a * f + return cls(a, b) + else: + raise Exception(f"EllipsoidBiaxial.init_name: Name {name} unbekannt") + + @classmethod + def init_af(cls, a: float, f: float) -> EllipsoidBiaxial: + """ + Erstellen eines Rotationsellipdoids aus der großen Halbachse und der Abplattung + :param a: große Halbachse + :param f: großen Halbachse + :return: Rotationsellipsoid + """ + b = a - a * f + return cls(a, b) + + V = lambda self, phi: sqrt(1 + self.e_ ** 2 * cos(phi) ** 2) + M = lambda self, phi: self.c / self.V(phi) ** 3 + N = lambda self, phi: self.c / self.V(phi) + + beta2psi = lambda self, beta: arctan2(self.a * sin(beta), self.b * cos(beta)) + beta2phi = lambda self, beta: arctan2(self.a ** 2 * sin(beta), self.b ** 2 * cos(beta)) + + psi2beta = lambda self, psi: arctan2(self.b * sin(psi), self.a * cos(psi)) + psi2phi = lambda self, psi: arctan2(self.a * sin(psi), self.b * cos(psi)) + + phi2beta = lambda self, phi: arctan2(self.b**2 * sin(phi), self.a**2 * cos(phi)) + phi2psi = lambda self, phi: arctan2(self.b * sin(phi), self.a * cos(phi)) + + phi2p = lambda self, phi: self.N(phi) * cos(phi) + + def bi_cart2ell(self, point: NDArray, Eh: float = 0.001, Ephi: float = wu.gms2rad([0, 0, 0.001])) -> Tuple[float, float, float]: + """ + Umrechnung von kartesischen in ellipsoidische Koordinaten auf einem Rotationsellipsoid + # TODO: Quelle + :param point: Punkt in kartesischen Koordinaten + :param Eh: Grenzwert für die Höhe + :param Ephi: Grenzwert für die Breite + :return: ellipsoidische Breite, Länge, geodätische Höhe + """ + x, y, z = point + + lamb = arctan2(y, x) + + p = sqrt(x**2+y**2) + + phi_null = arctan2(z, p*(1 - self.e**2)) + + hi = [0] + phii = [phi_null] + + i = 0 + + while True: + N = self.a / sqrt(1 - self.e**2 * sin(phii[i])**2) + h = p / cos(phii[i]) - N + phi = arctan2(z, p * (1-(self.e**2*N) / (N+h))) + hi.append(h) + phii.append(phi) + dh = abs(hi[i]-h) + dphi = abs(phii[i]-phi) + i += 1 + if dh < Eh: + if dphi < Ephi: + break + return phi, lamb, h + + def bi_ell2cart(self, phi: float, lamb: float, h: float) -> NDArray: + """ + Umrechnung von ellipsoidischen in kartesische Koordinaten auf einem Rotationsellipsoid + # TODO: Quelle + :param phi: ellipsoidische Breite + :param lamb: ellipsoidische Länge + :param h: geodätische Höhe + :return: Punkt in kartesischen Koordinaten + """ + W = sqrt(1 - self.e**2 * sin(phi)**2) + N = self.a / W + x = (N+h) * cos(phi) * cos(lamb) + y = (N+h) * cos(phi) * sin(lamb) + z = (N * (1-self.e**2) + h) * sin(phi) + return np.array([x, y, z]) diff --git a/kugel.py b/nicht abgeben/kugel.py similarity index 96% rename from kugel.py rename to nicht abgeben/kugel.py index 0abca94..ba90a7c 100644 --- a/kugel.py +++ b/nicht abgeben/kugel.py @@ -1,7 +1,9 @@ -import numpy as np -from numpy import sqrt, arctan2, sin, cos, arcsin, arccos -from numpy.typing import NDArray from typing import Tuple + +import numpy as np +from numpy import arccos, arcsin, arctan2, cos, pi, sin, sqrt +from numpy.typing import NDArray + import winkelumrechnungen as wu @@ -77,7 +79,7 @@ def gha2(R: float, phi0: float, lamb0: float, phi1: float, lamb1: float) -> Tupl alpha1 = arctan2(-cos(phi0) * sin(lamb1 - lamb0), cos(phi1) * sin(phi0) - sin(phi1) * cos(phi0) * cos(lamb1 - lamb0)) if alpha1 < 0: - alpha1 += 2 * np.pi + alpha1 += 2 * pi return alpha0, alpha1, s diff --git a/plots.ipynb b/nicht abgeben/plots.ipynb similarity index 99% rename from plots.ipynb rename to nicht abgeben/plots.ipynb index 86ce718..3a774fd 100644 --- a/plots.ipynb +++ b/nicht abgeben/plots.ipynb @@ -9,10 +9,11 @@ }, "cell_type": "code", "source": [ - "import plotly.graph_objects as go\n", "import numpy as np\n", - "from ellipsoide import EllipsoidTriaxial\n", - "import winkelumrechnungen as wu" + "import plotly.graph_objects as go\n", + "\n", + "import winkelumrechnungen as wu\n", + "from ellipsoid_triaxial import EllipsoidTriaxial" ], "id": "731173e4745cfe7c", "outputs": [], diff --git a/nicht abgeben/test.py b/nicht abgeben/test.py new file mode 100644 index 0000000..513b5f8 --- /dev/null +++ b/nicht abgeben/test.py @@ -0,0 +1,8 @@ +import numpy as np + +import ellipsoid_triaxial + +ell = ellipsoid_triaxial.EllipsoidTriaxial.init_name("KarneyTest2024") + +cart = ell.para2cart(0, np.pi/2) +print(cart) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3071992 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +numpy~=2.3.4 +plotly~=6.4.0 +pandas~=2.3.3 +scipy~=1.16.3 +dash-bootstrap-components~=2.0.4 +dash~=4.0.0 +matplotlib~=3.10.7 \ No newline at end of file diff --git a/runge_kutta.py b/runge_kutta.py index e786507..7b3a24f 100644 --- a/runge_kutta.py +++ b/runge_kutta.py @@ -1,7 +1,10 @@ +from typing import Callable + import numpy as np +from numpy.typing import NDArray -def rk4(ode, t0: float, v0: np.ndarray, weite: float, schritte: int, fein: bool = False) -> tuple[list, list]: +def rk4(ode: Callable, t0: float, v0: NDArray, weite: float, schritte: int, fein: bool = False) -> tuple[list, list]: """ Standard Runge-Kutta Verfahren 4. Ordnung :param ode: ODE-System als Funktion @@ -9,7 +12,7 @@ def rk4(ode, t0: float, v0: np.ndarray, weite: float, schritte: int, fein: bool :param v0: Startwerte :param weite: Integrationsweite :param schritte: Schrittzahl - :param fein: + :param fein: Fein-Rechnung? :return: Variable und Funktionswerte an jedem Stützpunkt """ h = weite/schritte @@ -35,14 +38,32 @@ def rk4(ode, t0: float, v0: np.ndarray, weite: float, schritte: int, fein: bool return t_list, werte -def rk4_step(ode, t: float, v: np.ndarray, h: float) -> np.ndarray: +def rk4_step(ode: Callable, t: float, v: NDArray, h: float) -> NDArray: + """ + Ein Schritt des Runge-Kutta Verfahrens 4. Ordnung + :param ode: ODE-System als Funktion + :param t: unabhängige Variable + :param v: abhängige Variablen + :param h: Schrittweite + :return: abhängige Variablen nach einem Schritt + """ k1 = ode(t, v) k2 = ode(t + 0.5 * h, v + 0.5 * h * k1) k3 = ode(t + 0.5 * h, v + 0.5 * h * k2) k4 = ode(t + h, v + h * k3) return v + (h / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) -def rk4_end(ode, t0: float, v0: np.ndarray, weite: float, schritte: int, fein: bool = False): +def rk4_end(ode: Callable, t0: float, v0: NDArray, weite: float, schritte: int, fein: bool = False): + """ + Standard Runge-Kutta Verfahren 4. Ordnung, nur Ausgabe der letzten Variablenwerte + :param ode: ODE-System als Funktion + :param t0: Startwert der unabhängigen Variable + :param v0: Startwerte + :param weite: Integrationsweite + :param schritte: Schrittzahl + :param fein: Fein-Rechnung? + :return: Variable und Funktionswerte am letzten Stützpunkt + """ h = weite / schritte t = float(t0) v = np.array(v0, dtype=float, copy=True) @@ -62,8 +83,19 @@ def rk4_end(ode, t0: float, v0: np.ndarray, weite: float, schritte: int, fein: b return t, v # RK4 mit Simpson bzw. Trapez -def rk4_integral( ode, t0: float, v0: np.ndarray, weite: float, schritte: int, integrand_at, fein: bool = False, simpson: bool = True, ): - +def rk4_integral(ode: Callable, t0: float, v0: NDArray, weite: float, schritte: int, integrand_at: Callable, fein: bool = False, simpson: bool = True): + """ + Runge-Kutta Verfahren 4. Ordnung mit Simpson bzw. Trapez + :param ode: ODE-System als Funktion + :param t0: Startwert der unabhängigen Variable + :param v0: Startwerte + :param weite: Integrationsweite + :param integrand_at: Funktion + :param schritte: Schrittzahl + :param fein: Fein-Rechnung? + :param simpson: Simpson? Wenn nein, dann Trapez + :return: Variable und Funktionswerte am letzten Stützpunkt + """ h = weite / schritte habs = abs(h) diff --git a/test.py b/test.py deleted file mode 100644 index 863672a..0000000 --- a/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import numpy as np -import ellipsoide - -ell = ellipsoide.EllipsoidTriaxial.init_name("KarneyTest2024") - -cart = ell.para2cart(0, np.pi/2) -print(cart) \ No newline at end of file diff --git a/utils_angle.py b/utils_angle.py index abbd95c..4b9b401 100644 --- a/utils_angle.py +++ b/utils_angle.py @@ -1,24 +1,50 @@ import numpy as np + import winkelumrechnungen as wu -def arccot(x): +def arccot(x: float) -> float: + """ + Berechnung von arccot eines Winkels + :param x: Winkel + :return: arccot(Winkel) + """ return np.arctan2(1.0, x) -def cot(a): - return np.cos(a) / np.sin(a) +def cot(x: float) -> float: + """ + Berechnung von cot eines Winkels + :param x: Winkel + :return: cot(Winkel) + """ + return np.cos(x) / np.sin(x) -def wrap_mpi_pi(x): +def wrap_mpi_pi(x: float) -> float: + """ + Wrap eines Winkels in den Wertebereich [-π, π) + :param x: Winkel + :return: Winkel in [-π, π) + """ return (x + np.pi) % (2 * np.pi) - np.pi -def wrap_mhalfpi_halfpi(x): +def wrap_mhalfpi_halfpi(x: float) -> float: + """ + Wrap eines Winkels in den Wertebereich [-π/2, π/2) + :param x: Winkel + :return: Winkel in [-π/2, π/2) + """ return (x + np.pi / 2) % np.pi - np.pi / 2 -def wrap_0_2pi(x): +def wrap_0_2pi(x: float) -> float: + """ + Wrap eines Winkels in den Wertebereich [0, 2π) + :param x: Winkel + :return: Winkel in [0, 2π) + """ return x % (2 * np.pi)