前提・実現したいこと
初めまして
mathematica初心者です。
hinteg=Integrate[1/(h∞*Log[h/(h∞ - h)] - h), {h, 0, h},
Assumptions -> h∞ > h > 0] (h∞は定数、hは変数です)
と数式を入力しましたが計算されません。
この積分をどうしても計算したいです。アドバイスお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージ いつもは赤字でエラーメッセージが表示されるのですが今回は out[-]=Integrate[1/(h∞*Log[h/(h∞ - h)] - h), {h, 0, h}, Assumptions -> h∞ > h > 0] となり、入力した式がそのままアウトプットされてしまいました。
該当のソースコード
ソースコード Integrate
試したこと
どうしたらいいのかわからなかったので、まったく的外れですがNintegrateやSolve関数などしようして計算してみました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
「{h, 0, h}」は合ってますか?
「Nintegrate」だと、どうなるのでしょうか?
返信ありがとうございます。
返信遅くなり申し訳ありません。
変数h(>0)の式を導出するので{h, 0, h}はあってると思います。一応不定積分でも解いてみたのですが、同じように赤字のエラーコードがなくインプットした式がそのままアウトプットされてしまいました。
Nintegrateを行うと赤字で「このNintegrateは有効ではありません」と出力されました。
> このNintegrateは有効ではありません
「NIntegrate」では、たしか「Assumptions」の指定はできません
また、h以外の変数(や定数)には全て数値が代入されてる必要がありますので、
> h∞は定数
に数値を代入しておかないといけません
そのあたりは大丈夫でしょうか?
質問者さんがやりたいこととズレてるかもしれませんが、何かの参考になるかもしれないので、一応書いておきます
> 変数h(>0)の式を導出するので{h, 0, h}はあってる
hi = 100;
NIntegrate[1/(hi*Log[h/(hi - h)] - h), {h, 0, h}]
を実行(hiはh∞のことです)すると「h = hは積分の有効な制限では無い」的な表示がされるので、積分区間の上限が「h」だとダメなような
hi = 100;
NIntegrate[1/(hi*Log[h/(hi - h)] - h), {h, 0, hi}]
と、積分区間の上限を「h∞」に変えて実行すると、その表示は無くなりますが、「{h} = {66.0141}付近のhで9回の再帰的二分法を実行した後、NIntegrateは規定の精度に収束できなかった」的な表示がされます
h = 66付近での関数の形を確認するために
hi = 100;
f[h_] := 1/(hi*Log[h/(hi - h)] - h)
Plot[f[h], {h, 0, hi}, PlotRange->{-1000/hi, 1000/hi}]
を実行してみたら、h = 66付近が±∞になってるようです
そこが積分区間に含まれないように、たとえば
hi = 100;
NIntegrate[1/(hi*Log[h/(hi - h)] - h), {h, 0, hi*0.65}]
のようにすれば実行できます
あるいは、±∞になるhを指定したら計算できるかもしれません
https://reference.wolfram.com/language/ref/message/NIntegrate/slwcon.html.ja
あなたの回答
tips
プレビュー