プロが教える店舗&オフィスのセキュリティ対策術

私は中学校しかでておらず、
趣味で数学を、勉強しているのですが、

X=1/2*加速度*時間^2 +初期速度*時間+
初期位置 

の時間の事なのですが、

もし、運動の途中で、
反対方向に加速したとすれば、マイナスの加速で速度は落ちるはずなのに、
時間は増えつづけているので、
速度は上がるばかりになると思うのですが
実際はどうなるのでしょうか。

簡単なプログラムでキャラクターの移動に
加速度の公式を使ったらやはり、加速の仕方
はどんどんあがっていきました。
往復の動きをして反対方向に変わる時は、
速度は減少しますが、その後の加速のしかたが
すごく増えているようです。

調べようとしても、数学や物理はおくが
深すぎて、なかなか、疑問が解決せず、
質問させていただきました。

何かご存知の方がおりましたら、
是非、教えて下さい。

よろしくお願いします。

A 回答 (13件中1~10件)

>X=1/2*加速度*時間^2 +初期速度*時間+初期位置 



の他に速度に関する式があるのにお気づきになりませんでしたか

速度=加速度*時間+初期速度 です

ご指摘の様に、加速度がマイナスならば 速度は時間ともに減少し、そのうちマイナスになります(速度や加速度には方向がありますから、マイナスの速度と言うのは逆方向に向いた速度です)
    • good
    • 0

その場合は加速度がマイナスになります。



ボールを垂直に投げ上げる場合がまさにこのケースにあたり、上むきをzの正方向とすると重力による加速度は-gとなり、初速をv0とすると、

z = z0 + v0 * t - (1/2)g * t^2
v = v0 -g * t

で、時刻がt=(v0/g)の時に速度が0となって頂点に達し、そのあとはv<0で、ボールはそのまま落ちてきます。
    • good
    • 0

点Aから点Bまでの往復運動 1回 について考えて見ます。



Aから出発したら、等加速運動によって、速度を上げます。
AとBの中間地点で、それまでの加速度と同じ加速度で、符号が逆の加速度で加速(つまり減速)します。
B点で速度0になり、移動方向も反転して、Aに向かって移動します。

また、AとBの中間点で、さらに逆向きに加速し(減速)、A点で速度0になった時、加速を終了します。

これは、単純なモデルですが、実際には、人や車などの移動はこのような加速を行っていませんので、この通りに動かしたら、ちょっと奇妙に感じられるかもしれません。

ボールを上に投げた時に似ていますが、この場合は、落ちてくるとき、地面直前の速度は、打ち上げ速度まで加速されていますが、地面に衝突した瞬間、無限大の加速度で減速され、瞬間的に速度0になるところが違います。

実際に人や車が停止するときは、加速を徐々に弱くしながら停止しているため、もっと複雑な計算を行わないと、停止したい点で止まる事ができません。
    • good
    • 0
この回答へのお礼

詳しい解答ありがとうございます。
私が不思議に思うのは、式の中に含まれている
時間の事なのです。

速度や加速度の+-はわかるのですが、
時間は増える一方なので
時間を掛けると答えの絶対値はどんどん
大きくなってしまうとおもうのです。

往復すればする程、速度はあがりやすく
なるとおもうのですが、それが疑問
だったのです。

言葉が足りず申し訳ありませんでした。

お礼日時:2006/01/12 00:28

 


 
>>  位置 X = (1/2)at^2+Vot+Xo
速度や加速度の+-はわかるが、時間は増える一方なので時間を掛けると答えの絶対値はどんどん大きくなってしまうとおもう、
簡単なプログラムでキャラクターの移動にこの公式を使ったらやはり、動きがどんどん速くなって何か変、<<

 という質問だと受け取っていいでしょうか?その前提でお答えします。



キャラを動かすプログラムに
  X = (1/2)at^2+Vot+Xo
の式そのままは使えません。この式が出てくる元を使うのです。そう作ったプログラムを繰り返し動かすと、キャラの位置が上式になる、という意味です。


そのプログラムは、

(1)
まず初期条件を設定
 位置の変数 X;
値をゼロにするとか、画面の特定のスタート位置の座標を代入ですね。これが上式の Xo です。
 速度の変数 V;
値をゼロとか、初速の値を入れます。これが上式の Vo です。
 加速度の変数 a;
これもゼロとか初期値ですね。

(2)
キャラを動かすには、1画面時間に一回実行させますよね。この時間をtとします。例えば 0.01秒とか、非常に小さくて目には分らない短い時間です。
毎回やる計算は、
 X に V*t を足し込む。つまり X=X+V*t
 V に a*t を足し込む。つまり V=V+a*t
 a を 必要に応じて新しい値に変える。例えばジョイスティックから読み込むとか、数値テーブル(表)から順々に値を拾う。
