非專業立體機動裝飾研究報告
- 本篇是看過【閒聊】人體承受立體機動裝置的加速度之後,覺得此篇有趣,會略有不足,所以作出一次推論和估算
- 純為興趣之作,切勿當真
- 本人不負責任何因計算或推導錯誤所引起或產生之任何意外。
2013年7月18日
近來大熱之「進擊之巨人」,相信不少人有看過。對於其「蜘蛛俠」式的「立體機動裝置」來移動的設定,相信亦有不少人趨之若鶩,想來說一說,好,本文就用我現學現查現賣的物理和數學知識,去分析「立體機動裝置」的真相。
艾倫的行進方式
巨人們的可怕,相信經歷過多次入侵的艾倫就最清楚不過。「立體機動裝置」最大的用途,是用來對付身高比人類高很多,但弱點只有後頸一小部分的巨人們。為了補足人體的身高不足,迫不得以用繩(鋼纜?)盪來盪去繞到巨人後頸位置,作出致命一擊。
但巨人們極難對付,每次外查的調查兵團只有10%的人可以回來。所以實際操作上,「立體機動裝置」最大的用途,應當是繼馬匹之外,最有效的保命逃跑工具。

根據維基百科所示:

假設繩索是無重量,不拉長,一直綳緊;
Motion為2D,鐘擺行程為一弧而非橘圖形;
沒有能量流失,忽略空氣阻力和阻力。
則,可得出一條微分方程:
其中g為地球重力加速度: ,為繩索長度,為角位移,單位是radians(此為變數,隨時間而變,應為,為初始角度(即一開始放手時的角度)。此為一微分方程,不能輕易求解。
已知鐘擺會由位能-->動能-->位能
位能轉變:
動能轉變:
因為假設沒有能量流失,所以,在每一個角位移(),動能差=位能差
轉成用角位移來表示則為:
(一般中學所學應為: ,等公式來表示。但實際上,因現在角速率不是常數,所以也不是常數,應用表示。)
如圖所示,
又,
所以,
代入上式:
中學有學過鐘擺原理,而鐘擺週期為:
但上式是基於為一細角度,一般為以內。而實際應用以下方法求得:
將上式上下倒轉:
擺動一個周期,角度變化應為:
可以簡化為:
所以,角度由時間應為上式的積分:
好,這條不是人類能理解的積分式,所以我直接複製維基百科的答案:
其中,為complete elliptic integral of the first kind(不要問我是甚麼……)
所以,用人類的語言來說,
而艾倫逃走方向等於巨人前進方向(即水平方向),為簡單計算水平方向的前進速度,用每半個鞦韆水平方向的位移,除半個周期:

水平方向的位移總量有:
所以水平方向逃跑速度:

根據書中所載,60m級數的巨人只出現過兩次(註: 寫這篇研究時,漫畫內容才進入到艾倫奪還戰)。就假設一般都是和巨人化的艾倫一樣都是15m高的級數。那繩索長度按理就不會準備得太長,而且據書中和動畫所見,都是約4-5層樓高。
就假設繩索長 (約4層樓高),為地球重力加速度。
初始角度的值應在以內,因為大於,擺盪就不會以當初假設繩子一直都是拉直來進行擺盪。
將公式輸入wolframalpha.com (原來維基百科和wolfram對於K(k)的定義不一樣,差了一個二次方….各位如想代入請注意),得出


上圖橫軸為(radians),直軸為艾倫每盪一次的水平平均速度()。
==由此得出,當,得出最大值。==

即,艾倫最佳的行進方法應為: 向前方傾角處發射繩索,之後經過最低處感受最高速度(這個純粹用位能完全轉成動能去計算,中學生應該計得出來,所以不作演示),再返回原來高度,這時水平方向行進了用了時間,瞬時速率為,之後再發射下一次繩索。
但話說回來==… 好慢呀…==
水平前進的平均速度最大值只有,用這個速度跑賽跑要秒才能完成。跟一般小學女生的平均時間差不多。就算是最高速度,也不比單車來得快…..難怪沒有瓦斯的部隊注定成為巨人的點心。

怎樣才能保命?
那到底要用怎樣的方法來前進才可以保命呢?在還沒研究氣動裝置之前,就讓我試用所有方法去幫助艾倫逃跑吧。
首先得推測逃跑的速度。在漫畫中所見,馬匹是繼「立體機動裝置」外唯一能逃跑的工具。那就是說,艾倫的逃跑速度至少要跟馬匹一樣。上wolframalpha.com一查,原來馬匹陸上行走最高速度是,也就是說。艾倫要保持著這個速度,就不能只夠用上述的方法盪來盪去。從動畫得到靈感(話說我在動畫還未推出的差不多一年前就已經在看漫畫版),在第六、 第七集動畫中十分活躍的三笠,除了靠著繩索在空中盪之外,有時還會甩開繩索騰空翻滾。

那原來艾倫他們的行進方式應為這樣:

根據維基百科對拋體運動(Projectile motion)所示:

假設以拋一物件,其投射角度為,則:
其中和為單位向量,即水平和垂直的方向。
那麼,水平和垂直的加速度則是:
而水平和垂直的位移則是:
的值越少,則水平方向的速度越快,但與此同時因高度不夠,很快便會墬地;的值越大,則騰空時間多了,但水平移動則不遠,只會原地踏步。
假設最遠的水平距離為, 而其對應的騰空時間為,為物件再次墬地時,為。
這時候,最遠水平距離為:
當, 有最大值,所以:
所以投射角應為。

如上圖,拋體的拋出角度為,而拋體運動的水平的速度為馬匹陸上行走最高速度是,也就是說。
如果動能和勢能的轉換中能量沒有流失,那麼
如果沒有了氣動裝置,則艾倫就需要以(即)來助跑起跳,或者是從(約39層樓高)處墮下才能達到此初速。那麼真的非有氣動不可吧!
先不論氣動裝置如何幫忙艾倫達到這速度,現在先來研究一下在這情況下人體所受的繩索拉力。

如之前的計算,
位能轉變:
動能轉變:
因為假設沒有能量流失,所以,在每一個角位移(),
轉成用角位移來表示則為:
代入之後得出:
為了解出這條方程,我嘗試用Matlab去計算。在網上一找,找到一條程式碼。它透過Matlab的ODE函數,找出在每個時間點的數值。
首先,先試試代入之前得出的結論,來驗證一下先前的計算結果。
代入初始角位移,初始角速度為。

在上圖,x軸為時間,單位是s,而y軸分別為角位移和角速度。先看看紅線,當時,,即角度由(即),共用了,與當初計算的相符。而這個時候,藍色的角速度線得出角速度接近。而最高速度方面,當角位移(紅色線)為時得出角速度為,乘上繩長即速度值為,亦與之前計算的符合。
好,現在來嘗試一下如果代入艾倫作拋體運動的情況。這時候艾倫水平前進的速度為馬匹在陸上行走的最高速度,所以拋體運動和圓周運動的初始速度都為(即角速度),而圓周運動的初始角度為(即)。

由上圖得出,在這個初速下,由去到只要,而角速度則沒甚麼變化,都是保持在至之間(即保持在至)。這個很重要!因速度變化相對來說不大,之後的計算我就大膽的設其為均速()圓周運動去計算,省卻很多複雜的計算。
順帶一提,在這情況下,如果艾倫不在時放手拋出自己,任由自己轉動,那麼在忽略空氣阻力和摩擦力下,艾倫會轉動392圈,共花24.9分鐘才能進入預期的周期性鐘擺運動。
省卻麻煩的鐘擺運動,簡化其為均速圓周運動去計算的話,那艾倫所受到繩索的拉力加速度為:
假設艾倫質量為,那拉著艾倫的繩索拉力就有:
至底有6400牛頓有多大的力?**想像一下,把艾倫的頭、手和腳牢牢的固定在天花板上,之後在艾倫腰間繫上一隻乳牛…**我不敢說身體會斷開兩半,但我想必死無異吧…(順帶一提,【閒聊】人體承受立體機動裝置的加速度中,對於加速度的計算公式是有誤的,非均速圓周運動不能用去計算。)
待續…
##後記
寫這篇文章時,受到了空想科學系列的影響,那一段時間,都會十分科學地去計算要用多少時間才能把電熱水爐的水加熱、太陽透過窗戶,會為我房間上升多少度等問題。而這一篇則是啟發自【閒聊】人體承受立體機動裝置的加速度的研究,一開始是想驗算一下,但越看則越不對勁,覺得他有些地方錯了,於是用了一星期時間計算、編程和撰寫這文章,也算得上是有趣的回憶。
附錄
由於Matlab是要付費的,已經很久沒有使用過Matlab了,所以改用現在較為流行又免費的Python來完成。
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# Data of the problem.
g = 9.81 # gravitational acceleration
l = 12 # length of the pendulum (distance of the center of gravity from the suspension pivot)
# The second order equation of motion (ODE) was converted to first order form.
# This is the right hand side function. y[0] = angle, y[1] = angular velocity.
def f(t, y):
return [y[1], -g/l*np.sin(y[0])]
thetadot0 = [-24/np.cos(np.pi/4)/12] # initial angular velocity
for td0 in thetadot0:
Theta0 = [np.pi/4, td0] # initial condition: hanging down, with nonzero initial velocity
# Solve the ODE
sol = solve_ivp(f, [0, 2], Theta0, method='RK45', t_eval=np.linspace(0, 2, 1000))
# Plot the solution
plt.figure()
plt.plot(sol.t, sol.y[0, :], linewidth=2, color='red', marker='none', label='angle')
plt.plot(sol.t, sol.y[1, :], linewidth=2, color='blue', marker='none', label='angular velocity')
plt.xlabel('Time')
plt.ylabel('Solution')
plt.title('Initial angular velocity = {}'.format(td0))
plt.grid(True)
plt.legend()
plt.show()