num4diff 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 459519c218ccc304f0c9faf97dc76448addcba5505e507a78d6a54544c95766c
4
- data.tar.gz: 0727aba63582a07844f6fc3d8340cea6c51ed231e4829a41620be0946a502fff
3
+ metadata.gz: fc6954bb9f3eb7e7b35429c7f4429aa60f5a998ce1934dbe79b0117ae1013a51
4
+ data.tar.gz: 3caa0e4e7b083a435b374c0739134ac583ab149f30306327783cf239896c263b
5
5
  SHA512:
6
- metadata.gz: 2b78c27839fc39912994c26f11cc1500afbdbb5239fa5cef3adcdc2eb801feb934d005ec25f8c8e5150a5a654b48083f66bc9ddcfe4af338fb7507d59d670013
7
- data.tar.gz: 2a1c335d8f477688a96a05b1288546d6acea5694e7b3c3c29804c6eb91804db0e6c6bee3db26f01d2ea61e8afec8e208c30ace67059a077ac4edb584c51ad29e
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 'rake'
20
- to add_development_dependency 'rake'
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
 
@@ -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 yi, double h, Func func);
10
- static double CNum4Diff_doAdamsMoultonMethod(double a, double b, double yi, double h, Func func);
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 yi, double h, Func func)
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, yi, h, func);
47
+ return _cNum4Diff.FP_adamsBashforthMethod(a, b, y0, h, func);
48
48
  }
49
- double CNum4Diff_adamsMoultonMethod(double a, double b, double yi, double h, Func func)
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, yi, h, func);
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 yi, double h, Func func)
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 = yi;
108
+ double y = 0.0;
109
109
 
110
- fi2 = yi;
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 yi, double h, Func func)
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 y = yi;
131
+ double y_pred = 0.0;
132
+ double y = 0.0;
132
133
 
133
- fi2 = CNum4Diff_rungeKuttaMethod(yi, xi, h, func);
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
- y = y + h * (5 * fi + 8 * fi1 -1 * fi2) / 12.0;
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
  }
@@ -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 yi, double h, Func func);
16
- double (*FP_adamsMoultonMethod)(double a, double b, double yi, double h, Func func);
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 yi, double h, Func func);
29
- double CNum4Diff_adamsMoultonMethod(double a, double b, double yi, double h, Func func);
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, yi, h, func)
56
+ # @overload adamsBashforthMethod(a, b, y0, h, func)
57
57
  # @param [double] a 下限値
58
58
  # @param [double] b 上限値
59
- # @param [double] yi xiに対するyiの値
59
+ # @param [double] y0 y(x0=a)の値
60
60
  # @param [double] h 刻み幅
61
61
  # @param [callback] func xiに対する傾きを計算する関数
62
- # @return [double] xi+hに対するyi_1の値
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, yi, xi, h, func)
68
+ # @overload adamsMoultonMethod(a, b, y0, xi, h, func)
69
69
  # @param [double] a 下限値
70
70
  # @param [double] b 上限値
71
- # @param [double] yi xiに対するyiの値
71
+ # @param [double] y0 y0 y(x0=a)の値
72
72
  # @param [double] h 刻み幅
73
73
  # @param [callback] func xiに対する傾きを計算する関数
74
- # @return [double] xi+hに対するyi_1の値
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
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-10 00:00:00.000000000 Z
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/master/CHANGELOG.md
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: