• ベストアンサー

ヤコビアン演算子は必ずプラスになるのでしょうか?

座標変換で出てくるヤコビアン演算子というのは 必ず正の数になるのでしょうか? H型メッシュのmetricのプログラムをo型メッシュに 変更しているのですが,この点がちょっとわかりま せん.どなたか教えていただけないでしょうか? よろしくお願いします.

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

  • ベストアンサー
  • keyguy
  • ベストアンサー率28% (135/469)
回答No.1

f(x,y)=x g(x,y)=-y のヤコビアンを計算してみてください。

masa2-1
質問者

お礼

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

関連するQ&A

  • ビット演算子について

    あるプログラムの中で下記のようなif文の記述を見かけました。 どういう計算をしてif文の判定を行っているのでしょうか。 (1)256を2進数に変換して → 100000000 (2)0x00000004を2進数に変換して → 100 (3)100000000 & 100 のビットAND演算を行う そもそも(3)で100000000 と 100 では桁数が違うけどどうやって両者でビット演算するので しょうか。100を 000000100というように0を補完して計算すればよいのでしょうか。 その場合、100000000 & 000000100 → 000000000(2進数) → 0(10進数) となりif文の中には入らないことになると思います。 if(256 & 0x00000004 != 0)

  • 微分演算子の座標変換

    こんにちは。質問したいことがあります。 http://homepage2.nifty.com/eman/analytic/bibun.htm にあるような微分演算子の座標変換を効率的に暗記する方法はないでしょうか? 計算の理屈も手順もわかっているので、実際に試験に出ても導出はできるのですが、いかんせん時間がかかるので手っ取り早くかつ正確に暗記してしまいたいのです。語呂合わせとか、または簡単な行列演算とか、ご存知の方いらっしゃいましたら教えてください。

  • 条件演算子

    このプログラムをIF文じゃなくて条件演算子を使って書き換えることはできますか? #include <stdio.h> int main(void) { int vx; printf("整数入力しなさい:"); scanf("%d,&vx"); if(vx) puts("その数は非0");   else puts("その数は0"); return(0); }

  • Pascalにて入力した式の演算

    タイトルのとおり、Pascalにて入力した式の演算を行うプログラムを作ろうと考えています。 例えば 1 + 3 * 3 = と入力すると10と出力されるようなものです。 そこで、アルゴリズムとしては 式を全てcharとしてread 括弧があるか探し、あるなら括弧閉じるを探す 括弧内で乗除算を探す その右と左の数をintegerなりに変換して演算 以下同様に計算 …という風に考えました。 そこで質問なのですが、 式のreadをするとき、変数は配列型でいいのでしょうか 配列型だとひとつの配列に二桁以上の数ひとつだけ、という風にしか収納出来ないと思うので、これでは不可能な気もします。 また配列型では不可ならどうすればいいでしょうか。 次に、式をreadした後、そのreadをどのようにして終わらせるか 以上二点がよく分からないので、よろしければお答え願います。 また私の考えが大きく違う時等も御指示お願いします。

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

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

  • 空間(長いです)

    「空間において、定点O,Aがあり、 FはOAの中点を中心とする半径1の球面である。 2点X1,X2をF上に取る時、4点O,A,X1,X2を頂点とする四面体の 体積の最大値を求めよ」 という問題で、(全部書くと長くなるので質問したい所だけ書くと) 『直径OAをx軸上に置き、△OX1Aをxy平面上に取る。 原点をO'として、O(1,0,0),A(-1,0,0)とする。 点X2からxy平面に降ろした垂線の足をHとし、O'Hとx軸の正方向とのなす角をβ、O'X2とz軸の正方向とのなす角をθとすると X2(sinθcosβ,sinθsinβ,cosθ)となる』 とあるのですが、 どうしてX2座標のx座標とy座標はsinθが掛かってるんですか? また、Hの座標は(cosβ,sinβ,0)でOKですか? 回答よろしくお願いします。

  • C言語で逆ポーランド演算式をスタックを用いて表現するには

    C言語でスタックを使って逆ポーランド表記の演算を行うプログラムを作っています。 正の整数の場合はできたのですが、小数や負の数にも対応できるように変えるにはどうしたらよいのでしょうか? 例えば、スペースで区切られた 1.2 4.2 -3.2 + * と言う様な値を入力してちゃんと計算できるようにしたいのですが・・・。

  • h8マイコン GNU環境 プログラムにおけるライブラリ関数の利用

    毎回の質問失礼します。 秋月のH8/3048Fマイコンボードを利用して測定システムの開発を行おうとしています。 現在までGNU環境で、コンパイル、デバッグの開発環境を整えることが出来ました。  現在は測定システムのプログラムとして、まずA/D変換を行うプログラムを作っているところですが、またもや行き詰まってしまいました。 A/D変換を行うプログラムは作成できていますが、実際に動きません。というのも、A/D変換はセンサ等で測定した値を比較電圧と比較し、その比較した値をディジタル値としてADDRレジスタに格納するのと思いますが、ここからその値をLCDに表示させたいというところで出来ずにいます。  その原因はライブラリ関数だと思っています。変換された値を実際の測定したときに戻すときに浮動小数点演算が必要なので、リンクする際にライブラリ関数を組み込まなければいけないと思うのですが、組み込んでも実際にプログラムが動きません。その演算を行うところではなくて、プログラム自体が動かなくなってしまいます。浮動小数点演算を使用しないと、ライブラリ関数を使わないのでプログラムは正常に動きました。 ライブラリ関数の使い方がおかしいのでしょうか。どなたかご存知の方がいらっしゃいましたら回答よろしくおねがいします。 以下にmakefileの内容を載せておきます。 TARGET_FROM = h8300-elf- CC = $(TARGET_FROM)gcc AS = $(TARGET_FROM)gcc LD = $(TARGET_FROM)gcc OBJCOPY = $(TARGET_FROM)objcopy GDB_STUB= true LDSCRIPT = h8_3048f.x CFLAGS = -mh -g #CFLAGS = -mh -O2 -mrelax LDFLAGS = -nostdlib -Wl,-Map,AD_test.map AD_test.abs: h8_3048f.o AD_test.o $(CC) -o AD_test.abs $(CFLAGS) $(LDFLAGS) -T$(LDSCRIPT) h8_3048f.o AD_test.o -lgcc cat AD_test.map h8_3048f.o: h8_3048f.S $(CC) -c $(CFLAGS) h8_3048f.S AD_test.o: AD_test.c $(CC) -c $(CFLAGS) AD_test.c clean: rm AD_test.abs rm AD_test.o rm h8_3048f.o rm AD_test.map

  • C言語のsizeof(サイズオブ)演算子について

    はじめまして。 C言語の初学者です。 sizeof(サイズオブ)演算子の理解でつまづいています。 参考書の説明は下記の通りです。 要素数を数えるのは面倒くさいので、要素数を自動的に求めて繰り返させることにします。 要素数を求める直接的な方法は用意されていませんが、計算することは出来ます。 配列全体のサイズを求め、それを要素1つのサイズで割れば要素の数がわかります。 C言語には、変数や配列のサイズを求めるsizeof(サイズオブ)演算子があります。 sizeof演算子は、次のようにして使います。 sizeof(変数や配列名) sizeof演算子には()をつけなくても良いのですが、つけた方が読みやすいでしょう。 この演算子を使って配列arrayの要素数を求めるには次のようにします。 sizeof(array) / sizeof(array[0]) 上記の説明文にある、【配列全体のサイズ】と【要素1つのサイズ】の【サイズ】とは何を指しているのでしょうか。 また、上記の【sizeof(array) / sizeof(array[0])】の割り算の意味が分かりません。 下記のプログラムを例にして、具体的に何を何で割っているのか数字を当てはめて教えてください。 よろしくお願い致します。 #include <stdio.h> int main(void) { int array[] = {42,79,13,75,19}; int i; for (i = 0;i < sizeof(array) / sizeof(array[0]);i++) { printf("array[%d] = %d\n",i,array[i]); } return 0; } このプログラムの実行結果は次の通りになります。 array[0] = 42 array[1] = 79 array[2] = 13 array[3] = 75 array[4] = 19

  • IEEE754と浮動小数点定数同士の演算について

    ■質問 浮動小数点の標準規格IEEE754に、浮動小数点定数同士の演算に関する規定はありますか? ■背景 とあるマイコンで組込みソフト開発をしています。 このマイコン用のコンパイラ(IEEEに準拠)で以下のCソースコードをコンパイルしたところ、コンパイラのバージョン1とバージョン2で演算結果が異なりました。 double d_val = 6.6f * 10.0f; ○コンパイルバージョン1でコンパイルしたソフトの演算結果 →d_valには66.0が代入されました。 ○コンパイルバージョン2でコンパイルしたソフトの演算結果 →d_valには65.999999…(詳細は失念)が代入されました。 コンパイラメーカーに問い合わせたところ、「バージョン1から2へのアップグレードにおいて、浮動小数点定数演算に関連する変更を行ったが、その影響は浮動小数点演算における誤差の範囲内である」との回答でした。 誤差の範囲内であるとはいえ、コンパイラのバージョン違いで演算結果が異なるのは困るので、これがIEEE754規格違反なのであれば、それを根拠にコンパイラメーカーへ対応を求められるのではないかと考えています。 しかし、浮動小数点定数同士の演算結果の正確性についての規定がないのであれば、開発側で対応するしかありません。 いろいろと調べてはいるのですが、これといった情報に行き当たっていないので、こちらで質問させていただきます。どうぞよろしくお願いいたします。