Add comprehensive API documentation and restructure docs organization
## Summary
This PR comprehensively transforms FiniteDiff.jl documentation by adding detailed docstrings to all functions and completely restructuring the documentation organization for optimal usability.
### Comprehensive Documentation Added
**Main API Functions:**
- Enhanced `finite_difference_jacobian` with mathematical background and usage examples
- Complete `finite_difference_gradient` documentation covering both vector→scalar and scalar→vector cases
- Detailed `finite_difference_hessian` with mathematical formulation and complexity analysis
- Complete `finite_difference_jvp` documentation explaining Jacobian-vector products
- All corresponding in-place (`!`) versions with comprehensive usage notes
**Cache Constructors:**
- Full documentation for `JVPCache`, `GradientCache`, `HessianCache`, `DerivativeCache`
- Both allocating and non-allocating constructor variants documented
- Clear guidance on when to use each approach for optimal performance
**Internal Functions:**
- Complete documentation for epsilon computation functions (`compute_epsilon`)
- Detailed `default_relstep` with mathematical justification for step size choices
- Documentation for sparse Jacobian utilities (`_make_Ji`, `_colorediteration!`)
- Array utility functions (`_vec`, `_mat`, `setindex` overloads) with clear purpose statements
### Documentation Structure Reorganization
**New Page Organization:**
- **Home**: Package overview from README (clean, no API clutter)
- **Tutorials**: Existing tutorial content
- **Derivatives**: Single/multi-point scalar function derivatives
- **Gradients**: Vector→scalar and scalar→vector gradient computation
- **Jacobians**: Vector→vector functions with comprehensive sparse Jacobian guide
- **Hessians**: Scalar→matrix second derivatives with mathematical background
- **Jacobian-Vector Products**: Efficient directional derivatives without full Jacobians
- **Step Size Selection**: Mathematical theory and algorithms for optimal epsilon selection
- **Internal Utilities**: Complete coverage of internal functions for advanced users
**Improved Content Organization:**
- **Explanations first**: Each page provides context and theory before technical details
- **Logical flow**: Mathematical background → Performance notes → Function documentation
- **Focused content**: Each page concentrates on one functional area
- **Educational value**: Theory explanations help users understand when and how to use functions
### Documentation Features
**Mathematical Rigor:**
- Error analysis for truncation vs round-off errors
- Optimal step size derivations for each finite difference method
- Complexity analysis (e.g., "O(n) function evaluations, O(h²) accuracy")
- Mathematical formulations for Hessian approximations
**Practical Guidance:**
- Comprehensive parameter descriptions with types and purpose
- Usage examples with working code snippets
- Performance characteristics and trade-offs
- Cache management best practices
- Sparse Jacobian computation guidelines
**Professional Quality:**
- Consistent Julia docstring formatting
- Mathematical notation using LaTeX-style formatting
- Cross-references between related functions
- SciMLStyle code formatting applied throughout
## Technical Implementation
**Code Quality:**
- Applied JuliaFormatter with SciMLStyle to all modified files
- No breaking changes to existing API
- All existing tests continue to pass
- Added 40+ comprehensive docstrings following Julia conventions
**Documentation Build System:**
- Restructured `docs/pages.jl` for flat, intuitive navigation
- Updated `docs/make.jl` to generate clean index page from README
- Created 8 focused category pages replacing complex nested structure
- Documentation builds cleanly with proper cross-references
## Impact and Benefits
### For New Users
- **Accessible entry point**: Clear explanations of finite difference theory
- **Learning progression**: From basic concepts to advanced implementation details
- **Practical examples**: Working code snippets for all major functions
- **Method selection guidance**: When to use forward vs central vs complex step
### For Experienced Users
- **Complete reference**: Detailed parameter documentation for all functions
- **Performance optimization**: Complexity analysis and cache usage guidelines
- **Advanced features**: Sparse Jacobian computation and JVP efficiency
- **Internal understanding**: Documentation of algorithms and design decisions
### For Package Quality
- **Professional appearance**: Documentation quality now matches other top-tier Julia packages
- **Educational value**: Users learn finite difference theory alongside API usage
- **Maintainability**: Well-organized structure makes future updates easier
- **Accessibility**: Clear organization helps users find what they need quickly
## Before vs After
**Before**: Minimal docstrings like "Cache-less."
**After**: Comprehensive documentation with mathematical background, examples, performance analysis, and clear usage guidance.
This transformation makes FiniteDiff.jl significantly more accessible while preserving its performance-focused nature and adding educational value for users learning numerical differentiation.
🤖 Generated with [Claude Code](https://claude.ai/code)
合并状态:已合并 合并于 2025-08-13 关闭于 2025-08-13 3 条评论