Examples

This page provides pointers to runnable example files demonstrating Globtim features. Run examples from the globtimcore root directory.

Running Examples

julia --project=. Examples/hpc_minimal_2d_example.jl

Quick Reference

FeatureExample FileDescription
Basic 2D workflowExamples/hpc_minimal_2d_example.jlComplete polynomial → critical points
Custom objectivesExamples/custom_function_demo.jlUser-defined functions
SparsificationExamples/sparsification_demo.jlCoefficient truncation
Anisotropic gridsExamples/anisotropic_grid_demo.jlNon-uniform spacing
High-dimensionalExamples/high_dimensional_demo.jl3D/4D problems
Domain explorationExamples/domain_sweep_demo.jlDomain size effects
1D functionsExamples/scalar_function_demo.jlScalar input functions
Degree comparisonExamples/polynomial_basis_comparison.jlChebyshev vs Legendre

Visual examples of Globtim finding critical points on standard benchmark functions.

Deuflhard

Deuflhard Function

Holder Table

Holder Table Function

Beale

Beale Function

Branin

Branin Function


Basic 2D Workflow

See: Examples/hpc_minimal_2d_example.jl

Core API sequence:

StepAPI Call
1. Define problemtest_input(f, dim=2, center=[0.0,0.0], sample_range=1.2)
2. Build polynomialConstructor(TR, degree)
3. Find critical ptssolve_polynomial_system(x, pol)
4. Process solutionsprocess_crit_pts(solutions, f, TR)
5. Analyze & classifyanalyze_critical_points(f, df, TR, enable_hessian=true)

Custom Objective Functions

See: Examples/custom_function_demo.jl

Define any function accepting a vector x and returning a scalar:

my_function(x) = (x[1]^2 - 1)^2 + (x[2]^2 - 1)^2 + 0.1*sin(10*x[1]*x[2])

Statistical Analysis with Tables

See: Examples/hierarchical_experiment_example.jl

API pattern:

df_enhanced, df_min, tables, stats = analyze_critical_points_with_tables(f, df, TR, show_tables=true)

Export options: write_tables_to_csv(), write_tables_to_markdown(), write_tables_to_latex()


High-Dimensional Problems (3D/4D)

See: Examples/high_dimensional_demo.jl

Tips:

  • Use AdaptivePrecision for accuracy/performance balance
  • Reduce polynomial degree as dimension increases (4D → degree 4-6)
  • Disable Hessian analysis for faster results: enable_hessian=false

Domain Exploration

See: Examples/domain_sweep_demo.jl

Test different domain sizes to find all critical points:

TR = test_input(f, dim=2, center=[0.0, 0.0], sample_range=r)      # uniform
TR = test_input(f, dim=2, center=[0.0, 0.0], sample_range=[2.0, 1.0])  # rectangular

Visualization

For plotting critical points and convergence analysis, use the globtimplots package:

using GlobtimPlots
fig = plot_critical_points(df_enhanced)
fig = plot_convergence(results)

See globtimplots documentation for available plot types.


Polynomial Degree Comparison

See: Examples/polynomial_basis_comparison.jl

Compare Chebyshev vs Legendre bases and analyze how polynomial degree affects approximation quality and critical point discovery.


1D Functions with Scalar Input

See: Examples/scalar_function_demo.jl

Works with functions like sin, cos that expect scalar input:

f = x -> sin(3x) + 0.1*x^2
TR = test_input(f, dim=1, center=[0.0], sample_range=π)

Basin Analysis

See: Examples/validation_integration_test.jl

Analyze convergence basins for critical points. The df_min DataFrame includes:

  • basin_points - Number of points converging to this minimum
  • average_convergence_steps - Mean BFGS iterations
  • region_coverage_count - Spatial coverage metric

Advanced Examples

ExampleDescription
Examples/standardized_experiment_template.jlTemplate for reproducible experiments
Examples/automated_experiment_template.jlBatch experiment automation
Examples/random_p_true_example.jlParameter estimation workflows
Examples/quick_subdivision_demo.jlAdaptive subdivision methods

Next Steps