python 初心者です。
x_0=1
X_(n+1)=2*(xn)+3
数列をfor文を使って作りたいのですがどのように作れば良いのでしょうか。
できるだけ短いコードでお願いします。また解説もしてくださると嬉しいです。
答えは1,5,13,29,,,,となっていきます。繰り返す回数は30回です。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
n 項目だけでなく、すべての項を求めるということでしょうか?
for で計算する。
python
1N = 30 # 項数 2x = 1 # 初項 3array = [x] # 求める数列 4for _ in range(N - 1): # 初項分引く 5 x = 2 * x + 3 6 array.append(x) 7print(array)
[1, 5, 13, 29, 61, 125, 253, 509, 1021, 2045, 4093, 8189, 16381, 32765, 65533, 131069, 262141, 524285, 1048573, 2097149, 4194301, 8388605, 16777213, 33554429, 67108861, 134217725, 268435453, 536870909, 1073741821, 2147483645]
itertools.accumulate を使う方法
itertools.accumulate(iterable[, func])
第2引数 func は第1引数に accumulate() で計算しているこれまで計算値、第2引数に入力の配列の今のインデックスの値を受け取る。
import itertools array = list(itertools.accumulate(range(1, N + 1), lambda xn, x: 2 * xn + 3)) print(array)
一般項
a_{n + 1} = 2 * a_n + 3
の一般項は
a_n = 4 * 2^{n - 1} - 3
なので、
python
1def a(n): 2 return 4 * 2 ** (n - 1) - 3 3 4array = [] 5for i in range(1, N + 1): 6 array.append(a(i))
もしくは numpy で一発で以下のように計算してもよいかと思います。
python
1def a(n): 2 return 4 * 2 ** (n - 1) - 3 3 4array = a(np.arange(1, N + 1))
投稿2018/12/10 10:16
編集2018/12/10 10:40総合スコア21956
0
ベストアンサー
... for文を使って作りたい ...
... できるだけ短いコードで ...
... 繰り返す回数は30回 ...
という事で考えてみました。
python
1nums = [1] # 数列を保存する。まずは初項 x_0 をセット 2for _i in range(30): # x_1, ... x_30 まで求める 3 nums.append(nums[-1] * 2 + 3) # 最終項目から次の値を計算して配列に追加 4 5print(nums) # 求めた数列を表示
投稿2018/12/10 15:00
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。