• ベストアンサー

差分法による数値解析でヤコビアンによる座標変換がよくわかりません。

ヤコビアンによる座標変換のやり方について勉強しているのですが、計算格子のはじっこでヤコビアンが他と異なるのがなんでなのかよくわかりません。 詳しい方いらしたらわかりやすく説明してもらえないでしょうか?イメージをつかめる程度でもいいのでお願いします。 座標変換自体殆ど理解できておらず、何か理解するとっかかりができればと悪戦苦闘している状態です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

すみません。恥ずかしい変換ミスしてました。(変微分→偏微分) それから9つに場合分けするのは面倒だと考えるかも知れません。前進差分と後退差分だけやれば多分4つの場合分けで済むのですが、中央差分の方が精度が高いので出来れば中央差分を使いたいわけです。

その他の回答 (2)

回答No.2

数値微分を中央差分で取るか取らないかで場合分けされていると思います。 物理座標(x,y) から一般座標(xi, eta)への変換を考えます。格子には (1..M-1, 1..N-1)と番号が振ってあるものとします。ヤコビアンJは   1/J = x_{xi} * y_{eta} - x_{eta} * y{xi} なのですが、具体的な値を求める際には、右辺の変微分 x_{xi}, y_{eta}, x_{eta}, y_{xi} を数値的に評価する必要があります。一般座標は計算しやすいように取るので、ここではグリッドの間隔が 1 になるように取ってるものとします。 この時、例えば、(i,j)番目のグリッドの x の xi による変微分 x{i,j,xi}を求める時には、(i-1,j)と(i+1,j)のグリッドを用いて中央差分   x_{i,j, xi} = (x_{i + 1,j} - x{i - 1,j}) / (2Δxi) = 0.5 * (x_{i + 1,j} - x{i - 1,j}) で評価することが出来ます。しかし、グリッドの端の辺上の格子 (1,j) ですと、(0,j)なんて格子は定義されてないので上の式では計算できません。そのため、(1,j)と(2,j)の格子を用いて前進差分   x_{1,j, xi} = (x_{2,j} - x{1,j}) / (Δxi) = (x_{2,j} - x{1,j}) で評価することになります。同じようにグリッドの端の辺上の格子(M-1,j)では (M,j) なる点は定義されてませんので、後退差分   x_{M-1,j, xi} = (x_{M-1,j} - x{M-2,j}) / (Δxi) = (x_{M-1,j} - x{M-2,j}) で求めます。つまり xi で微分する際には端の二辺で中央差分が使えませんので前進差分と後退差分の場合分けが必要です。 これは eta で微分する際も同じで、端の二辺で中央差分が使えず、場合分けをする必要がります。これが四隅ですと xi でも eta でも場合わけが必要となります。したがって、四隅と四辺とそれ以外の9つの場合分けが必要です。 >ヤコビアンの式が >角の4点、上下左右の端の4線、その他の9つに >場合わけされて定義されています。 以上が現状で思いつくことなのですがよろしいでしょうか?

masa2-1
質問者

お礼

ありがとうございます.おかげさまでイメージはちょっとわかってきました.まんなかは中心差分で計算しているようですが,境界では2次精度で前進,後退差分を しているようだということがわかりました. 中心差分も前進,後退差分も知ってはいたのですが, 教えていただくまでは気づきませんでした. 助かりました.

回答No.1

>計算格子のはじっこでヤコビアンが他と異なるのがなんでなのかよくわかりません。 ヤコビアンが他と異なるのがどういうことなのか、具体的に教えてください。例えば、数式の形がはじっこだけで違うのか、それとも数値が他とかけ離れているのかとか。 ヤコビアンは座標変換する際に出てくるものですから、変換前の座標がよほど規則的にでも配置されていない限り、それぞれの格子における値は異なって当然なのですが、だからと言ってはじっこで特に異なるのは不思議です。

masa2-1
質問者

補足

