num4mechaequ 0.1.2 → 0.1.4

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/lib/num4mechaequ.rb +118 -9
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ece1c1f8ac4951ed3e9225bc0139f6a332f4ecc22d271cdcb149cd191e28840f
4
- data.tar.gz: e9579a5fe2e05b269f0e0aac9c232588bcbe2660268098087311337b694ecd08
3
+ metadata.gz: 33f7db372d5c6d97cce0dfd47d9040d10178f575bc6394b84322079d96f605e6
4
+ data.tar.gz: a4ef6a9911a6ae1654c095def96600d283bf69e73657c0f39c8fbeb879e42090
5
5
  SHA512:
6
- metadata.gz: 6c943c0d56cdb23ba471236f6e772c70f20f0bc96303d9a3138ce7247e27c4ad48a52e63047ad055a2fb03522bdf99eeed6bc4b09b3d104ce19a5276046a8656
7
- data.tar.gz: 2428c482848f27714fe833dd741347aa30e29f37191faecf35984a28bdab2c38a4c96787a4d1e7469afb94d927792322570769775bb20c44de330800c250cd7a
6
+ metadata.gz: 014cabe8283d052239d19853b1591e2e981b2e1cc7c97a98d58d4d47439fc26393ec7f991d8c99628a8a5d448e6f86aa735b515ea5a40c816d339804497cb49b
7
+ data.tar.gz: de07a537f9ec64ee9046a6c84e758b3949916bc679fb851711ec00d01850b442bb53a6a46a85448cf62d3cb85c54002d4ce4fb6667b002828429f6a61d37c2cf
data/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.1.4] - 2023-10-18
6
+
7
+ ### add
8
+ - add sample of yardoc
9
+
10
+ ## [0.1.3] - 2022-07-20
11
+
12
+ ### Added
13
+ - add function of DHM
14
+ - add function of forcedOscillation
15
+
5
16
  ## [0.1.2] - 2022-07-13
6
17
 
7
18
  ### Added
data/lib/num4mechaequ.rb CHANGED
@@ -7,8 +7,10 @@ module Num4MechaEquLib
7
7
  @g = 9.80665 # 重力加速度(m/s2)
8
8
  @dt = 0.001 # 時間刻み
9
9
  @w = 0.0
10
+ @l = 0.0
11
+ @ft = 0.0 # 外力
10
12
  # 単振動
11
- @springFunc = Proc.new do | n, yi |
13
+ @SHMFunc = Proc.new do | n, yi |
12
14
  f = []
13
15
  f[0] = yi[1] # hの傾き値
14
16
  f[1] = - @w * @w * yi[0] # vの傾き値
@@ -18,7 +20,7 @@ module Num4MechaEquLib
18
20
  @motionFunc = Proc.new do | n, yi |
19
21
  f = []
20
22
  f[0] = yi[1] # hの傾き値
21
- f[1] = - @g + @w * yi[1] # vの傾き値
23
+ f[1] = @w * yi[1] - @g # vの傾き値
22
24
  next f
23
25
  end
24
26
  # 放物運動
@@ -34,10 +36,24 @@ module Num4MechaEquLib
34
36
  f[1] = - @g # vの傾き値
35
37
  next f
36
38
  end
39
+ # 減衰振動
40
+ @DHMFunc = Proc.new do | n, yi |
41
+ f = []
42
+ f[0] = yi[1]
43
+ f[1] = - @l * yi[1] - @w * @w * yi[0]
44
+ next f
45
+ end
46
+ # 強制振動
47
+ @forcedFunc = Proc.new do | n, yi |
48
+ f = []
49
+ f[0] = yi[1]
50
+ f[1] = - @w * @w * yi[0] + @ft
51
+ next f
52
+ end
37
53
  class << self
38
54
 
39
- #
40
55
  # 単振動(simple harmonic motion)
56
+ #
41
57
  # @overload SHM(m, k, t, h0, v0)
42
58
  # @param [double] m 重りの重さ
43
59
  # @param [double] k バネ定数
