num4diff 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -3
- data/ext/num4diff/CNum4Diff.c +15 -13
- data/ext/num4diff/CNum4Diff.h +4 -4
- data/lib/num4diff.rb +6 -6
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc6954bb9f3eb7e7b35429c7f4429aa60f5a998ce1934dbe79b0117ae1013a51
|
4
|
+
data.tar.gz: 3caa0e4e7b083a435b374c0739134ac583ab149f30306327783cf239896c263b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9e5780c5bbfecb0dd284e561775f78a8cff1530194817f4ac58f22db6f0103e851558a548e3cf04d54e4f4d009a2cad2508d1f5bb6a2e2cf33f8aa59a50174e
|
7
|
+
data.tar.gz: 2d4736748fa20f35f7ba11fa0e614f165d9b30a73038d4942262c30f3951d33db45bf0ffb46970197b45e3d98e51d639365a3845e69a8ebc52c4db309be9569b
|
data/CHANGELOG.md
CHANGED
@@ -2,10 +2,16 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
## [0.4.5] - 2023-04-14
|
6
|
+
|
7
|
+
### Fixed
|
8
|
+
- Fix function of adamsBashforthMethod
|
9
|
+
- Fix function of adamsMoultonMethod
|
10
|
+
|
5
11
|
## [0.4.4] - 2023-04-11
|
6
12
|
|
7
13
|
### Added
|
8
|
-
- Add CHANGELOG.md
|
14
|
+
- Add file of CHANGELOG.md
|
9
15
|
|
10
16
|
## [0.4.3] - 2023-04-10
|
11
17
|
|
@@ -16,8 +22,8 @@
|
|
16
22
|
## [0.4.1] - 2023-03-26
|
17
23
|
|
18
24
|
### Fixed
|
19
|
-
- Fix from add_runtime_dependency '
|
20
|
-
to add_development_dependency '
|
25
|
+
- Fix from add_runtime_dependency 'ffi-compiler'
|
26
|
+
to add_development_dependency 'ffi-compiler'
|
21
27
|
|
22
28
|
## [0.3.14] - 2023-02-21
|
23
29
|
|
data/ext/num4diff/CNum4Diff.c
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
static double CNum4Diff_doEulerMethod(double yi, double xi, double h, Func func);
|
7
7
|
static double CNum4Diff_doHeunMethod(double yi, double xi, double h, Func func);
|
8
8
|
static double CNum4Diff_doRungeKuttaMethod(double yi, double xi, double h, Func func);
|
9
|
-
static double CNum4Diff_doAdamsBashforthMethod(double a, double b, double
|
10
|
-
static double CNum4Diff_doAdamsMoultonMethod(double a, double b, double
|
9
|
+
static double CNum4Diff_doAdamsBashforthMethod(double a, double b, double y0, double h, Func func);
|
10
|
+
static double CNum4Diff_doAdamsMoultonMethod(double a, double b, double y0, double h, Func func);
|
11
11
|
static CNum4Diff _cNum4Diff = {
|
12
12
|
.FP_eulerMethod = CNum4Diff_doEulerMethod,
|
13
13
|
.FP_heunMethod = CNum4Diff_doHeunMethod,
|
@@ -39,19 +39,19 @@ double CNum4Diff_rungeKuttaMethod(double yi, double xi, double h, Func func)
|
|
39
39
|
|
40
40
|
return _cNum4Diff.FP_rungeKuttaMethod(yi, xi, h, func);
|
41
41
|
}
|
42
|
-
double CNum4Diff_adamsBashforthMethod(double a, double b, double
|
42
|
+
double CNum4Diff_adamsBashforthMethod(double a, double b, double y0, double h, Func func)
|
43
43
|
{
|
44
44
|
assert(func != 0);
|
45
45
|
assert(a < b);
|
46
46
|
|
47
|
-
return _cNum4Diff.FP_adamsBashforthMethod(a, b,
|
47
|
+
return _cNum4Diff.FP_adamsBashforthMethod(a, b, y0, h, func);
|
48
48
|
}
|
49
|
-
double CNum4Diff_adamsMoultonMethod(double a, double b, double
|
49
|
+
double CNum4Diff_adamsMoultonMethod(double a, double b, double y0, double h, Func func)
|
50
50
|
{
|
51
51
|
assert(func != 0);
|
52
52
|
assert(a < b);
|
53
53
|
|
54
|
-
return _cNum4Diff.FP_adamsMoultonMethod(a, b,
|
54
|
+
return _cNum4Diff.FP_adamsMoultonMethod(a, b, y0, h, func);
|
55
55
|
}
|
56
56
|
/**************************************/
|
57
57
|
/* 処理実行部 */
|
@@ -99,15 +99,15 @@ static double CNum4Diff_doRungeKuttaMethod(double yi, double xi, double h, Func
|
|
99
99
|
/*
|
100
100
|
* アダムス・バッシュフォース法(3段)
|
101
101
|
*/
|
102
|
-
static double CNum4Diff_doAdamsBashforthMethod(double a, double b, double
|
102
|
+
static double CNum4Diff_doAdamsBashforthMethod(double a, double b, double y0, double h, Func func)
|
103
103
|
{
|
104
104
|
double xi = a;
|
105
105
|
double fi;
|
106
106
|
double fi1 = 0;
|
107
107
|
double fi2 = 0;
|
108
|
-
double y =
|
108
|
+
double y = 0.0;
|
109
109
|
|
110
|
-
fi2 =
|
110
|
+
fi2 = y0;
|
111
111
|
xi = xi + h;
|
112
112
|
fi1 = CNum4Diff_rungeKuttaMethod(fi2, xi, h, func);
|
113
113
|
y = fi1;
|
@@ -122,21 +122,23 @@ static double CNum4Diff_doAdamsBashforthMethod(double a, double b, double yi, do
|
|
122
122
|
/*
|
123
123
|
* アダムス・ムルトン法(3段)
|
124
124
|
*/
|
125
|
-
static double CNum4Diff_doAdamsMoultonMethod(double a, double b, double
|
125
|
+
static double CNum4Diff_doAdamsMoultonMethod(double a, double b, double y0, double h, Func func)
|
126
126
|
{
|
127
127
|
double xi = a;
|
128
128
|
double fi;
|
129
129
|
double fi1 = 0;
|
130
130
|
double fi2 = 0;
|
131
|
-
double
|
131
|
+
double y_pred = 0.0;
|
132
|
+
double y = 0.0;
|
132
133
|
|
133
|
-
fi2 =
|
134
|
+
fi2 = y0;
|
134
135
|
xi = xi + h;
|
135
136
|
fi1 = CNum4Diff_rungeKuttaMethod(fi2, xi, h, func);
|
136
137
|
y = fi1;
|
137
138
|
for (xi = xi + h; xi < b; xi += h) {
|
138
139
|
fi = CNum4Diff_rungeKuttaMethod(fi1, xi, h, func);
|
139
|
-
|
140
|
+
y_pred = y + h * (23 * fi - 16 * fi1 + 5 * fi2) / 12.0;
|
141
|
+
y = y + h * (5 * y_pred + 8 * fi -1 * fi1) / 12.0;
|
140
142
|
fi2 = fi1;
|
141
143
|
fi1 = fi;
|
142
144
|
}
|
data/ext/num4diff/CNum4Diff.h
CHANGED
@@ -12,8 +12,8 @@ struct _CNum4Diff
|
|
12
12
|
double (*FP_eulerMethod)(double yi, double xi, double h, Func func);
|
13
13
|
double (*FP_heunMethod)(double yi, double xi, double h, Func func);
|
14
14
|
double (*FP_rungeKuttaMethod)(double yi, double xi, double h, Func func);
|
15
|
-
double (*FP_adamsBashforthMethod)(double a, double b, double
|
16
|
-
double (*FP_adamsMoultonMethod)(double a, double b, double
|
15
|
+
double (*FP_adamsBashforthMethod)(double a, double b, double y0, double h, Func func);
|
16
|
+
double (*FP_adamsMoultonMethod)(double a, double b, double y0, double h, Func func);
|
17
17
|
;
|
18
18
|
};
|
19
19
|
/**************************************/
|
@@ -25,6 +25,6 @@ struct _CNum4Diff
|
|
25
25
|
double CNum4Diff_eulerMethod(double yi, double xi, double h, Func func);
|
26
26
|
double CNum4Diff_heunMethod(double yi, double xi, double h, Func func);
|
27
27
|
double CNum4Diff_rungeKuttaMethod(double yi, double xi, double h, Func func);
|
28
|
-
double CNum4Diff_adamsBashforthMethod(double a, double b, double
|
29
|
-
double CNum4Diff_adamsMoultonMethod(double a, double b, double
|
28
|
+
double CNum4Diff_adamsBashforthMethod(double a, double b, double y0, double h, Func func);
|
29
|
+
double CNum4Diff_adamsMoultonMethod(double a, double b, double y0, double h, Func func);
|
30
30
|
#endif
|
data/lib/num4diff.rb
CHANGED
@@ -53,25 +53,25 @@ module Num4DiffLib
|
|
53
53
|
:CNum4Diff_rungeKuttaMethod, [:double, :double, :double, :f], :double
|
54
54
|
#
|
55
55
|
# アダムス・バッシュフォース法(3段)による数値計算
|
56
|
-
# @overload adamsBashforthMethod(a, b,
|
56
|
+
# @overload adamsBashforthMethod(a, b, y0, h, func)
|
57
57
|
# @param [double] a 下限値
|
58
58
|
# @param [double] b 上限値
|
59
|
-
# @param [double]
|
59
|
+
# @param [double] y0 y(x0=a)の値
|
60
60
|
# @param [double] h 刻み幅
|
61
61
|
# @param [callback] func xiに対する傾きを計算する関数
|
62
|
-
# @return [double]
|
62
|
+
# @return [double] [a,b]の積分値
|
63
63
|
#
|
64
64
|
attach_function :adamsBashforthMethod,
|
65
65
|
:CNum4Diff_adamsBashforthMethod, [:double, :double, :double, :double, :f], :double
|
66
66
|
#
|
67
67
|
# アダムス・ムルトン法(3段)による数値計算
|
68
|
-
# @overload adamsMoultonMethod(a, b,
|
68
|
+
# @overload adamsMoultonMethod(a, b, y0, xi, h, func)
|
69
69
|
# @param [double] a 下限値
|
70
70
|
# @param [double] b 上限値
|
71
|
-
# @param [double]
|
71
|
+
# @param [double] y0 y0 y(x0=a)の値
|
72
72
|
# @param [double] h 刻み幅
|
73
73
|
# @param [callback] func xiに対する傾きを計算する関数
|
74
|
-
# @return [double]
|
74
|
+
# @return [double] [a,b]の積分値
|
75
75
|
#
|
76
76
|
attach_function :adamsMoultonMethod,
|
77
77
|
:CNum4Diff_adamsMoultonMethod, [:double, :double, :double, :double, :f], :double
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: num4diff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- siranovel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi-compiler
|
@@ -68,7 +68,8 @@ homepage: http://github.com/siranovel/num4different
|
|
68
68
|
licenses:
|
69
69
|
- MIT
|
70
70
|
metadata:
|
71
|
-
changelog_uri: http://github.com/siranovel/num4different/blob/
|
71
|
+
changelog_uri: http://github.com/siranovel/num4different/blob/main/CHANGELOG.md
|
72
|
+
homepage_uri: http://github.com/siranovel/num4different
|
72
73
|
post_install_message:
|
73
74
|
rdoc_options: []
|
74
75
|
require_paths:
|