回答ありがとうございます。 説明が至らなかったようで申し訳ありません。 数式の形が違います。いまやっているのは 20*20の計算格子なのですが、ヤコビアンの式が 角の4点、上下左右の端の4線、その他の9つに 場合わけされて定義されています。これがどういうことなのかがぴんとこないのです。 これで理解していただけたでしょうか? そうでなければ更に補足しますので。

関連するQ&A

  • 流体の数値解析で座標変換を行った際の境界条件の処理について

    simple解法で二次元乱流の数値計算プログラムをやっているのですが,滑りなしで翼面の流速を0にしたい場合 ,座標変換を行った際にはどうすればよいのでしょうか?本のプログラムではヤコビアンの成分を二乗して たしたものの平方根をかけたりしているのですが, これが何を意味しているのいまいちわかりません. これだけで伝わりにくければ補足しますのでよろしく お願いします.

  • 空間座標(3次元)を平面座標(2次元)に変換する

    私は現在ゲーム制作を行っているのですが、空間座標を平面座標に変換する方法が分かりません。色々なサイトを見てまわったのですが、如何せん大学等で専門的な数学や物理を習ったわけでは無いので何かの記号を使った式を見せられても理解ができないのです。しかし、その勉強をしている時間が本当に無く(他にもやらないといけない事があり)、ここを頼らせてもらいました。 分かり易い説明をしているサイトを教えてくださるだけでも結構です。どうか、よろしくお願いします。

  • 極座標変換後の積分範囲

    大学の微積分の質問です。 添付画像(理工系の数学入門コース 微分積分/岩波書店p150)のように極座標変換を行った後の積分範囲でθとΦに関して 0≦θ≦π、0≦Φ≦2π とどの教科書でも指定されています。 0≦θ≦2π、0≦Φ≦πとしても積分範囲は良さそうに思えるのですが、 実際にこの範囲で計算するとヤコビアンr^2sinθのsinθ項の積分が0になってしまい、答えが求められません。 なぜうまくいかないのでしょうか?

  • 座標変換についての質問

    どういう風に考えれば答えを出せるのかよくわからないので質問させていただきます。 C言語でのゲームプログラムに関しての質問です。 やりたい事はウィンドウ上の座標をマップの座標に変換する。です。 縦と横だけのマップチップの配置(イメージとしてグラディウスのような)の場合、 現在の座標XまたはY÷マップチップ一枚分の大きさで割ってやれば、マップの座標に変換できました。 そうではなく、今回は、斜め俯瞰のマップなのです。 ウィンドウ上の右上に行くほどマップXの数値が大きくなり、右下に行くほどマップYの数値が大きくなります。 その場合はどのように計算すれば現在の座標X、Yをマップ座標X、Yに変換できるのでしょう? 普通の縦と横だけの配置のものと考え方は似ていると思うのですがイマイチ、ピンと来ていません。 ちなみにマップチップの中心点から現在の座標Xに60、Yに-20を加えてやると、 次の(右上)チップの中心へと移動します。(その60と20に対しての斜辺は63でした) 何か不明な点、不足、間違いなどありましたら補足修正いたしますのでよろしくお願いいたします。

  • デカルト座標表示から極座標表示への変換について

    質問させていただきます 現在flashプログラミングに活かす為、ベクトル演算について勉強しております デカルト座標表示のベクトルB=3i^+4j^を極座標表示に しなさいという問題で Bの大きさをピタゴラスの定理を使い5と求める ところまでは理解できたのですが、 向きを求める計算で θ=tan-1(-1は指数です)(b2/b2)=tan-1(4/3)およそ 53.1°となっていたのですが 私の計算では、まず4/3=1.33333333を求め tan(1.33333)=0.023275....をもとめ 1.33333333../0.023275....=およそ57 となってしまいます どなたかお解りになられる方、 わかりやすくご教授頂けないでしょうか (中学生程度の数学知識の自分でも理解できるように) すみませんがよろしくお願いいたします

  • ヤコビアンについて

     図のヤコビアンの説明はマセマの参考書に載っていたものですが、ヤコビアンの説明で図のⅱのような表現は妥当なものなのでしょうか?  確かに直交座標と極座標の微小な積分要素の関係は形式的には   dxdy → rdrdθ という変換になっていますし、実際に積分計算を実行するときはヤコビアン r のおかげで r とθが極座標の変数であることを忘れ、あたかもr軸とθ軸による '直交座標' にある領域を定義域とする z = f(r,θ) を積分しているような気分になってはきますが、だからといって「極座標系」における領域D'なるものを、あからさまにr-θの「直交座標」で表していいものかどうかしっくりきません。   x = x(r,θ) = rcosθ   y = y(r,θ) = rsinθ という座標変換を考えるとき、確かにr もθも任意の実数をとるけれども、θは位相を表すことを前提にしており、 drdθでは面積にならないことがわかっているわけで、そんなことを考えると、図のⅱはこれでいいのかと思ってしまうのです。

  • ヤコビアン(関数行列式)について 高度な数学の質問になります

    座標変換のことについての質問です。 現在、テンソル解析をしていて、 y=f(x1,x2,x3) x=g(y1,y2,y3) の座標変換を考えています。 この二つの座標変換が、可逆で、一対一対応していることを説明したいのですが・・・。 この際、関数行列式(ヤコビアン)が0になってしまうと、逆行列が存在せず、 逆変換が、出来なくなってしまうようなのですが、これはどうしてなのでしょうか? そもそもヤコビアンが0になってしまうと逆変換が出来なくなると言う認識は正しいでしょうか? ヤコビアンが0になると、逆行列が出来なくなる理由、逆変換が出来なくなる理由を、簡単でもかまいませんので、 教えてください。

  • 緯度、経度の 10進法と 60進法の変換方法について

    135°46'10.90" のように分以下が60進法で記述された経度を 135.6733223 のように 分以下が10進法の方式に変換したいと思います。(相互変換) このような時どのように計算すればいいのでしょうか? 10進数を2進数に変換くらいはなんとか理解できたのですが、60進法で分とか秒とか出てくるとさっぱりわかりません。 説明できる方いらっしゃいましたらよろしくお願いいたします。

  • マーケティング・マネジメント

    現在マーケティング論を勉強をしているのですが、 「マーケティング・マネジメント」について「STP」と「4P」を使って 説明せよという問題に悪戦苦闘しております。 STPと4Pについては理解できるのですが、 マーケティング・マネジメントに上手く繋げることができません。 マーケティング論に詳しい方がいらっしゃいましたら 是非教えて教えていただけないでしょうか。 よろしくお願い致します。

  • 数値解析の手法(差分法)について

    現在、とある2元の1階偏微分方程式(解はu,vでそれぞれ右と左に進行する波)を数値解析によって解こうと考えています。 数値解析の手段として、差分法がよく用いられると思いますが、 現在、私は、場所に関してはuは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って解いています。 ネットでは場所に関しては中心差分、時間に関してはルンゲ=クッタやリープフロッグなどが 使われていることが多く、私もこの2つを用いて解いてみました。 偏微分方程式には線形項が含まれていたため、 線形問題に対する制約であるΔt/Δx << 1は最低満たすように刻み幅をいろいろ取り、 計算時間も辞さず計算機を動かしてみましたが、 ノイズが消えず、解析解に限りなく近づくには至りませんでした。。 Δt/Δx=0.0001なども試したのですが・・・ そこで、諦めて違う差分法を試し、 場所に関して、uは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って見たところ、 Δt/Δx=0.01程度で解析解に近い、なかなか精度の良い数値解を得ることが出来ました。 2次の差分では上手くいかず、1次の差分だとわりかし上手くいく・・・ 精度的には中心差分やルンゲ=クッタなどの方がいいと思うのですが・・ 正直不思議でなりませんでした。。。 最初に試した差分法のコードミスかと思い、何回もコードを確認し直しましたが、 やはり解析解に近づくには至りませんでした。 こんなことってあるのでしょうか?? 差分法でも場合によって使い分ける必要があるということでしょうか・・? その場合分けするときの指標など、知っておられる方、教えて頂けると助かります。 問題によって