Skip to content

パラメタ付きの床と天井の間を跳ねる質点でminimizeTimeがエラーする #17

@yuhtota

Description

@yuhtota

パラメタ付きの床と天井の間を跳ねる質点のプログラムは以下である.

INIT <=> y = 5 & 10.1 < y' < 10.2.
FALL <=> [](y'' = -10).
BOUNCE1 <=> [](y- = 10 => y' = -4/5*y'-).
BOUNCE2 <=> [](y- = 0 => y' = -4/5*y'-).

INIT, FALL << (BOUNCE1, BOUNCE2).

// #hylagi --fnd

y' がパラメタとなっていて最初は天井に衝突するような初期値に設定されている.
y'' = (0でない定数) なので y = (時刻 t の2次式) となり, BOUNCE1, 2の離散変化条件により離散変化時刻を求める際の方程式は t の2次方程式となる.
実行結果は長いのでこれ.
IP6で minimizeTime エラー.

別の例題でパラメタ付きの楕円内を跳ねる質点がある. プログラムは以下.

INITPOS <=> x = 0 & y = 0.
INITVEL <=> x' = 1 & 0.9 <= y' <= 1.1.
ACC <=> [](x'' = 0 & y'' = 0).

ELLIPSE <=> c = 5 & d = 3 & [](c' = 0 & d' = 0).

BOUNCE <=> [](x-^2/c^2 + y-^2/d^2 = 1 =>
    x' = 2*c^2*y-*(c^2*y-*x'- - d^2*x-*y'-)/((c^2*y-)^2+(d^2*x-)^2) - x'-
    & y' = -2*d^2*x-*(c^2*y-*x'- - d^2*x-*y'-)/((c^2*y-)^2+(d^2*x-)^2) - y'-).

INITPOS, INITVEL, ELLIPSE, ACC << BOUNCE.

// #hylagi --fnd

x'' = 0 と y'' = 0 より x = (t の1次式) と y = (t の1次式) となり, BOUNCE の離散変化条件に x^2 と y^2 が含まれるため離散変化時刻を求める際の方程式は t の2次方程式となる.
実行結果はこれでパラメタ付きの床と天井の間を跳ねる質点と同様にIP6で minimizeTime エラー.

パラメタ付きの床と天井の間を跳ねる質点の方がいくらか簡単に見えるが同様のエラーが発生.
以上2例の共通点はパラメタを含むことと離散変化時刻を求める際に解く方程式が時刻 t の2次方程式ということである.
この共通点が minimizeTime で使われている Mathematica の Minimize でうまくいかないのではと考えているが, 正確なことがわからないので調査が必要.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions