Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ipynb/Diss/Figures_Diss.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1684,4 +1684,4 @@
},
"nbformat": 4,
"nbformat_minor": 1
}
}
54 changes: 43 additions & 11 deletions ipynb/Extrapolation/Extrapolation_Test.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,10 @@
"# shortcut for romberg SASD\n",
"def get_single_dim_romberg(a, b, f, reference_solution, sasd_version,\n",
" slice_grouping, slice_version, container_version,\n",
" force_balanced_refinement_tree):\n",
" force_balanced_refinement_tree, grid_version = GridVersion.DEFAULT):\n",
" grid_romberg = GlobalRombergGrid(a=a, b=b, modified_basis=False, boundary=True,\n",
" slice_grouping=slice_grouping,\n",
" slice_version=slice_version,\n",
" container_version=container_version)\n",
" slice_version=slice_version)\n",
"\n",
" operation_romberg = Integration(f=f, grid=grid_romberg, dim=dim, reference_solution=reference_solution)\n",
"\n",
Expand Down Expand Up @@ -90,11 +89,11 @@
"\n",
"# Manually override functions array:\n",
"functions = [\n",
" # f_genz_corner,\n",
" f_genz_corner,\n",
" # f_genz_product,\n",
" # f_genz_cont,\n",
" # f_genz_gaussian,\n",
" f_exp_var,\n",
" # f_exp_var,\n",
" # f_genz_osz,\n",
" # f_genz_disc\n",
"]\n",
Expand Down Expand Up @@ -189,19 +188,47 @@
" force_balanced_refinement_tree=True)\n",
" \n",
" # Interpolating Romberg\n",
" r_interpolating_old = get_single_dim_romberg(a, b, f, reference_solution,\n",
" sasd_version=sasd_version,\n",
" slice_grouping=SliceGrouping.GROUPED_OPTIMIZED,\n",
" slice_version=SliceVersion.ROMBERG_DEFAULT, # Makes no difference\n",
" container_version=SliceContainerVersion.LAGRANGE_ROMBERG_OLD,\n",
" force_balanced_refinement_tree=False,\n",
" grid_version=GridVersion.INTERPOLATE_SUB_GRIDS) # Interpolating Romberg\n",
"\n",
" r_interpolating = get_single_dim_romberg(a, b, f, reference_solution,\n",
" sasd_version=sasd_version,\n",
" slice_grouping=SliceGrouping.GROUPED_OPTIMIZED,\n",
" slice_version=SliceVersion.ROMBERG_DEFAULT, # Makes no difference\n",
" container_version=SliceContainerVersion.LAGRANGE_ROMBERG,\n",
" force_balanced_refinement_tree=False)\n",
" force_balanced_refinement_tree=False,\n",
" grid_version=GridVersion.INTERPOLATE_SUB_GRIDS)\n",
" # Interpolating Full grid\n",
" r_interpolating_full_grid = get_single_dim_romberg(a, b, f, reference_solution,\n",
" sasd_version=sasd_version,\n",
" slice_grouping=SliceGrouping.GROUPED_OPTIMIZED,\n",
" slice_version=SliceVersion.ROMBERG_DEFAULT, # Makes no difference\n",
" container_version=SliceContainerVersion.LAGRANGE_FULL_GRID_ROMBERG,\n",
" force_balanced_refinement_tree=False)\n",
" container_version=SliceContainerVersion.LAGRANGE_ROMBERG,\n",
" force_balanced_refinement_tree=False,\n",
" grid_version=GridVersion.INTERPOLATE_FULL_GRID)\n",
" \n",
" # Interpolating Bspline\n",
" r_interpolating_bspline = get_single_dim_romberg(a, b, f, reference_solution,\n",
" sasd_version=sasd_version,\n",
" slice_grouping=SliceGrouping.GROUPED_OPTIMIZED,\n",
" slice_version=SliceVersion.ROMBERG_DEFAULT, # Makes no difference\n",
" container_version=SliceContainerVersion.BSPLINE_ROMBERG,\n",
" force_balanced_refinement_tree=False,\n",
" grid_version=GridVersion.INTERPOLATE_SUB_GRIDS)\n",
" \n",
" # Interpolating Hierarchical Langrange\n",
" r_interpolating_hierarchical_lagrange = get_single_dim_romberg(a, b, f, reference_solution,\n",
" sasd_version=sasd_version,\n",
" slice_grouping=SliceGrouping.GROUPED_OPTIMIZED,\n",
" slice_version=SliceVersion.ROMBERG_DEFAULT, # Makes no difference\n",
" container_version=SliceContainerVersion.HIERARCHICAL_LAGRANGE_ROMBERG,\n",
" force_balanced_refinement_tree=False,\n",
" grid_version=GridVersion.INTERPOLATE_SUB_GRIDS)\n",
" \n",
" # Romberg Constant Subtraction\n",
" r_constant_subtraction = get_single_dim_romberg(a, b, f, reference_solution,\n",
Expand Down Expand Up @@ -259,21 +286,26 @@
" # (r_grouped_optimized, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Default Romberg)'),\n",
" # (r_full_grouped_optimized, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Default Romberg, Balanced)'),\n",
" # \n",
" # (r_interpolating, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Lagrange Romberg)'),\n",
" (r_interpolating_old, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Lagrange Romberg Old)'),\n",
" # (r_interpolating_full_grid, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Lagrange Full Romberg)'),\n",
"\n",
" (r_interpolating, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Lagrange Romberg)'),\n",
" (r_interpolating_bspline, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Bspline Romberg)'),\n",
" (r_interpolating_hierarchical_lagrange, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Hierarchical Lagrange Romberg)'),\n",
"\n",
" # \n",
" # (r_simson_full_grouped_optimized, 1, 2, errorOperator, 'Extrapolation Grid (Grouped Optimized, Romberg, Simpson Romberg, Balanced)'),\n",
"\n",
" # (r_constant_subtraction, 1, 2, errorOperator, 'Extrapolation Grid (Unit, DefaultConstantSubtraction)'), \n",
" \n",
" (r_balanced, 1, 2, errorOperator, 'Balanced Extrapolation Grid'),\n",
" # (r_balanced, 1, 2, errorOperator, 'Balanced Extrapolation Grid'),\n",
" ]\n",
" \n",
" function_name = f.__class__.__name__\n",
" filename = \"error_comparison_{}_{}d\".format(function_name, dim)\n",
"\n",
" performTestcaseArbitraryDim(f, a, b, algorithmArray,\n",
" max_tol, dim, 6, grids=standard_combi_grids, evaluation_points=evaluation_points,\n",
" max_tol, dim, 6, grids=standard_combi_grids, evaluation_points=None,\n",
" max_evaluations=max_evaluations,\n",
" calc_standard_schemes=True, # enable for standard schemes\n",
" minLmin=1,\n",
Expand Down
10 changes: 9 additions & 1 deletion sparseSpACE/BasisFunctions.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,15 @@ def get_integral(self, a: float, b: float, coordsD: np.array, weightsD: np.array
return result


# Data structure for one lagrange basis
class LagrangeBasis(BasisFunction):
def __init__(self, p: int, index: int, knots: np.array):
self.p = p
self.knots = knots
#assert p == len(knots) - 1
self.index = index

# Construct factor of lagrange polynomial for this basis point
self.factor = 1
for i, knot in enumerate(self.knots):
assert not isinf(self.knots[i])
Expand All @@ -109,10 +112,15 @@ def __init__(self, p: int, index: int, knots: np.array):

def __call__(self, x: float) -> float:
result = 1

# Evaluate basis function at point x
for i, knot in enumerate(self.knots):
if self.index != i:
result *= (x - self.knots[i])
return result * self.factor

# Complete construction of lagrange polynomial for this basis point evaluated at x
evaluated_basis = result * self.factor
return evaluated_basis

def get_first_derivative(self, x: float) -> float:
return self.derivative_for_index(x, [self.index])
Expand Down
Loading