LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
symbolic_ode_engine.hpp 文件参考

统一 ODE 求解引擎:分类,分派,多种求解方法. 更多...

#include "computation_context.hpp"
#include "lmcas_export.hpp"
#include "result.hpp"
#include "symbolic.hpp"
#include "proof_outcome.hpp"
#include <memory>
#include <string>
#include <vector>
#include <optional>
symbolic_ode_engine.hpp 的引用(Include)关系图:
此图展示该文件被哪些文件直接或间接地引用了:

浏览该文件的源代码.

类

struct  LMCAS::FrobeniusSolution
 Frobenius 级数解结果. 更多...
struct  LMCAS::ODEClassification
 ODE 分类结果,包含类型及提取的结构信息. 更多...
struct  LMCAS::ODESolution
 ODE 求解结果. 更多...

命名空间

namespace  LMCAS

类型定义

using LMCAS::FrobeniusSolutionResult = Result<FrobeniusSolution>
using LMCAS::ODESingularityResult = Result<ODESingularityType>
using LMCAS::ODESolutionResult = Result<ODESolution>

枚举

enum class  LMCAS::ODESingularityType { LMCAS::Ordinary , LMCAS::RegularSingular , LMCAS::IrregularSingular }
 对一阶 ODE 进行类型分类. 更多...
enum class  LMCAS::ODEType {
  LMCAS::Separable , LMCAS::Linear1 , LMCAS::Linear2_ConstCoeff , LMCAS::Homogeneous ,
  LMCAS::Bernoulli , LMCAS::Exact , LMCAS::HigherOrder_ConstCoeff , LMCAS::Euler ,
  LMCAS::System , LMCAS::LaplaceMethod , LMCAS::Frobenius , LMCAS::Unknown
}
 ODE 类型枚举,标识方程所属的求解类别. 更多...

详细描述

统一 ODE 求解引擎:分类,分派,多种求解方法.

扩展已有的 symbolic_ode.hpp,提供统一的 ODE 类型检测与分派机制, 支持可分离变量,一阶线性,齐次,Bernoulli,恰当,高阶常系数,Euler 等类型.

在文件 symbolic_ode_engine.hpp 中定义.


类说明

◆ LMCAS::FrobeniusSolution

struct LMCAS::FrobeniusSolution

Frobenius 级数解结果.

在文件 symbolic_ode_engine.hpp 第 435 行定义.

LMCAS::FrobeniusSolution 的协作图:
类成员
optional< ProofCertificate > certificate
vector< double > indicial_roots 指标方程的根(正则奇点时)
shared_ptr< SymbolicExpr > normalized_residual
ODESingularityType point_type 展开点的奇点类型
shared_ptr< SymbolicExpr > series_solution 截断级数解
int truncation_order 截断阶数

◆ LMCAS::ODEClassification

struct LMCAS::ODEClassification

ODE 分类结果,包含类型及提取的结构信息.

在文件 symbolic_ode_engine.hpp 第 42 行定义.

LMCAS::ODEClassification 的协作图:
类成员
int bernoulli_n = 0
shared_ptr< SymbolicExpr > bernoulli_P Bernoulli: P(x), Q(x), n 使得 y' + P(x)y = Q(x)y^n
shared_ptr< SymbolicExpr > bernoulli_Q
vector< double > const_coeffs 常系数: 系数列表 [a_n, a_{n-1}, ..., a_1, a_0] 和非齐次项 f(x)
vector< double > euler_coeffs Euler 方程: 系数列表 [a_n, ..., a_0] 对应 x^n*y^(n) + ... + a_0*y = f(x)
shared_ptr< SymbolicExpr > euler_forcing
shared_ptr< SymbolicExpr > exact_M 恰当方程: M(x,y), N(x,y)
shared_ptr< SymbolicExpr > exact_N
shared_ptr< SymbolicExpr > forcing_func
int order = 0 方程阶数
shared_ptr< SymbolicExpr > P_coeff 一阶线性: P(x), Q(x) 使得 y' + P(x)y = Q(x)
shared_ptr< SymbolicExpr > Q_coeff
ODEType type = ODEType::Unknown 识别出的 ODE 类型

◆ LMCAS::ODESolution

struct LMCAS::ODESolution

ODE 求解结果.

在文件 symbolic_ode_engine.hpp 第 71 行定义.

LMCAS::ODESolution 的协作图:
类成员
optional< ProofCertificate > certificate
vector< string > constants 任意常数名称列表 (C1, C2, ...)
shared_ptr< SymbolicExpr > general_solution 通解表达式
ODEType method_used = ODEType::Unknown 使用的求解方法
shared_ptr< SymbolicExpr > normalized_residual