num4mechaequ 0.0.3 → 0.1.1

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 +13 -0
  3. data/lib/num4mechaequ.rb +63 -15
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa1f15732e36a08d7b119cc9d638d27ea13182fd1f4a36bac3b4e823996fcffd
4
- data.tar.gz: 486c9ee96ffdf6db1a83e23f68bc146b7ea7af7b7298ec13215b71f06078cb91
3
+ metadata.gz: 77ffa279b2f10648a0cc852d08f6cf23db176f385bc31b8809540a38a2f316ad
4
+ data.tar.gz: 59f69ea0ee861cc39067f4863191205d756e552d35d8af0f039ce94628a33166
5
5
  SHA512:
6
- metadata.gz: 4e6936f8107a121a98a2d3f010a99219b8a09bb1f1d769b748300953a42a9d4a6f9780f68a33a838122a88e94a0e962c25d96b87675b15abcf025f3385e09af1
7
- data.tar.gz: d1886b86214b6670ce2c5698b1ca4f639a59f5d7cc884be83385b302425d40da6640e57637a47dbe35edaa1a126cdc23da6cb59bcb697ee2499d705d4bd9c88b
6
+ metadata.gz: aaf91e9df68349bd5c20708a54d0e9d97e312fc904b03ed37076b864d93dc55ec3477e34c872005808df46f176c0988c7421aa54e86879bb27772ef79fc5afcb
7
+ data.tar.gz: 4a0ef2f3a5ff4fe31a52af87aceba3c593416d881346b3b087bf6a92c75f45f832d9a792aa5d02c2ae6d3a1292491e152892a7217e4cf9e2816020e307812d9e
data/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.1.1] - 2022-07-10
6
+
7
+ ### Changed
8
+ - change of function name
9
+ * motiEqu4freeFallEqu -> freeFallMotion
10
+ * springFreqEqu -> SHM
11
+
12
+ ### Fixed
13
+ - fix appointed time. (from 0 to n)
14
+
15
+ ### Added
16
+ - add function of projectileMotion
17
+
5
18
  ## [0.0.3] - 2022-07-03
6
19
 
7
20
  ### Changed
data/lib/num4mechaequ.rb CHANGED
@@ -4,39 +4,55 @@ require 'num4simdiff'
4
4
  # 数値計算による力学方程式の解法するライブラリ
5
5
  #
6
6
  module Num4MechaEquLib
7
- @g = 9.80665 # 重力加速度
8
- @t = 0.001 # 時間刻み
7
+ @g = 9.80665 # 重力加速度(m/s2)
8
+ @dt = 0.001 # 時間刻み
9
9
  @w = 0.0
10
+ # 単振動
10
11
  @springFunc = Proc.new do | n, yi |
11
12
  f = []
12
13
  f[0] = yi[1] # hの傾き値
13
- f[1] = @w * yi[0] - @g# vの傾き値
14
+ f[1] = - @w * @w * yi[0] # vの傾き値
14
15
  next f
15
16
  end
17
+ # 自由落下運動
16
18
  @motionFunc = Proc.new do | n, yi |
17
19
  f = []
18
20
  f[0] = yi[1] # hの傾き値
19
- f[1] = - @g # vの傾き値
21
+ f[1] = - @g + @w * yi[1] # vの傾き値
22
+ next f
23
+ end
24
+ # 放物運動
25
+ @projectileXFunc = Proc.new do | n, yi |
26
+ f = []
27
+ f[0] = yi[1] # hの傾き値
28
+ f[1] = 0 # vの傾き値
29
+ next f
30
+ end
31
+ @projectileYFunc = Proc.new do | n, yi |
32
+ f = []
33
+ f[0] = yi[1] # hの傾き値
34
+ f[1] = - @g # vの傾き値
20
35
  next f
21
36
  end
22
37
  class << self
23
38
 
24
39
  #
25
- # バネの固有振動
26
- # @overload springFreqEqu(k, m, h0, v0)
40
+ # 単振動(simple harmonic motion)
41
+ # @overload SHM(k, m, t, h0, v0)
27
42
  # @param [double] k バネ定数
