« 2020年1月 | トップページ | 2020年3月 »

2020年2月

2020年2月28日 (金)

スマートフォンでの <span class="sl_ft" style="font-weight:normal">LongDriver</span> の不具合

昨年7月にフットボールのプレイブックソフト LongDriver がスマートフォンでは使えないことが分かり、その時、一応使えるようにしたのですが、先日、久しぶりに使ってみたら、再び使えなくなっていました。(それとも、昨年のデバッグが間違いだったのでしょうか?)

不具合の症状は次のようなものです。

  1. 選手のドラッグおよびフィールドのスクロールに不具合有り
    • 初めの1回は操作出来るが、それ以降は反応無し
    • その反応無しの時 touchstarttouchend のイベントリスナーは呼び出されるが touchmove のイベントリスナーは呼ばれない
  2. イベントリスナーで evt.preventDefault() を実行しようとすると下記のエラーが発生する
    • Ignored attempt to cancel a touchstart event with cancelable=false, for example because scrolling is in progress and cannot be interrupted. (cancelable=false である touchstart イベントをキャンセルすることが無視された)

別のソフトでビリヤードの配置図ソフト FlatTable でも上記 (2) のエラーは発生していますが (1) の不具合は有りません。1つの DOM 要素に対して LongDrivertouchstartclick のイベントリスナーを登録しているのに対して FlatTable では click は登録していないことが両者の違いになっていると思われます。そこで、 LongDriver でも click のイベントは使わずに touchstarttouchend でエミュレートしてみようと思っています。

上記 (2) については FlatTable でもエラーが発生するので evt.preventDefault() をコメントアウトしたところ、エラーの発生が抑制されました。また、コメントアウトしたことによって何か新たな不具合が生じた様子も見られませんでした。 evt.preventDefault() の実行は意味が無かったということでしょうか?(←画面がスクロールすることが分かった)

2020年2月11日 (火)

\(f(x)\) のとりうる値の範囲

次の動画で疑問に思った事柄が有ります。

YouTube:最大値と最小値,とりうる値

この動画の中で疑問なのは、次の文言です。

\[ f(x) のとりうる値の範囲は\ 1\leq f(x)\leq 2 \tag{1} \]

これを動画では

\[ f\ は区間 [1,2] への全射を意味する \tag{2} \]

のようなことを言っています。普通の日本語の感覚では、「とりうる」は区間 \([1,2]\) 全部に対応する必要は無く、

\[ f(x)\not\lt 1\ 且つ\ f(x)\not\gt 2 \tag{3} \]

と同じ意味だと思うのですが、動画では「それは違う」とのことです。

(1) を少し変えて、 (4) のように言うと \(f\) は全射になるような気もしないでも無いような、有るような・・・。

\[ f(x) は\ 1\leq f(x)\leq 2\ の範囲をとりうる \tag{4} \]

とにかく、(2) の意味を表したいのなら、

\[ f(x) のとる値の範囲は\ 1\leq f(x)\leq 2 \tag{5} \]

と言えば良いでしょう(すなわち、「とりうる」ではなく「とる」で良い)。なぜ、わざわざ「うる」を付けるのでしょうか?

ここで私の想像なのですが、外国語、例えば英語で 「can」 とか 「be able to」とかが使われていて、それをそのまま日本語に訳して「とりうる」となったという可能性も有りそうです。もしかしたら、 「can」あるいは 「be able to」 だと (2) の意味になるのかも知れません。そこで、 「can」 と 「be able to」 を少し調べてみたのですが、判りませんでした。参考までに、下記リンクを載せておきます。

2020年2月 2日 (日)

ラグランジアン、お前は何者だ!?

ラグランジアンに最小作用の原理を適用すると運動方程式が導びかれます。このラグランジアンは何者なのか考えてみたいと思います。

ラグランジアンはベクトルのノルム(の2乗)であって欲しい

非相対論ではラグランジアンは式 (1) です。

\[ L = T - U \tag{1} \]

運動エネルギー \(T\equiv m\dot{x}^2/2\) はベクトルのノルム(の2乗)なので解り易いのですが、ポテンシャル項が有るためにラグランジアンは解りにくいものになっています。ポテンシャルとは何なのでしょうか。

ベクトルを空間成分に限定せずに時間成分も考えれば、ベクトルのノルムのアイデアの範囲で式 (2) のようにラグランジアンにポテンシャルらしきものを導入することは出来そうです。

\begin{align} Ldt &= \alpha\sqrt{dx^2 + \psi^2dt^2} \\ &= \alpha\sqrt{\dot{x}^2 + \psi^2}dt \\ &\fallingdotseq \alpha\left(\psi + \frac{1}{2\psi}\dot{x}^2\right)dt \tag{2} \end{align}

実は、相対論では同様な考えでラグランジアンが決定されています。実際、式 (3)

\[ Ldt = -mc\sqrt{-g_{\mu\nu}dx^\mu dx^\nu} \tag{3} \]

が相対論のラグランジアンで、これを非相対論近似すると式 (4) になります。

\[ Ldt = \left(-mc^2 + \frac{m\dot{x}^2}{2} - m\phi\right)dt \tag{4} \]

ただし、式 (4) の \(-m\phi\) は相対論⇔非相対論間の辻褄を合わせるために導入した後付けの項ですが。

ラグランジアンは何故ポテンシャルを引いているのか?

上記のことから、ラグランジアンにポテンシャル項が有るのは良しとして、次の疑問は、そのポテンシャルは式 (1) のように何故引かれているのかということです。もし、ポテンシャルを足しているのであれば、全エネルギーという解釈が出来てスッキリするのですが、そうはなっていません。

全エネルギーに相当するのはハミルトニアン(式 (5))です。

\[ H = T + U \tag{5} \]

このハミルトニアンを式 (6) で表されるルジャンドル変換をすることでラグランジアンを得ることが出来ます。式 (6) の結果、ラグランジアンはポテンシャルを引いていることが理解できます。

\begin{align} L &= p\dot{x} - H \\ &= T - U \tag{6} \end{align}

では、ラグランジアンとハミルトニアンの違いは何でしょうか。ラグランジアンは最小作用の原理で運動方程式を導くことが出来ます。一方、ハミルトニアンは、最小作用の原理を適用しようとしても運動方程式は導けないと思います。それは以下の考察から言えるでしょう。

ラグランジアンの変数は、位置 \(x\) と、その時間微分 \(\dot{x}\) です。2種類目の変数が1種類目の変数の時間微分であるところがミソです。このお蔭で、 \(\dot{x}\) の変分 \(\delta\dot{x}\) は部分積分によって \(\delta x\) に置き換えることが出来ます。その結果、運動方程式 (7) が導かれる訳です。

\[ \frac{d}{dt}\frac{\partial L}{\partial\dot{x}} - \frac{\partial L}{\partial x} = 0 \tag{7} \]

一方、ハミルトニアンは、その変数が位置 \(x\) と運動量 \(p\) です。このため、変分 \(\delta x\), \(\delta p\) を何か共通の変分 \(\delta w\) に置き換えることが出来ません(たぶん)。従って、ハミルトニアンに対して最小作用の原理を適用して運動方程式を導くことは出来ないということになります。それで、止むを得ず、ハミルトニアンをルジャンドル変換してラグランジアンを求め、そこから最小作用の原理で運動方程式を導くことになります。そのラグランジアンがポテンシャルを引いているのは式 (5) のハミルトニアンに由来しているという訳です。

« 2020年1月 | トップページ | 2020年3月 »