Initial commit
This commit is contained in:
155
skills/julia-numerical/examples.jl
Normal file
155
skills/julia-numerical/examples.jl
Normal file
@@ -0,0 +1,155 @@
|
||||
# Julia Numerical Calculation Examples
|
||||
# This file contains common numerical computation patterns
|
||||
|
||||
# ============================================================================
|
||||
# Linear Algebra Examples
|
||||
# ============================================================================
|
||||
|
||||
function linear_algebra_examples()
|
||||
using LinearAlgebra
|
||||
|
||||
println("=== Linear Algebra Examples ===")
|
||||
|
||||
# Matrix creation and basic operations
|
||||
A = [1 2 3; 4 5 6; 7 8 10]
|
||||
b = [1, 2, 3]
|
||||
|
||||
println("Matrix A:")
|
||||
println(A)
|
||||
|
||||
# Solve linear system Ax = b
|
||||
x = A \ b
|
||||
println("\nSolution to Ax = b:")
|
||||
println(x)
|
||||
|
||||
# Eigenvalues
|
||||
eigenvals, eigenvecs = eigen(A)
|
||||
println("\nEigenvalues:")
|
||||
println(eigenvals)
|
||||
|
||||
# Singular value decomposition
|
||||
U, S, V = svd(A)
|
||||
println("\nSingular values:")
|
||||
println(S)
|
||||
|
||||
# Determinant and norm
|
||||
println("\nDeterminant: ", det(A))
|
||||
println("Frobenius norm: ", norm(A))
|
||||
end
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# Numerical Integration Examples
|
||||
# ============================================================================
|
||||
|
||||
function integration_examples()
|
||||
using QuadGK
|
||||
|
||||
println("\n=== Numerical Integration Examples ===")
|
||||
|
||||
# Integrate sin(x) from 0 to π
|
||||
f1(x) = sin(x)
|
||||
result1, error1 = quadgk(f1, 0, π)
|
||||
println("∫sin(x)dx from 0 to π = ", result1)
|
||||
println("Estimated error: ", error1)
|
||||
|
||||
# Integrate exp(-x^2) from -∞ to ∞ (Gaussian)
|
||||
f2(x) = exp(-x^2)
|
||||
result2, error2 = quadgk(f2, -Inf, Inf)
|
||||
println("\n∫exp(-x²)dx from -∞ to ∞ = ", result2)
|
||||
println("Theoretical value: ", sqrt(π))
|
||||
|
||||
# Integrate 1/(1+x^2) from 0 to 1
|
||||
f3(x) = 1/(1 + x^2)
|
||||
result3, error3 = quadgk(f3, 0, 1)
|
||||
println("\n∫1/(1+x²)dx from 0 to 1 = ", result3)
|
||||
println("Theoretical value (π/4): ", π/4)
|
||||
end
|
||||
|
||||
# ============================================================================
|
||||
# Optimization Examples
|
||||
# ============================================================================
|
||||
|
||||
function optimization_examples()
|
||||
using Optim
|
||||
|
||||
println("\n=== Optimization Examples ===")
|
||||
|
||||
# Simple quadratic function
|
||||
f(x) = (x[1] - 2)^2 + (x[2] - 3)^2
|
||||
|
||||
result = optimize(f, [0.0, 0.0])
|
||||
println("Minimize f(x,y) = (x-2)² + (y-3)²")
|
||||
println("Minimum found at: ", Optim.minimizer(result))
|
||||
println("Minimum value: ", Optim.minimum(result))
|
||||
|
||||
# Rosenbrock function (more challenging)
|
||||
rosenbrock(x) = (1 - x[1])^2 + 100(x[2] - x[1]^2)^2
|
||||
|
||||
result2 = optimize(rosenbrock, [0.0, 0.0])
|
||||
println("\nMinimize Rosenbrock function")
|
||||
println("Minimum found at: ", Optim.minimizer(result2))
|
||||
println("Minimum value: ", Optim.minimum(result2))
|
||||
end
|
||||
|
||||
# ============================================================================
|
||||
# Statistics Examples
|
||||
# ============================================================================
|
||||
|
||||
function statistics_examples()
|
||||
using Statistics
|
||||
|
||||
println("\n=== Statistics Examples ===")
|
||||
|
||||
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20]
|
||||
|
||||
println("Data: ", data)
|
||||
println("\nStatistical measures:")
|
||||
println("Mean: ", mean(data))
|
||||
println("Median: ", median(data))
|
||||
println("Standard deviation: ", std(data))
|
||||
println("Variance: ", var(data))
|
||||
println("Minimum: ", minimum(data))
|
||||
println("Maximum: ", maximum(data))
|
||||
println("Range: ", maximum(data) - minimum(data))
|
||||
|
||||
# Quantiles
|
||||
println("\nQuantiles:")
|
||||
println("25th percentile: ", quantile(data, 0.25))
|
||||
println("50th percentile: ", quantile(data, 0.50))
|
||||
println("75th percentile: ", quantile(data, 0.75))
|
||||
end
|
||||
|
||||
# ============================================================================
|
||||
# Root Finding Examples
|
||||
# ============================================================================
|
||||
|
||||
function root_finding_examples()
|
||||
using Roots
|
||||
|
||||
println("\n=== Root Finding Examples ===")
|
||||
|
||||
# Find root of f(x) = x^3 - 2
|
||||
f(x) = x^3 - 2
|
||||
root = find_zero(f, 1.0)
|
||||
println("Root of x³ - 2 = 0: ", root)
|
||||
println("Verification: f(root) = ", f(root))
|
||||
|
||||
# Find root of f(x) = sin(x) - 0.5
|
||||
f2(x) = sin(x) - 0.5
|
||||
root2 = find_zero(f2, 0.5)
|
||||
println("\nRoot of sin(x) - 0.5 = 0: ", root2)
|
||||
println("Verification: f(root) = ", f2(root2))
|
||||
end
|
||||
|
||||
# ============================================================================
|
||||
# Main execution
|
||||
# ============================================================================
|
||||
|
||||
if abspath(PROGRAM_FILE) == @__FILE__
|
||||
linear_algebra_examples()
|
||||
integration_examples()
|
||||
optimization_examples()
|
||||
statistics_examples()
|
||||
root_finding_examples()
|
||||
end
|
||||
Reference in New Issue
Block a user