@@ -45,6 +61,12 @@ module Num4MechaEquLib
45
61
  # @param [double] h0 初期位置値
46
62
  # @param [double] v0 初期速度
47
63
  # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
64
+ # @example
65
+ # m = 1.0
66
+ # k = 1.0
67
+ # h0 = 1.0
68
+ # v0 = 0.0
69
+ # yi_1 = Num4MechaEquLib.SHM(m, k, 2, h0, v0)
48
70
  #
49
71
  def SHM(m, k, t, h0, v0)
50
72
  @w = Math.sqrt((k / m))
@@ -52,15 +74,15 @@ module Num4MechaEquLib
52
74
  yi_1 = []
53
75
  yi = [h0, v0]
54
76
  0.step(t, @dt) { |x|
55
- yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @dt, @springFunc)
77
+ yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @dt, @SHMFunc)
56
78
  hvt.push({"t" => x,
57
79
  "h" => yi_1[0], "v" => m * yi_1[1]})
58
80
  yi = yi_1
59
81
  }
60
82
  return hvt
61
83
  end
62
- #
63
84
  # 自由落下による運動方程式(空気抵抗有り)
85
+ #
64
86
  # @overload freeFallMotion(m, c, t, h0, v0)
65
87
  # @param [double] m 重りの重さ
66
88
  # @param [double] c 空気抵抗
@@ -68,6 +90,12 @@ module Num4MechaEquLib
68
90
  # @param [double] h0 初期位置値
69
91
  # @param [double] v0 初期速度
70
92
  # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
93
+ # @example
94
+ # m = 1.0
95
+ # c = 0.0
96
+ # h0 = 1.0
97
+ # v0 = 0.0
98
+ # yi_1 = Num4MechaEquLib.freeFallMotion(m, c, 2, h0, v0)
71
99
  #
72
100
  def freeFallMotion(m, c, t, h0, v0)
73
101
  @w = c / m
@@ -83,8 +111,8 @@ module Num4MechaEquLib
83
111
  return hvt
84
112
 
85
113
  end
86
- #
87
114
  # 放物運動
115
+ #
88
116
  # @overload projectileMotion(m, theta, t, h0, v0)
89
117
  # @param [double] m 重りの重さ
90
118
  # @param [double] theta 角度(ラジアン指定)
@@ -92,6 +120,10 @@ module Num4MechaEquLib
92
120
  # @param [double] h0 初期位置値
93
121
  # @param [double] v0 初期速度
94
122
  # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
123
+ # @example
124
+ # m = 1.0
125
+ # theta = 5 * Math::PI / 180.0
126
+ # yi_1 = Num4MechaEquLib.projectileMotion(m, theta, 2, 0.0, 3.0)
95
127
  #
96
128
  def projectileMotion(m, theta, t, h0, v0)
97
129
  hvt = []
@@ -112,14 +144,20 @@ module Num4MechaEquLib
112
144
  }
113
145
  return hvt
114
146
  end
115
- #
116
147
  # 等速円運動(Uniform Circular motion)
148
+ #
117
149
  # @overload UCM(m, r, w, t)
118
150
  # @param [double] m 重りの重さ
119
151
  # @param [double] r 半径
120
152
  # @param [double] w 角速度
121
153
  # @param [double] t 時間
122
154
  # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
155
+ # @example
156
+ # m = 1.0
157
+ # r = 3
158
+ # w = 2
159
+ # yi_1 = Num4MechaEquLib.UCM(m, r, w, 2)
160
+ #
123
161
  def UCM(m, r, w, t)
124
162
  hvt = []
125
163
  h = []
@@ -138,8 +176,8 @@ module Num4MechaEquLib
138
176
  }
139
177
  return hvt
140
178
  end
141
- #
142
179
  # 振り子運動
180
+ #
143
181
  # @overload pendulumMotion(m, l, t, h0, v0)
144
182
  # @param [double] m 重りの重さ
145
183
  # @param [double] l 糸の長さ
