LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
ode_implicit.c 文件参考

隐式 ODE 求解器:隐式 Euler 与梯形法(Newton 迭代)。 更多...

#include <math.h>
#include <string.h>
#include "memory_bridge.h"
#include "internal.h"
#include "ode_internal.h"
#include "lmmc/ode.h"
#include "lmmc/optimize.h"
#include "lmmc/dense.h"
#include "lmmc/linear_algebra.h"
ode_implicit.c 的引用(Include)关系图:

浏览该文件的源代码.

结构体

struct  ode_implicit_euler_ctx_t
struct  ode_trapezoidal_ctx_t

函数

lmmc_status_t lmmc_ode_implicit_euler_solve (lmmc_ode_rhs_t rhs, void *user_data, size_t dim, lmmc_real_t t_start, lmmc_real_t t_end, lmmc_real_t *y, const lmmc_ode_config_t *cfg, lmmc_ode_result_t *out_result)
 隐式 Euler 法求解器(A-稳定,适用于刚性问题)。
lmmc_status_t lmmc_ode_trapezoidal_solve (lmmc_ode_rhs_t rhs, void *user_data, size_t dim, lmmc_real_t t_start, lmmc_real_t t_end, lmmc_real_t *y, const lmmc_ode_config_t *cfg, lmmc_ode_result_t *out_result)
 梯形法求解器(A-稳定,二阶精度)。

详细描述

隐式 ODE 求解器:隐式 Euler 与梯形法(Newton 迭代)。

在文件 ode_implicit.c 中定义.


结构体说明

◆ ode_implicit_euler_ctx_t

struct ode_implicit_euler_ctx_t

在文件 ode_implicit.c 第 16 行定义.

ode_implicit_euler_ctx_t 的协作图:
成员变量
lmmc_ode_rhs_t rhs
void * user_data
lmmc_ode_jac_t jac_cb
lmmc_real_t t_next
lmmc_real_t h
const lmmc_real_t * y_n
size_t dim
lmmc_real_t * jac_base_rhs
lmmc_real_t * jac_y_perturbed
lmmc_real_t * jac_rhs_perturbed
size_t * rhs_eval_count
int callback_failed

◆ ode_trapezoidal_ctx_t

struct ode_trapezoidal_ctx_t

在文件 ode_implicit.c 第 188 行定义.

ode_trapezoidal_ctx_t 的协作图:
成员变量
lmmc_ode_rhs_t rhs
void * user_data
lmmc_ode_jac_t jac_cb
lmmc_real_t t_next
lmmc_real_t h
const lmmc_real_t * y_n
lmmc_real_t * f_n
size_t dim
lmmc_real_t * jac_base_rhs
lmmc_real_t * jac_y_perturbed
lmmc_real_t * jac_rhs_perturbed
size_t * rhs_eval_count
int callback_failed

函数说明

◆ lmmc_ode_implicit_euler_solve()

lmmc_status_t lmmc_ode_implicit_euler_solve ( lmmc_ode_rhs_t rhs,
void * user_data,
size_t dim,
lmmc_real_t t_start,
lmmc_real_t t_end,
lmmc_real_t * y,
const lmmc_ode_config_t * cfg,
lmmc_ode_result_t * out_result )

◆ lmmc_ode_trapezoidal_solve()

lmmc_status_t lmmc_ode_trapezoidal_solve ( lmmc_ode_rhs_t rhs,
void * user_data,
size_t dim,
lmmc_real_t t_start,
lmmc_real_t t_end,
lmmc_real_t * y,
const lmmc_ode_config_t * cfg,
lmmc_ode_result_t * out_result )