忍者ブログ
20080511~ 13と7と11の倍数の論理積は13と7と11の積の倍数である。 和ァ・・・
[2077] [2076] [2075] [2074] [2073] [2072] [2071] [2070] [2069] [2068] [2067]
昨日の二重振り子の日記なんですけどね
どうして摩擦アリのシミュレーションをしたかったのか
自分が何を考えていたのか、寝る前になってようやくわかったような気がしました。


止まるまでが二重振り子
と、修学旅行のようなことを書きましたが
ずっーと回しているうちに、心なしかエネルギー保存どころか加速しているような感じがしましてね

それともう1点気になることがありまして。
パラメータを大きくすると割りとすぐに発散するんですよ。
割りとすぐにです。計算開始直後とも限らないのです。

そういえばこの計算は、x、yの直交座標というより極座標めいた感じで行っていたのでした。
ということは、メインになる変数は角度なのです。
radだったりrad/sだったり、rad/s2だったりしますが、メインは角度

ということは
パラメータ次第では、何回も回転していると積もった塵が山となり、
角度の数値だけがどんどん膨れ上がる可能性があるということです。

これは直接的にはx、yの直交座標にしたときには表れません。
0度だろうが360度だろうが720度だろうがsinとcosの値は同じだからです。
また、エクセルで数値を処理する場合、ある程度以上大きな数は、問答無用で有効数字の底辺をカットされます。
たとえば292929292929292929と、29が9回つながった数の下3桁は0に略されます。
これにより、ある程度以上大きな数は大雑把に処理されます。コンピュータによる誤差の伝播が始まるのです。



もしかして、発散と加速の原因は同じ、角度の非周期が原因なのではないか?
とりあえず、これからMOD(角度、2π)を実装してみることにしますね。



========キリトリ線========
MOD関数の中身を知りたい方へ

MOD(A,B)はAをBで割ったあまりです。
このMOD関数の中身はおそらく
AをBで割った数の整数部分だけをround関数めいたもので取り出しcとおき
A-B*cを結果として算出するといったものだと思います。
そのため、割る数が2πという無理数でもちゃんと動作します

しかし注意点として
Aがマイナスのときの処理には気をつける必要があります。
マイナスの数をroundするときに「小さいほう」を算出する必要があるのです。
絶対値の小さいほうではありません。数値的に小さいほうのことなのです。
たとえばプラスの2.4を切り捨てるときは普通に2と答えるでしょうが
マイナス2.4を切り捨てる場合はマイナス2ではなくマイナス3にする必要があるのです。

if(c>=0,rounddown(c,0),roundup(c,0))という処理になるでしょう。


(ちなみに「292929292929292929を9で割ったあまりがゼロになる」を確かめようとすると、
しっかりとエラーを出してくれます)

========キリトリ線========


まあ、その辺はすでにMOD関数に実装されているようなので、
MOD関数を再現しようとでもしないかぎり、キリトリ線の内側は不必要な考慮なんですけどね


コンピュータによるシミュレーションは
カオスな現象であっても
初期値やパラメータを決めてしまえば再現が効くので便利ですね。(決定論)
実際の二重振り子だとこうはいきません。





バタフライエフェクトよ。
ブログランキング・にほんブログ村へ
にほんブログ村

拍手[0回]

PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


忍者ブログ [PR]
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
ブログランキング
ブログランキング参戦中
にほんブログ村 アニメブログ 深夜アニメへ
にほんブログ村 漫画ブログ SF・ファンタジー漫画へ
にほんブログ村 科学ブログ 自然科学へ
よかったらポチッとお願いします^^
最新CM
[12/30 buy steroids credit card]
[09/26 Rositawok]
[03/24 hydraTep]
[03/18 Thomaniveigo]
[03/17 Robertaverm]
最新TB
プロフィール
HN:
量子きのこ
年齢:
43
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます
例:H→7番目、XP→15(P)×26+23(X)=413番目。
A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
バーコード
ブログ内検索
アクセス解析