From a470c304199866aa1f3d39ff22ec30734f03d617 Mon Sep 17 00:00:00 2001 From: justanothercatgirl Date: Fri, 6 Dec 2024 15:08:31 +0300 Subject: сделал 8 задание)))) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/diffeq.h | 22 ++++++++++++++++++++++ include/equations.h | 10 ++++++++++ include/types.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 include/diffeq.h create mode 100644 include/equations.h create mode 100644 include/types.h (limited to 'include') diff --git a/include/diffeq.h b/include/diffeq.h new file mode 100644 index 0000000..51f85e6 --- /dev/null +++ b/include/diffeq.h @@ -0,0 +1,22 @@ +#ifndef T8_DIFFEQ_H +#define T8_DIFFEQ_H +#include + +/* + * `eqfs` - Массив функций + * `init` - массив начальных условий f_n(a) = init[n] (значение функций в начале интервала!) + * `files` = массив файлов, в который записывать получившиеся приближения + * `n` - количество уравнений ( и начальных условий ) ( и переменных ) + * `a` - начало интервала решения ( по t? ) + * `b` - конец интервала решения ( по t? ) + * `dt` - шаг по времени + */ +void difeq_solve_euler(eqf_t *eqfs, f64 *init, const char **files, usz n, f64 a, f64 b, f64 dt); + +/* + * То же самое, что и прошлая функция, только использует не метод эйлера, а метод рунге-кутты. + * Аргументы все точно такие же + */ + void difeq_solve_RK(eqf_t *eqfs, f64 *init, const char **files, usz n, f64 a, f64 b, f64 dt); + +#endif /* T8_DIFFEQ_H */ diff --git a/include/equations.h b/include/equations.h new file mode 100644 index 0000000..48936fb --- /dev/null +++ b/include/equations.h @@ -0,0 +1,10 @@ +#ifndef T8_EQUATIONS_H +#define T8_EQUATIONS_H +#include + +f64 f1(f64* argv, usz argc, f64 t); +f64 f2(f64* argv, usz argc, f64 t); +f64 f3(f64* argv, usz argc, f64 t); +f64 f4(f64* argv, usz argc, f64 t); + +#endif /* T8_EQUATIONS_H */ diff --git a/include/types.h b/include/types.h new file mode 100644 index 0000000..c83c9bd --- /dev/null +++ b/include/types.h @@ -0,0 +1,29 @@ +#ifndef T8_TYPES_H +#define T8_TYPES_H + +#include +#include + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; + +typedef int8_t i8; +typedef int16_t i16; +typedef int32_t i32; +typedef int64_t i64; + +typedef float f32; +typedef double f64; + +typedef size_t usz; +typedef ptrdiff_t isz; + +#if __SIZEOF_LONG_DOUBLE__ == 16 +typedef long double f128; +#endif + +typedef f64(*eqf_t)(f64*, usz, f64); + +#endif -- cgit v1.2.3-70-g09d2