以上です。
毎画面ごとに(2)を実行する、つまり延々と繰り返す。



 こんな構成でしょうか? 「往復させる」というのは具体的にどうやってますか?
 
 
    • good
    • 0
この回答へのお礼

そのままは使えないんですね

最初、この式の説明を見たときに 
初期位置と初期速度さえわかれば
T秒後の位置と速度がわかると
書いてあったので、プログラムには

V=V+A*T
X=X+(1/2)*A*T^2+V*T
としていました。


キーボードの矢印キーの右左で加速度変数Aの
+-を変更しています。

ボタンを押さない場合のAの値は0になります。

時間はT=T+0.01としており、
左右どちらかに加速した時のみ
カウントしています。
時間の進み方は時計の秒針とあまりかわりません。

動かしてみたところ、加速のしかたもうまく
いっていましたし、矢印キーで反対に加速すると
じょじょに速度は減少し0となり反対方向へ加速していきます。
キーボードを離すと加速度は0なので等速直線運動
になってます。

抵抗が無いの時の慣性力、加速、減速の様子はうまく
表現できていると思いますし、矢印キー操作で
左右自由に行き来できるのですが、
時間Tの値だけは動くほどに増え続けるので
T=1で速度0からの速度上昇とT=50の時では
同じ速度まで上昇するのにかかる時間は
後者のほうが短くなっていました

プログラムのイメージとしては
キャラを宇宙船とみたてた時
左右のジェット推進による一直線上の運動だと
思います(Aの絶対値は一定)

ちなみにこの式で重力加速度を使った
上から下への移動では物がポトリと落ちる様子
がよくできました。

ご紹介いただいた方法でやってみます。
ありがとうございました。

お礼日時:2006/01/12 19:55

>速度や加速度の+-はわかるのですが、時間は増える一方なので時間を掛けると答えの絶対値はどんどん大きくなってしまうとおもうのです。



加速度が一定ならば、無限に速度が上昇します(相対性理論からの制約はありますが)

往復運動をする場合、加速度が時間や位置や速度によって変化します
振り子の場合、錘の位置によって加速度が変化します、(正確には加速度の速度の分力、空気の抵抗も考えれば速度によっても変化します)
加速度が変化すると速度の変化が変化します(ちょっと判りにくいですね)

加速度は変化しないと思い込んでいませんか(加速度はいろいろの要因から与えられます、その中には一定のものも変化するものもあります)
    • good
    • 0
この回答へのお礼

往復運動は等加速度運動ではなかったんですね
F=MAなので
加える力を一定にして抵抗や摩擦などが
なければ加速度は一定だと思っていました。

もっとよく調べてみようと思います

ありがとうございました。

お礼日時:2006/01/12 20:15

in #3 comment



>時間を掛けると答えの絶対値はどんどん大きくなってしまうとおもうのです。

#2で書きましたとおり、初速の向きと加速度の向きが逆ならば、『答えの絶対値』は一旦小さくなり、ゼロを通過して速度が逆向きになります。それ以後は、加速度が一定であるかぎり『答えの絶対値はどんどん大きく』なりますが、現実には何かにぶつかってとまります。

>往復すればする程、速度はあがりやすく
>なるとおもうのですが、それが疑問
>だったのです。

ここで言う『往復』がどういう過程かよくつかめませんが、一次元運動で、ある時刻(たとえば真上にジャンプしたキャラクターが地面に着地した時刻)で“むりやり”キャラクターの移動方向を変える(再び真上にジャンプする)のだとしたら、その時刻を時間原点にする必要があります。その時刻をt1とすると、

z' = z'0 + v'0 * (t-t1) - (1/2)g * (t-t1)^2
v' = v'0 -g * (t-t1)

です。加速度g以外は変わる可能性がありますから'をつけました。
    • good
    • 0
この回答へのお礼

たびたび申し訳ありません。

おっしゃる通りまちがいなかったのですが
私の公式の使い方が間違っていたため
誤解していました。

加速し続ければ、速度上昇のしかたは
はやくなるのはあたりまえでした。

失礼致しました。

お礼日時:2006/01/13 17:53

 


 
>> 
V = V+A*t
X = X+(1/2)*A*t^2+V*t
T = T+0.01
キーボードの矢印キー右左で加速度Aの+-を変更しています。
キーを押さない場合Aの値は0になります。
時間左右どちらかに加速した時のみカウントしています。
キーボードを離すと加速度は0なので等速直線運動になってます。 <<



 なるほど。加速度が二重に足し込まれてますね。(Xの式にです。) これではTが増すと檄速く動いてしまいますね。 Aは、先にVの式に足し込まれてますよね、その結果のVを使ってXを計算してますから、そこにAは潜り込んで参加してるのです。 だから (1/2)*A*t^2 の項が余計でした。(*下記余談)




時間の足し込みは要りません、0.01秒一定のままで計算を繰り返します。加減速キーを押す押さないに関係なく、常に、毎画面に1回、計算を続けましょう。



 矢印キー上下でAの数値を増減、とかもやるんですよね、たぶん。DELキーでゼロにリセットとか。



画面のどこかにA,V,Xの数値を表示しておけばどうでしょう。

Xはキャラの位置そのもので表示されてますから、
AとVも、値を画面座標にして、何かキャラを1個ずつ表示させると、運動の理解の参考になりますよ 画面中央がゼロになるように表示すればプラスマイナスの変化がわかりやすいです。ゼロとプラスとマイナスでキャラの色とかを3種類変えると一層見やすくなります。

 学校で、教師が図を板書して、最初に
   加速度 ⇔ 速度 ⇔ 距離
の関係を教わるとき、誰でも頭かかえます。これを慣れるのは時間かかるんです。ところが、キャラを動かすプログラムを体験すると とても分かりやすいんです。






(*)余談
 余談ですから気楽に。小難しい話ですが、じつは X に Vt を毎回足し込むと、その総和が
  (1/2)AT^2
になるのです。
この T は T = T+t と足し込んだもの、つまり経過時間、現実の時間です。

参考までに、計算時間キザミ t の方は技術屋は「ティック tick」とか言うこともあります。時計が時を刻む音=ティックタック の ティク が語源のようです。
 
 
    • good
    • 0
この回答へのお礼

やっと意味がわかりました

最初 (1/2)*A*t^2はどこへいったんだろう
と思い、それでは加速度運動にならないんじゃ
ないかと悩みましたが、
X=X+VTの総和と(1/2)*A*t^2が同じものだ
という事で納得できました。

T=0.01と固定して、なぜ加速した時間
の経過を知ることができるのか
不思議ですが
プログラムはうまく成功しました。

本当にありがとうございました。

お礼日時:2006/01/13 21:21

その勉強熱心さに敬服します.すばらしいですね.


思うに考えるのが好きな方と見受けましたので,
あまりズバリの回答は望まれていないような気がします.

式については皆さん色々書いておられるので,現象の理解ということについて.
そのあたりは微分積分の話がわかると理解しやすいと思いますが,中学ではでてきません.
微積を使わないで速度・加速度の話を理解するとなれば,
式を使ってどうこうよりはグラフを描いてみるのがいいかと思います.
速度vを縦軸,時刻tを横軸とするグラフを見たことがあると思いますが,
その場合のグラフの傾きが加速度a,グラフと横軸に囲まれた部分が移動距離になります.
位置xを縦軸,時刻tを横軸とするグラフだと,傾きが速度vになります.
なぜそうなるかは微積の話ですが,先人は便利なものを発明したものです.
これを利用しない手はありません.

件のプログラムですが,速度vと時刻tのグラフと位置xと時刻tのグラフを描いてみてはいかがでしょう.
ジェットでの加減速なら加速度aは一定ですからv-tのグラフは直線になります(傾きaが一定)
そしてグラフと横軸に囲まれた部分の面積(移動距離=位置x)は,
三角形ですからat(縦)×t(横)÷2で
X=X+(1/2)*A*T^2+V*T

(1/2)*A*T^2
の部分が出てきます.
これがこの式のでてくる理由です.

往復する場合はx-tのグラフが横軸を中心にギザギザと波打つようなグラフになると思いますが,
x-tのグラフを描けばその傾きからvがわかり,
v-tのグラフも描けます.
いろいろやってみてください.できたときはきっと相当うれしいと思います.

ちなみに
X=X+(1/2)*A*T^2+V*T
のVは初期速度なので定数で
V=V+A*T
のVを代入してしまうとおかしくなりますよ.
プログラム上でそんな計算をしていないかもチェックしてみてください.

あと,ある点での時を表す場合は時刻といいます.
時間は時刻と時刻の間の長さのことです.
    • good
    • 0

 


 
>> プログラムはうまく成功しました。 <<

 お疲れさまでした!


>> X=X+VT の総和と (1/2)At^2 が同じものだという事、
T=0.01秒と固定して、なぜ加速した時間の経過Tを知ることができるのか、
不思議ですが <<

 ぜひ、この不透明部分を制覇しておきましょう、謎のまま残したのではもったいないです、体験すれば良い筋肉が付きます。



なお、T と t の記号を貴方に合わせます。(No4,5を読み返すと合ってないので読みづらかったですね、失礼しました。)
T は演算1回の小さな時間。
t はプログラムが走ってる時間経過です。

X も V も初期値ぜんぶゼロだとします。


プログラムでは先ず、
  V = V+AT