28
43
  # @param [double] m 重りの重さ
44
+ # @param [double] t 時間
29
45
  # @param [double] h0 初期位置値
30
46
  # @param [double] v0 初期速度
31
- # @return [hash[]] 0秒から1秒までの位置(h)と速度(v)の値
47
+ # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
32
48
  #
33
- def springFreqEqu(k, m, h0, v0)
49
+ def SHM(k, m, t, h0, v0)
34
50
  @w = Math.sqrt((k / m))
35
51
  hvt = []
36
52
  yi_1 = []
37
53
  yi = [h0, v0]
38
- 0.step(1, @t) { |x|
39
- yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @t, @springFunc)
54
+ 0.step(t, @dt) { |x|
55
+ yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @dt, @springFunc)
40
56
  hvt.push({"t" => x,
41
57
  "h" => yi_1[0], "v" => m * yi_1[1]})
42
58
  yi = yi_1
@@ -45,18 +61,21 @@ module Num4MechaEquLib
45
61
  end
46
62
  #
47
63
  # 自由落下による運動方程式(空気抵抗有り)
48
- # @overload motiEqu4freeFallEqu(m, h0, v0)
64
+ # @overload freeFallMotion(m, c, t, h0, v0)
49
65
  # @param [double] m 重りの重さ
66
+ # @param [double] c 空気抵抗
67
+ # @param [double] t 時間
50
68
  # @param [double] h0 初期位置値
51
69
  # @param [double] v0 初期速度
52
- # @return [hash[]] 0秒から1秒までの位置(h)と速度(v)の値
70
+ # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
53
71
  #
54
- def motiEqu4freeFallEqu(m, h0, v0)
72
+ def freeFallMotion(m, c, t, h0, v0)
73
+ @w = c / m
55
74
  hvt = []
56
75
  yi_1 = []
57
76
  yi = [h0, v0]
58
- 0.step(1, @t) { |x|
59
- yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @t, @motionFunc)
77
+ 0.step(t, @dt) { |x|
78
+ yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @dt, @motionFunc)
60
79
  hvt.push({"t" => x,
61
80
  "h" => yi_1[0], "v" => m * yi_1[1]})
62
81
  yi = yi_1
@@ -64,6 +83,35 @@ module Num4MechaEquLib
64
83
  return hvt
65
84
 
66
85
  end
86
+ #
87
+ # 放物運動
88
+ # @overload projectileMotion(m, theta, t, h0, v0)
89
+ # @param [double] m 重りの重さ
90
+ # @param [double] theta 角度(ラジアン指定)
91
+ # @param [double] t 時間
92
+ # @param [double] h0 初期位置値
93
+ # @param [double] v0 初期速度
94
+ # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
95
+ #
96
+ def projectileMotion(m, theta, t, h0, v0)
97
+ hvt = []
98
+ yxi_1 = []
99
+ yyi_1 = []
100
+ yxi = [h0, v0 * Math.cos(theta)]
101
+ yyi = [h0, v0 * Math.sin(theta)]
102
+ 0.step(t, @dt) { |x|
103
+ yxi_1 = Num4SimDiffLib.rungeKuttaMethod(yxi, @dt, @projectileXFunc)
104
+ yyi_1 = Num4SimDiffLib.rungeKuttaMethod(yyi, @dt, @projectileYFunc)
105
+ hvt.push({"t" => x,
106
+ "x" => {"h" => yxi_1[0], "v" => m * yxi_1[1]},
107
+ "y" => {"h" => yyi_1[0], "v" => m * yyi_1[1]},
108
+ }
109
+ )
110
+ yxi = yxi_1
111
+ yyi = yyi_1
112
+ }
113
+ return hvt
114
+ end
67
115
  end
68
116
  end
69
117
 
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.0.3
4
+ version: 0.1.1
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-03 00:00:00.000000000 Z
11
+ date: 2023-07-10 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.0.3
48
+ documentation_uri: https://rubydoc.info/gems/num4mechaequ/0.1.1
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: