Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python NumPyで度数法の角度配列の正接(タンジェント)を求める方法

三角関数の正接(タンジェント)は、要素ごとに np.sin(x)/np.cos(x) を計算することと同等です。度数法(度単位)で指定された角度の配列の正接を求めるには、Python NumPy の numpy.tan() メソッドを使用します。

このメソッドは、第1パラメータ x の各要素に対して正接を返します。第1パラメータ xラジアン単位の角度を表し(2π が 360 度に相当)、ここには角度の配列を渡します。そのため、度数法の値をそのまま渡すのではなく、np.pi / 180 を掛けてラジアンへ変換する必要がある点に注意しましょう。

主なパラメータの説明

第2パラメータ(out): 結果を格納するための ndarray です。省略可能な引数で、指定する場合は入力がブロードキャストされる形状である必要があります。指定しない場合や None を指定した場合は、新しく確保された配列が返されます。タプルとして指定する場合(キーワード引数としてのみ可能)は、出力の数と同じ長さである必要があります。

第3パラメータ(where): 入力に対してブロードキャストされる条件です。条件が True の位置には ufunc の計算結果が設定され、それ以外の位置では out 配列の元の値が保持されます。なお、デフォルトの out=None で未初期化の配列が作成された場合、条件が False の位置は初期化されないまま残る点に注意してください。

手順

まず、必要なライブラリをインポートします。

import numpy as np

tan 0°、tan 30°、tan 45°、tan 60°、tan 90°、tan 180°、tan -180° を求めるための角度の配列を作成します。

arr = np.array((0., 30., 45., 60., 90., 180., -180.))

作成した配列を表示します。

print("Array...\n",arr)

配列のデータ型を確認します。

print("\nArray datatype...\n",arr.dtype)

配列の次元数を取得します。

print("\nArray Dimensions...\n",arr.ndim)

配列の要素数を取得します。

print("\nNumber of elements in the Array...\n",arr.size)

度数法で指定された角度の配列の正接を求めるには、NumPy の numpy.tan() メソッドを使用します。度をラジアンに変換してから渡すのがポイントです。

print("\nResult...",np.tan(arr * np.pi / 180. ))

サンプルコード

import numpy as np

# 三角関数の正接は、要素ごとの np.sin(x)/np.cos(x) と同等です。
# 度数法で指定された角度の配列の正接を求めるには、
# Python Numpy の numpy.tan() メソッドを使用します。

print("The Trigonometric tangent of an array of angles...")

# 角度の配列
# tan 0°, tan 30°, tan 45°, tan 60°, tan 90°, tan 180°, tan -180° を求める
arr = np.array((0., 30., 45., 60., 90., 180., -180.))

# 配列を表示
print("Array...\n", arr)

# 配列のデータ型を取得
print("\nOur Array type...\n", arr.dtype)

# 配列の次元数を取得
print("\nOur Array Dimensions...\n", arr.ndim)

# 配列の要素数を取得
print("\nNumber of elements...\n", arr.size)

# 度数法の角度配列の正接を求めるために numpy.tan() を使用
# 度をラジアンに変換するため np.pi / 180 を掛ける
print("\nResult...", np.tan(arr * np.pi / 180.))

実行結果

The Trigonometric tangent of an array of angles...
Array...
[   0.   30.   45.   60.   90.  180. -180.]

Our Array type...
float64

Our Array Dimensions...
1

Number of elements...
7

Result... [ 0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00
1.63312394e+16 -1.22464680e-16 1.22464680e-16]

結果のポイント

出力を見ると、tan 0° = 0tan 30° ≈ 0.577tan 45° = 1tan 60° ≈ 1.732 という数学的に正しい値が得られています。

一方、tan 90° は数学的には定義されませんが、浮動小数点演算の誤差により非常に大きな値(約 1.63 × 10¹⁶)が返されています。また、tan 180°tan -180° は厳密には 0 ですが、微小な丸め誤差により ±1.22 × 10⁻¹⁶ という極めて 0 に近い値になっています。これは NumPy に限らず浮動小数点演算全般に共通する挙動なので、実務では許容誤差を考慮した処理を行うことが推奨されます。

  1. Pythonで指定された3つの角度から正の面積を持つ三角形が作成できるか判定する方法

    プログラミングの練習問題としてよく登場するのが、「与えられた3つの角度を使って、正の面積を持つ三角形を作成できるかどうかを判定する」という課題です。本記事では、Pythonを使ってこの問題を解く方法を、条件と実装例を交えながらわかりやすく解説します。 三角形が成立するための条件 3つの角度から三角形が成立するためには、以下の条件を満たす必要があります。 3つの角度がすべて0より大きい(0ではない) 3つの角度の合計がちょうど180度である 任意の2つの角度の和が、残りの1つの角度以上である 例えば、入力が a = 40、b = 120、c = 20 の場合、40 + 120 + 20 =

  2. Pythonで配列内のnCr値が最大となるペアを検索する方法

    問題概要 n個の整数を含む配列arrが与えられたとき、配列からarr[i]とarr[j]を選び、二項係数arr[i]Carr[j](組み合わせの数)が最大になるようなペアを見つける必要があります。条件を満たすペアが複数存在する場合は、そのうちのどれか1つを返せば構いません。 例えば、入力が[4, 1, 2]の場合、出力は「4 2」になります。これは、4C1 = 4、4C2 = 6、2C1 = 2と計算でき、(4, 2)のペアが最大値6を与える唯一の組み合わせだからです。 解法の考え方 この問題を効率的に解くには、二項係数の重要な性質を利用します。nCrは、rがn/2に最も近いときに最大値を取る