@@ -147,9 +185,80 @@ module Num4MechaEquLib
147
185
  # @param [double] h0 初期位置値
148
186
  # @param [double] v0 初期速度
149
187
  # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
188
+ # @example
189
+ # m = 1.0
190
+ # l = 10
191
+ # h0 = 1.0
192
+ # v0 = 0.0
193
+ # yi_1 = Num4MechaEquLib.pendulumMotion(m, l, 2, h0, v0)
194
+ #
150
195
  def pendulumMotion(m, l, t, h0, v0)
151
196
  return SHM(m, l, t, h0, v0)
152
- end
197
+ end
198
+ # 減衰振動(damped harmonic motion)
199
+ #
200
+ # @overload DHM(m, k, b, t, h0, v0)
201
+ # @param [double] m 重りの重さ
202
+ # @param [double] k 比例定数
203
+ # @param [double] b 抵抗力の比例定数
204
+ # @param [double] t 時間
205
+ # @param [double] h0 初期位置値
206
+ # @param [double] v0 初期速度
207
+ # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
208
+ # @example
209
+ # m = 1.0
210
+ # k = 1.0
211
+ # h0 = 1.0
212
+ # v0 = 0.0
213
+ # yi_1 = Num4MechaEquLib.DHM(m, k, 0.6, 2, h0, v0)
214
+ #
215
+ def DHM(m, k, b, t, h0, v0)
216
+ @l = 2 * m * b
217
+ @w = Math.sqrt((k / m))
218
+ hvt = []
219
+ yi_1 = []
220
+ yi = [h0, v0]
221
+ 0.step(t, @dt) { |x|
222
+ yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @dt, @DHMFunc)
223
+ hvt.push({"t" => x,
224
+ "h" => yi_1[0], "v" => m * yi_1[1]})
225
+ yi = yi_1
226
+ }
227
+ return hvt
228
+ end
229
+ # 強制振動
230
+ #
231
+ # @overload forcedOscillation(m, k, w0, w, t, h0, v0)
232
+ # @param [double] m 重りの重さ
233
+ # @param [double] k 比例定数
234
+ # @param [double] w0 振動系の固有角振動
235
+ # @param [double] w 外力の角振動数
236
+ # @param [double] t 時間
237
+ # @param [double] h0 初期位置値
238
+ # @param [double] v0 初期速度
239
+ # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
240
+ # @example
241
+ # m = 1.0
242
+ # k = 1.0
243
+ # f0 = 2.5
244
+ # h0 = 1.0
245
+ # v0 = 0.0
246
+ # yi_1 = Num4MechaEquLib.forcedOscillation(m, k, 0.6, f0, 2, h0, v0)
247
+ #
248
+ def forcedOscillation(m, k, w0, w, t, h0, v0)
249
+ @w = Math.sqrt((k / m))
250
+ hvt = []
251
+ yi_1 = []
252
+ yi = [h0, v0]
253
+ 0.step(t, @dt) { |x|
254
+ @ft = w / m * Math.cos(w * x)
255
+ yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @dt, @forcedFunc)
256
+ hvt.push({"t" => x,
257
+ "h" => yi_1[0], "v" => m * yi_1[1]})
258
+ yi = yi_1
259
+ }
260
+ return hvt
261
+ end
153
262
  end
154
263
  end
155
264
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: num4mechaequ
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - siranovel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-10 00:00:00.000000000 Z
11
+ date: 2023-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: num4simdiff
@@ -45,7 +45,7 @@ licenses:
45
45
  - MIT
46
46
  metadata:
47
47
  changelog_uri: http://github.com/siranovel/num4mechaequation/blob/main/CHANGELOG.md
48
- documentation_uri: https://rubydoc.info/gems/num4mechaequ/0.1.2
48
+ documentation_uri: https://rubydoc.info/gems/num4mechaequ/0.1.4
49
49
  homepage_uri: http://github.com/siranovel/num4mechaequation
50
50
  wiki_uri: https://github.com/siranovel/mydocs/tree/main/num4phyequation/num4mechaequation
51
51
  post_install_message: