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

Pythonで正弦級数(sin x)の合計を求めるプログラム

正弦級数とは

ある値 x が与えられたとき、sin(x) の級数の合計を計算することを考えてみましょう。正弦(サイン)級数は、次のように複数の項から構成される無限級数です。

sine(x) = x − x^3/fact(3) + x^5/fact(5) − x^7/fact(7) …

これは sin(x) のテイラー展開(マクローリン展開)に基づいた式で、fact(n) は n の階乗を表します。項数を増やすほど、実際の sin(x) の値に近い高精度な近似が得られます。

このような級数の問題を解くには、まず角度を入力として受け取り、それをラジアンに変換します。その後、級数のすべての項を順番に処理し、演算によって合計を求めていきます。

問題を解くためのアプローチ

  • 項数の上限 n と角度(度)を入力として受け取る。
  • べき乗関数を使って各項を計算しながら、合計を求める。
  • 結果を出力する。

実装例

n = 5
deg = 10
deg = deg*3.14/180
p = 1
f = 1
s = deg
sine = -1

for i in range(3, n+1, 2):
    deg = deg*sine
    p = pow(deg, i)
    f = f*i*(i-1)
    s = s + p/f

print("The sum of the series of sine(10) is:", s)

コードの解説

  • deg = deg*3.14/180: 度数法で与えられた角度を、π ≒ 3.14 を使ってラジアンに変換しています。
  • for i in range(3, n+1, 2): 3 から n までの奇数項(x^3、x^5、…)だけを順に処理します。
  • deg = deg*sine: 変数 sine は -1 なので、項ごとに符号を交互に切り替える役割を果たします。
  • p = pow(deg, i): 各項の分子となるべき乗部分を計算します。
  • f = f*i*(i-1): 階乗を効率的に求めることで、各項の分母を計算します。
  • s = s + p/f: 計算した各項を合計に加算していきます。

出力結果

上記のコードを実行すると、次のような出力が得られます。

The sum of the series of sine(10) is: 0.17356104142876477

この結果は、sin(10°) ≒ 0.1736 という実際の値とよく一致しており、級数による近似が正しく機能していることがわかります。

  1. Pythonで行列の転置を求めるプログラム

    この記事では、与えられた問題に対する解法とアプローチについて詳しく解説します。 問題文 ある行列が与えられたとき、その転置を同じ行列に格納し、結果を表示する必要があります。 行列の転置とは、行を列に、列を行に入れ替えたものです。言い換えれば、行列Aの転置は、要素A[i][j]をA[j][i]と入れ替えることで得られます。 実装例 N = 4 def transpose(A): for i in range(N): for j in range(i+1, N): A[i][j], A[j][i] = A[j][i], A[i][j] # ドライ

  2. Pythonで配列(リスト)の合計を求める方法をわかりやすく解説

    この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に