156 lines
4.6 KiB
Julia
156 lines
4.6 KiB
Julia
# 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
|