Re: [問題] 三角函數的Indeterminate
※ 引述《bjiyxo (若自礌)》之銘言:
: 在寫mathematica的時候
: 計算到三角函數
: 過程當中無可避免的會遇到tan90這種情況
: 然後所有程式就通通變成Indeterminate了
: 於是我想要克服以下這種情況
: 想要用if tan90==Indeterminate 或者 ComplexInfinity 或者 NaN
: 三種方法都無效
: 請問版上的高手
: 此時我應該怎麼做才能修正這個問題呢?
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.113.66.77
: 推 LPH66:個人覺得應該回頭去看程式邏輯哪裡有問題 03/22 02:07
: → LPH66:如果真的不可避免的話 在送角度進 Tan 前檢查 03/22 02:08
: → bjiyxo:可是我是要從值arctan回去...所以要怎麼克服 03/22 12:37
: → bjiyxo:一個無窮大的時候送回arctan檢查變成pi/2 03/22 12:38
: → bjiyxo:我做的東西因為跟斜率有關 當遇到鉛錘線的時候 03/22 12:39
: → bjiyxo:斜率無窮大時會讓我很麻煩 03/22 12:40
如果沒誤會的話, 原Po的問題是:
有一個函數 f(x), f(x)在某些時候會變成無限大,
原Po希望在那些時候得到 ArcTan(f(x))= Pi/2.
也許可以利用三角函數關係 ArcTan(y) = ArcSin(y/Sqrt(1+y^2)),
得到 ArcTan(f(x)) = ArcSin( f(x) / sqrt(1+f(x)^2) )
= ± ArcSin ( f(x)R(x) / sqrt(R(x)^2+ (R(x)f(x))^2) )
= ± ArcSin ( 1 / sqrt(1+ 1/(f(x)^2) )
這裡R(x)可以取任何使得f(x)R(x)不會變成無限大的函數, 例如取 R(x)=1/f(x)
=========
下面這個例子是我試過有效的, 如果原Po的f(x)很複雜的話可能就無效了.
f[x_] = 1/x^2;
R[x_] = 1/f[x];
h1[x_] = ArcSin[f[x]*R[x]/Sqrt[R[x]^2 + (f[x]*R[x])^2]];
h2[x_] = ArcSin[1/Sqrt[1 + 1/f[x]^2]];
h1[0]
h2[0]
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 72.12.197.83
※ 編輯: fresca 來自: 72.12.197.83 (03/23 03:45)
推
03/23 10:32, , 1F
03/23 10:32, 1F
推
03/29 22:49, , 2F
03/29 22:49, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章