z_at_value¶
- astropy.cosmology.z_at_value(func, fval, zmin=1e-08, zmax=1000, ztol=1e-08, maxfun=500, method='Brent', bracket=None, verbose=False)[ソース]¶
赤い移動を見つける
z
いつですかfunc(z) = fval
それがそうです。これは、宇宙関数または方法のうちの1つ(例えば、Planck 13.Distmod)が既知の値に等しい赤シフトを見つけることができる。
警告
あなたが反転する関数の行動を知っていることを確認してください!宇宙学によっては、唯一の解決策は存在しないかもしれない。例えば,標準的なLambda CDM宇宙学では,2つの赤シフトがあり,1500 Mpcの角径距離,z~0.7とz~3.8が与えられている。強制する.
z_at_value
ご興味のある解決策をお探しでしたら、ご利用くださいzmin
そしてzmax
キーワードは、検索範囲を制限するために制限される(以下の例を参照)。- パラメータ
- func機能や方法
入力の関数として赤シフトを受け取る.
- fval :
Quantity
実例.数量例 の(スカラー)値
func(z)
健康を回復させることができます- zmin浮動、オプション
の探索下限
z
それがそうです。距離モジュールのような宇宙学的関数における分岐に注意し,z=0の場合(デフォルトでは1 e-8とする).- zmax浮動、オプション
の検索上限
z
(デフォルト値は1000)。- ztol浮動、オプション
中の相対誤差
z
受け入れられる収束。- maxfun形が整っていて、オプションです
最適化ルーチンで許容される最大関数は、値数(デフォルト値500)を求める。
- method文字列または呼び出し可能、オプション
最小化されたソルバのタイプに渡す.内蔵オプションを提供します
minimize_scalar()
‘Brent’(デフォルト)、‘Golden’および‘bound’名は大文字を区別しません-詳細は、そこの文書を参照してください。それはまた、“カスタム最小化プログラム”の注釈に記載された要件を満たす任意のユーザによって提供される呼び出し可能オブジェクトを渡すことであるカスタムソルバを受け入れるか、またはより詳細に参照される。 Optimization (scipy.optimize) -それらの使用は現在テストされていないにもかかわらず。バージョン 4.3 で追加.
- bracketシーケンス、オプション
“ブレント”と“黄金”の方法では
bracket
バウンディング間隔が定義され、Z 1<Z 2<Z 3となるように、3つの項(Z 1、Z 2、Z 3)を有することができる。func(z2) < func(z1), func(z3)
または、下り坂ステント探索の開始間隔の2つの項目Z 1およびZ 3を仮定する。これは、角直径距離などの非単調関数については、最大値の所望の側で探索を開始するために使用することができるが、用法説明を理解するために以下の例を参照されたい。バージョン 4.3 で追加.
- verboseブル値、オプション
印刷求解プログラムの診断出力(デフォルト
False
)。バージョン 4.3 で追加.
- 返品
- z浮いている.
赤の移動.
z
満足感.zmin < z < zmax
そしてfunc(z) = fval
はい。ztol
それがそうです。
注意事項
これは任意に入力された宇宙学に有効であるが,同一宇宙学の大量の値を倒そうとすると効率が悪い。この場合、より速い方法は、関連する赤シフト範囲をカバーする多くの密接な間隔の赤シフトにおいて1つの値配列を生成し、次いで、補間を使用して関心のある各値における赤シフトを探すことである。例えば、Planck 13宇宙学における距離モジュールの10 ̄6値に対応する赤シフトを効率的に見つけるためには、以下の操作を実行することができる。
>>> import astropy.units as u >>> from astropy.cosmology import Planck13, z_at_value
24~44の間の10 ̄6距離モジュールを生成し、対応する赤シフトを見つける必要がある:
>>> Dvals = (24 + np.random.rand(1000000) * 20) * u.mag
ZminとZmaxの間の50個の等しい対数間隔値を使用して、私たちが必要とする赤シフト範囲をカバーする距離係数グリッドを作成する。原木間距離を用いて低距離弾性率で曲線の急峻な部分を十分にサンプリングした。
>>> zmin = z_at_value(Planck13.distmod, Dvals.min()) >>> zmax = z_at_value(Planck13.distmod, Dvals.max()) >>> zgrid = np.logspace(np.log10(zmin), np.log10(zmax), 50) >>> Dgrid = Planck13.distmod(zgrid)
最後に、各距離モジュールにおける赤シフトを求めるために補間を行う。
>>> zvals = np.interp(Dvals.value, Dgrid.value, zgrid)
実例.
>>> import astropy.units as u >>> from astropy.cosmology import Planck13, Planck18, z_at_value
年齢と見返し時間と赤シフトは単調であるため,唯一の解を見つけることができる:
>>> z_at_value(Planck13.age, 2 * u.Gyr) 3.19812268
しかし,角径は単調ではなく,2つの赤シフトが1500 Mpcの値を与えている.ZminおよびZmaxキーワードを使用して興味のあるキーワードを検索することができます:
>>> z_at_value(Planck18.angular_diameter_distance, ... 1500 * u.Mpc, zmax=1.5) 0.68044452 >>> z_at_value(Planck18.angular_diameter_distance, ... 1500 * u.Mpc, zmin=2.5) 3.7823268
あるいは、
bracket
オプションは、必要な領域上で関数ソルバを初期化するために使用されてもよいが、これは、関数ソルバがこの開始括弧の近くに維持されることを保証しないことに留意されたい。角径距離を例にとると,この宇宙学では赤移動1.6付近に最大値があり,この最大値のいずれかの側に括弧を定義すると通常同じ側の解が戻る:>>> z_at_value(Planck18.angular_diameter_distance, ... 1500 * u.Mpc, bracket=(1.0, 1.2)) 0.68044452
しかし、この点は特定できず、特に選択された括弧が広すぎ、および/または転換点に近すぎる場合:
>>> z_at_value(Planck18.angular_diameter_distance, ... 1500 * u.Mpc, bracket=(0.1, 1.5)) 3.7823268
同様に、同じ最小化プログラムおよび同じ起動条件についても、アーキテクチャやライブラリバージョンによって異なる結果を見つけることができる。
>>> z_at_value(Planck18.angular_diameter_distance, ... 1500 * u.Mpc, bracket=(2.0, 2.5)) 3.7823268
>>> z_at_value(Planck18.angular_diameter_distance, ... 1500 * u.Mpc, bracket=(2.0, 2.5)) 0.68044452
したがって、3パラメータ変数を使用することは、解決策が括弧内に維持されることを保証するために、一般により安全である:
>>> z_at_value(Planck18.angular_diameter_distance, ... 1500 * u.Mpc, bracket=(0.1, 1.0, 1.5)) 0.68044452
なお,光度距離と距離モジュール(他の2つは通常逆数の量)は平坦かつ開放的な宇宙では単調であるが,閉じた宇宙ではそうではないことに注意されたい。