Skip to content

Commit 6b234f1

Browse files
Update overview.md
1 parent 3df3f4e commit 6b234f1

File tree

1 file changed

+0
-179
lines changed

1 file changed

+0
-179
lines changed

docs/src/methods/overview.md

Lines changed: 0 additions & 179 deletions
Original file line numberDiff line numberDiff line change
@@ -29,182 +29,3 @@ integrate(f, x, RischMethod(use_algebraic_closure=true, catch_errors=false))
2929
**Best for:** Complete symbolic integration with guaranteed correctness
3030

3131
[→ See detailed Risch documentation](risch.md)
32-
33-
## Future Methods
34-
35-
The method dispatch system is designed to support additional integration algorithms:
36-
37-
### Planned Methods
38-
39-
#### HeuristicMethod (Future)
40-
Fast pattern-matching based integration for common cases.
41-
```julia
42-
integrate(f, x, HeuristicMethod()) # Fast heuristic patterns
43-
```
44-
45-
#### NumericalMethod (Future)
46-
Numerical integration with symbolic preprocessing.
47-
```julia
48-
integrate(f, x, NumericalMethod(tolerance=1e-10)) # Numerical fallback
49-
```
50-
51-
#### SymPyMethod (Future)
52-
Integration using SymPy backend for comparison.
53-
```julia
54-
integrate(f, x, SymPyMethod()) # SymPy compatibility
55-
```
56-
57-
## Method Selection Guide
58-
59-
### Choosing the Right Method
60-
61-
| Use Case | Recommended Method | Reason |
62-
|----------|-------------------|---------|
63-
| **Exact symbolic results** | `RischMethod()` | Complete, guaranteed correct |
64-
| **Research/verification** | `RischMethod(catch_errors=false)` | Strict algorithmic behavior |
65-
| **Production applications** | `RischMethod(catch_errors=true)` | Robust error handling |
66-
| **Complex analysis** | `RischMethod(use_algebraic_closure=true)` | Full arctangent terms |
67-
| **Simple computations** | `RischMethod(use_algebraic_closure=false)` | Faster execution |
68-
69-
### Method Comparison
70-
71-
| Method | Speed | Completeness | Robustness | Use Case |
72-
|--------|-------|--------------|------------|----------|
73-
| **RischMethod** | Moderate | Complete | High | Research, exact results |
74-
| **HeuristicMethod** (future) | Fast | Partial | Moderate | Common patterns |
75-
| **NumericalMethod** (future) | Variable | Approximate | High | Fallback cases |
76-
77-
## Method Architecture
78-
79-
### Abstract Type Hierarchy
80-
```julia
81-
AbstractIntegrationMethod
82-
├── RischMethod # Complete symbolic integration
83-
├── AbstractRationalIntegration # Rational function specialists
84-
└── AbstractTranscendentalIntegration # Transcendental specialists
85-
```
86-
87-
### Method Interface
88-
```julia
89-
# General interface
90-
integrate(f, x, method::AbstractIntegrationMethod; kwargs...)
91-
92-
# Method-specific traits
93-
method_supports_rational(method) # Check rational function support
94-
method_supports_transcendental(method) # Check transcendental support
95-
```
96-
97-
## Configuration Patterns
98-
99-
### Common Configurations
100-
101-
```julia
102-
# Research configuration (strict, complete)
103-
research_config = RischMethod(
104-
use_algebraic_closure=true,
105-
catch_errors=false
106-
)
107-
108-
# Production configuration (robust, complete)
109-
production_config = RischMethod(
110-
use_algebraic_closure=true,
111-
catch_errors=true
112-
)
113-
114-
# Performance configuration (fast, simple)
115-
performance_config = RischMethod(
116-
use_algebraic_closure=false,
117-
catch_errors=true
118-
)
119-
```
120-
121-
### Method Workflows
122-
123-
```julia
124-
@variables x f
125-
126-
# Try different methods in sequence
127-
function robust_integrate(f, x)
128-
try
129-
# First try exact Risch method
130-
return integrate(f, x, RischMethod(catch_errors=false))
131-
catch NotImplementedError
132-
# Fall back to heuristic method (future)
133-
return integrate(f, x, HeuristicMethod())
134-
catch AlgorithmFailedError
135-
# Fall back to numerical method (future)
136-
return integrate(f, x, NumericalMethod())
137-
end
138-
end
139-
```
140-
141-
## Extending with New Methods
142-
143-
The method system is designed for easy extension:
144-
145-
### Adding a New Method
146-
147-
1. **Define method type**:
148-
```julia
149-
struct MyMethod <: AbstractIntegrationMethod
150-
option1::Bool
151-
option2::Float64
152-
end
153-
```
154-
155-
2. **Implement integration**:
156-
```julia
157-
function SymbolicIntegration._integrate(f, x, method::MyMethod; kwargs...)
158-
# Your algorithm implementation
159-
return result
160-
end
161-
```
162-
163-
3. **Add method traits**:
164-
```julia
165-
method_supports_rational(method::MyMethod) = true
166-
method_supports_transcendental(method::MyMethod) = false
167-
```
168-
169-
### Plugin Architecture
170-
171-
The dispatch system supports:
172-
- **Third-party packages**: Can add new methods
173-
- **Method composition**: Combining different approaches
174-
- **Fallback chains**: Trying multiple methods in sequence
175-
- **Performance optimization**: Method-specific tuning
176-
177-
## Performance and Benchmarking
178-
179-
### Method Performance Characteristics
180-
181-
- **RischMethod**: Exact results, moderate speed, complete coverage
182-
- **Future methods**: Will provide different speed/accuracy tradeoffs
183-
184-
### Benchmarking Methods
185-
186-
```julia
187-
using BenchmarkTools
188-
189-
@variables x
190-
f = (x^3 + x^2 + x + 2)/(x^4 + 3*x^2 + 2)
191-
192-
# Benchmark different configurations
193-
@benchmark integrate($f, $x, RischMethod(use_algebraic_closure=true))
194-
@benchmark integrate($f, $x, RischMethod(use_algebraic_closure=false))
195-
```
196-
197-
## Migration and Compatibility
198-
199-
### Current Usage Patterns
200-
201-
All existing code continues to work:
202-
```julia
203-
# Existing code (still works)
204-
integrate(f, x)
205-
206-
# New explicit method (equivalent)
207-
integrate(f, x, RischMethod())
208-
```
209-
210-
The method system provides a **migration path** for users to gradually adopt new integration methods as they become available, while maintaining full compatibility with existing workflows.

0 commit comments

Comments
 (0)