• 締切済み

ドメインエラー!?

このようなエラーメッセージです。 run-time error M6201:MATH - log:DOMAIN error と出ます。 log(x)を見直して、xが1.0E-307以下はif文で対処しています。 (xが1.0E307以上の場合も同様に処理を施しています) なので、log単独でエラーになることはないはずです。何度も見直したので。 今、考えているのは以下の2点 (1) Y=a*(b+log(x)) Yがエラー範囲になっている (この場合に上記の様なエラー表示がでるのでしょうか??それも疑問点です) (2) log(1-x)などの場合に、 x=0.999999999999999が if(x .eq. 1.0d0) log(1-x)=-1.0d307 のif処理に引っかからずに走っているのか・・ ぐらいしか考えられません。 なぜ、log:DOMAIN errorが出るのかわかりません。 アドバイスをお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

DOMAIN error ってことは, 「引数に与えた値がおかしい」ってことですよね? なんか, (2) の処理がおかしい気がするんだけど.... 左辺に log(1-x) なんて, 書けましたっけ?

BOY12345
質問者

補足

説明のために、そう書いているだけです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • run-time error M6201: MATH-sqrt: DOMAIN errorとはなんでしょうか?

    FORTRANをはしらせるとrun-time error M6201: MATH-sqrt: DOMAIN errorと出てしまいます.どういうことなのでしょうか? ちなみにFORTRAN90を使用しています.

  • domain error

    fortran にてプログラムをしています。 atanのdomainエラーが表示されました。 『あれ!?atanってドメインエラーとかおこすっけ??』 と思っています。 普通に(人間が)解く場合は-pi/2~pi/2が値域であるが・・ もしや、プログラムでは、pi/2以上、または-pi/2以下はドメインエラーになるのでしょうか? 詳しい方教えて下さい。

  • eのべき乗の方程式について

    以下の方程式について質問です。 ・e^(2y)-2x*e^y-1 = 0 この方程式を y= の形にせよ。 また、x、yは変数です。 私のやり方では (logの底はeです) e^(2y) -2x * e^y = 1 e^y(e^2-2x) = 1 e^y = 1/(e^2-2x) log(e^y) = log|1/(e^2-2x)| y*log(e) = log|1/(e^2-2x)| y = log|1/(e^2-2x)| とやったのですが違うみたいです。 答えは y = log|x+sqrt(1+x^2)| で、この答えの導出方法は理解したのですが、 私のこのやり方だとうまくいかないのはなぜでしょうか? 何度も見直したのですが、解答過程で間違っていそうな点が見つからなかったので。 解答よろしくお願いいたします。

  • DirectXでのエラー処理について

    現在、Visual Studio .NET 2003でWindowsフォームを使って C++、DirectXのプログラムを作っています。 そこでXファイルを読み込むために以下のようにしているのですが、 Xファイルが存在しない場合 「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。」 というメッセージが繰り返し出てきてreturnまで処理が進みません。 returnまで進まない原因、もしくはXファイルが存在しない場合の よい処理方法があれば教えていただけないでしょうか。 初心者なので説明足らずなところがあると思いますが よろしくお願いします。 if(FAILED(D3DXLoadMeshFromX("**.x",D3DXMESH_SYSTEMMEM,**,NULL,&**,NULL,&**,&**))){ MessageBox(NULL,"",NULL,MB_OK); return E_FAIL; } (**は全て独自、同じではありません)

  • c++での関数エラー処理

    いつもお世話になっております。 エラー処理ができず困っています。 下記の y=... という式でエラーが発生した場合(yはdoubleです) yにゼロを代入して次に進む、としたいのです。 が、以下のように書いても y=のところでエラーが発生して止まってしまい、 回避処理(catch以下)に進みません。 いろいろ調べてあれこれ直してみましたが、うまくいかず困っています。   try{ y = ((y1 - y3)*(y1 ^ 2 - y2 ^ 2 + x1 ^ 2 - x2 ^ 2) - (y1 - y2)*(y1 ^ 2 - y3 ^ 2 + x1 ^ 2 - x3 ^ 2)) / (2 * (y1 - y3)*(x1 - x2) - 2 * (y1 - y2)*(x1 - x3)); } catch (...){ y = 0; } 正しい方法をご存じでしたらぜひ教えてください。 どうぞよろしくお願い致します。

  • 出力するとエラーメッセージが出ます

    FLASHCS4でAS3.0を使ってます。 インスタンス名「_1mc」と言うオブジェクトを作成し、そのオブジェクトが浮遊するアニメーションを作成して、そのオブジェクトにマウスカーソルが触れるとマウスオーバーで「_1mc」の「61」へ移動し、マウスアウトで「1」に移動するように作りました。 そしてプレビューすると動作は特に問題なく作動しますが、出力には下記のようなメッセージが表示されます。このままでも問題ないのでしょうか?または別の記述方法を行う事で、このメッセージは回避出来るのでしょうか?その場合の記述方法を教えてください。 --------------------------------------------------------------- TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at takaragawa_fla::MainTimeline/xEnterFrame() --------------------------------------------------------------- 「_1mc」を設置してあるフレームには下記のスクリプトを記述しました var step1X:int=Math.floor(Math.random()*1)+5; var step1Y:int=Math.floor(Math.random()*1)+5; if (Math.random()<0.5) { step1X*=-1; } if (Math.random()<0.5) { step1Y*=-1; } _1mc.addEventListener(Event.ENTER_FRAME, x1EnterFrame); function x1EnterFrame(evt) { _1mc.x+=step1X; _1mc.y+=step1Y; if (_1mc.x>=800||_1mc.x<=0) { step1X*=-1; } if (_1mc.y>=550||_1mc.y<=0) { step1Y*=-1; } } //ロールオーバーの設定 _1mc.addEventListener(MouseEvent.ROLL_OVER,xOver); //ロールアウトの設定 _1mc.addEventListener(MouseEvent.ROLL_OUT,xOut); //ロールオーバーしたとき function xOver(evt:MouseEvent):void { _1mc.gotoAndPlay(61); } //ロールアウトしたとき function xOut(evt:MouseEvent):void { _1mc.gotoAndPlay(1); } -------------------------------------------------------------- 以上ですので、アドバイスをお願い致します。よろしくお願い致します。

  • シェルスクリプトでエラー値取得

    Linuxをつかいシェルスクリプトを組んでいます 複数ファイルの存在有無を確認し、問題なければ、 ファイルを作成する処理を作成したいと思っています。 現在つまずいているのが以下の2点です。  (1)複数ファイルが無い場合、エラーとしたいが、「too many arguments」とででしまう。  (2)HASH.tmp情報取得中にエラーとなったらエラーを出したいが、エラー終了ステータス返却処理に流れない。 初めてで色々しらべながらやっていますが、うまくいかず止まってしまいました。 どなたかご助言お願い致します。 (1) #==============================================================================# # データ抽出用sqlファイル存在確認 # CSVファイルが無かったらエラーを出したい。 # 終了ステータス返却 # 終了ステータスが"0"以外の場合は、"1"を返却する #==============================================================================# if [ ! -f "${DATA_DIR}/"*.csv ]; then # ログ出力 OUT_MSG_LOG -E "抽出ファイルが存在しません。" OUT_MSG_LOG -E "抽出シェル - 終了 終了ステータス :1" OUT_ACT_LOG SH 12 "" OUT_ACT_LOG SH 02 "" exit 1 fi (2) #==============================================================================# # ハッシュ情報取得処理 #==============================================================================# mktemp ${DATA_DIR}/HASH.tmp >/dev/null for arg in *.csv do md5sum ${arg} | awk '{printf("%s,%s\n",$2,$1)}' >> HASH.tmp done #==============================================================================# # 終了ステータス取得 #==============================================================================# RS=$? #==============================================================================# # エラー終了ステータス返却 # 終了ステータスが"0"以外の場合は、"1"を返却する #==============================================================================# if [ ${RS} -ne 0 ]; then # ログ出力 OUT_MSG_LOG -E "抽出処理実行中にエラーが発生しました。" OUT_MSG_LOG -E "抽出シェル - 終了 終了ステータス :${RS}" OUT_ACT_LOG SH 12 "" OUT_ACT_LOG SH 02 "" exit 1 fi

  • エラーメッセージがうまく表示されません。

    フォームから年月日を取得し、フォーム入力がなかった場合、 エラー表示がされるようにしたいと思っています。 下記のようにif文とサブルーチンで処理しようとしていますが、 何か問題になる点はありますでしょうか? ご教授お願いします。 ### 入力チェック ##### if($in{'year'} eq "" || $in{'mon'} eq "" || $in{'day'} eq ""){ &errer(100,"日にちを指定してください"); } ### エラーチェック ##### sub errer{ ($num,$word) = @_; print <<EOF; <html> <head> <title>エラー</title> </head> <body> Error $num<br> $word<br> <br> <br> <br> <a href="JavaScript:history.back()">戻る</a> </body> </html> EOF }

    • ベストアンサー
    • CGI
  • 線分同士の交点の判定

    線分の交差判定についてネットで調べていたら、以下のような処理で できると書かれていたページがあったのですが、どうしても理解する事が できません。 もしできれば、解説を頂いてもいいでしょうか。 よろしくお願いします。 //2次元での線分と線分の交差判定と交点 BOOL CheckCrossLine(CONST D3DXVECTOR2* pvA1,           CONST D3DXVECTOR2* pvA2,           CONST D3DXVECTOR2* pvB1,           CONST D3DXVECTOR2* pvB2,           D3DXVECTOR2* pvOut) { D3DXVECTOR2 v1 = *pvA1 - *pvB1; D3DXVECTOR2 vA = *pvA2 - *pvA1; D3DXVECTOR2 vB = *pvB2 - *pvB1; if (*pvA1 != *pvA2) ; else return FALSE;//線分が点のときは交差していないとする if (*pvB1 != *pvB2) ; else return FALSE;//線分が点のときは交差していないとする FLOAT fDeno = vA.x * vB.y - vA.y * vB.x;//外積の長さ //分母が0で、平行なときは if (fDeno != 0.0f) ; else return FALSE;//交差していないことにする FLOAT t = (v1.y * vB.x - v1.x * vB.y) / fDeno; FLOAT s = (v1.y * vA.x - v1.x * vA.y) / fDeno; if (t < 0.0f || t > 1.0f || s < 0.0f || s > 1.0f) return FALSE;//交差していない else { //交点を返す pvOut->x = vA.x * t + pvA1->x; pvOut->y = vA.y * t + pvA1->y; return TRUE;//交差 }

  • エラーチェック、ファイルに特定の文字列があったらエラーの処理を出したい。

    たびたび質問すいません。 エラーチェックについて質問です。 sub err_check{ $data="data.txt"; open(LOG,"$data"); @readerlist = <LOG>; close(LOG); foreach $list (@readerlist) { $newlist = $list; $newlist =~ s/\n//g; $newlist =~ s/\r//g; if($newlist eq $mail) {&err("$mail は既に登録済みです");} } } という記述は動作しました。この逆、$mailは登録されていませんというエラー処理を吐き出すには、($newlist eq $mail)を($newlist ne $mail)とやればできるのかと思いましたがうまくいきませんでした。 data.txtの中身はメールアドレスですが、アドレスごとに改行コード↑が入ります。data.txtのファイルの中身を検索して、$mailがなかったら登録してません。と はきだす処理の記述はどのようにしたらいいのでしょうか?

    • ベストアンサー
    • Perl