という計算の繰り返しでした。Vの変化を追ってみると、



0 V = 0
1 V = 0+AT        = AT
2 V = 0+AT+AT      = 2AT
3 V = 0+AT+AT+AT   = 3AT
4 V = 0+AT+AT+AT+AT = 4AT
‥‥‥
という単純明快な増え方ですね。


続いてこれを、Xの式に足し込むのを 繰り返しました。
  X = X+VT でしたね。
このXの変化を追ってみると、



0 X = 0
1 X = ATT
2 X = ATT+2ATT
3 X = ATT+2ATT+3ATT
4 X = ATT+2ATT+3ATT+4ATT
‥‥‥
N X = ATT+2ATT+3ATT+4ATT+‥‥+NATT
‥‥‥
となっていたんですね。
これを ATT でくくっておきます。
  X = (1+2+3+4+5+ ‥‥ +N)ATT
  X = (1+2+3+4+5+ ‥‥ +N)AT^2



話が変わって、
プログラムでは計算しなかったけど、演算の時間きざみT と時間経過t の関係は
  t = t+T
ですよね?

演算をN回くり返すと時間経過は
  t = T+T+T+T+T+… = NT
  t = NT
です。
これを逆にT=の形に書くと
  T = t/N ですね。

このTを上記の Xの式の T^2 に入れると、
  X = (1+2+3+4+5+ ‥‥ +N)A(t^2/N^2)
となりました。
なんだか At^2 の姿が見えてきましたね、はっきり分けて書くと、
  X = (1からNまでの総和/N^2)At^2
です。



これが肝です;
  1からNまでの総和/N^2
これは何者なのか? プログラムで力づくで計算して正体を見てみましょう。 分子の「1からNまでの総和」はループ計算の練習問題でよくありますよね。それを計算して、Nの2乗で割る。たったそれだけですから、実際やってみてください。
プログラムは↓こんなです。

Nを例えば10だとする。
 ↓
総和の変数を例えば実数Sとして、初期値 S=0とし、そこに1からNまで足し込む。
 ↓
結果のSをN^2で割る。
それを画面1行に表示して改行する。表示は小数点以下20桁ほど、たっぷり表示。
 ↓
Nを増してみて、結果の表示がどう変わっていくかを自分の目で見て、「…だ、…じゃないか」と、結論なり推理を出す!
そうするために例えばNを10 倍 ずつ増してループさせる。(Nが溢れない程度の回数でループさせる。)


結果は‥
 
 
    • good
    • 0
この回答へのお礼

再度にわたるご指導ありがとうございます。

1からNまでの総和/N^2のプログラム
試してみました。

いろいろな数字でやってみたところ
最初の数字から小数点単位で数字が減少して
本当に少しづつですが、0にちかづいている
ように思えました

N=N+10とした時、Sが最小の値になるのに
かかる繰り返し回数は1000で、
N=N+100とした時は、100
1000なら10でした

いずれの場合も0にすごく近づいているのですが
それ以上はパソコンが計算しきれないようでした

最後には0になるのだろうと思いますが
1からNまでの総和/N^2とは何か
という結論をだすことはできませんでした。

お礼日時:2006/01/14 15:10

 


 
 素早い実行ありがとうございます! ゼロになってしまうのですか、いかがでしょうか、例えばN=3なら
  (1+2+3)/3^2 = 6/9 ≠ 0
というふうにですね。
ちょっとプログラムの見直しを。


 これの目的は;
キャラを動かすプログラムを走らせて 画面の動きを眺めてる状態では、演算の繰り返し数 N が莫大な数になっていますよね。その莫大な数では、
  (1+2+3+…+N)/N^2
が何に近付くのか? という予想です。

 
 
    • good
    • 0
この回答へのお礼

0になるというのは私がかってに考えた事でして
実際に確認したわけではないです。

もしかしたら0に限りなく近づくという
ことかもしれません。

プログラムは下のようにしました。
’印はプログラム内容の説明文です


----------------------------------------
母艦最大化。  ’ウインドウの大きさ
白色で、画面クリア。

1000回(     ’繰り返し命令

T=T+1     ’表示してる行数カウント

もし、T=30 ならば 白色で、画面クリア。  
                ’画面いっぱいに
もし、T=30 ならば、T=0 ’なったら消して

              ’1行目から書き出す
N=N+100000000   ’計算


S=S+N
S=S/(N^2)

Sを、表示
0.0005秒、待つ   ’スピード調節
)           ’繰り返しおわり

-------------------------------------------

N=N*10としてしまうと答えがすべて0
になってしまいます。

だから足しこむ数を大きくしています。

何に近づくということでしたら 0に近づくけれど
0にはならないのではないでしょうか。

要領を得ずすいません。

お礼日時:2006/01/15 13:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!