質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

898閲覧

pythonのソースコードの改変案

izm2192

総合スコア12

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/04 11:14

前提・実現したいこと

下のソースコードの横軸の数値とランダムで出てきている点を自分で指定した数値にしたいのですがどのように直したらいいのかわかりません。

該当のソースコード

python

1import numpy as np 2import matplotlib.pyplot as plt 3 4# hyperparameters 5mu = 0.1 6alpha = 1.5 7beta = 30 8 9# 10neuton_iter_num = 200 11num_datapoints = 15 12 13# step1 14U = np.random.uniform(0, 1) 15# step2 16t1 = -np.log(U)/mu 17t = [t1] 18 19 20for k in range(num_datapoints): 21 # step3 22 U = np.random.uniform(0, 1) 23 24 # step 4 25 if k == 0: 26 Sk = 1 27 28 u = t[k] - np.log(U)/mu # initial value of iteration 29 for _ in range(neuton_iter_num): 30 fu = np.log(U) + mu*(u-t[k]) + alpha/beta*Sk*(1-np.exp(-beta*(u-t[k]))) 31 fu_dash = mu+alpha*Sk*np.exp(-beta*(u-t[k])) 32 u -= fu/fu_dash 33 34 # step 5 35 t.append(u) 36 Sk = np.exp(-beta*(t[k+1]-t[k]))*Sk + 1 # find S(k+1) 37 38t = np.array(t)/max(t) 39 40# plt.figure(figsize=(20, 10), dpi=50) 41# plt.scatter(t, np.ones(len(t)), facecolors='none', edgecolors='red') 42# plt.show() 43 44 45# intensity 46time = np.linspace(0,1,10000) 47increase = list(map(lambda x: alpha*np.exp(-beta * x), time)) 48intensity = np.zeros(10000*2) 49for timepoints in t: 50 yuko = np.append(np.append(np.zeros(len(time[time<timepoints])), increase), np.zeros(len(time[time>=timepoints]))) 51 intensity += yuko 52 53 54# plt.figure(figsize=(20, 10), dpi=50) 55# plt.plot(time, intensity[:10000]) 56# plt.show() 57 58 59 60fig, ax1 = plt.subplots(figsize=(20, 5)) 61ax2 = ax1.twinx() 62ax1.scatter(t, np.ones(len(t)), facecolors='none', edgecolors='red', marker='*', s=150) 63ax2.plot(time, intensity[:10000], c='b', lw=1) 64plt.show()

補足情報(FW/ツールのバージョンなど)

上のソースコードはこのサイトから取ってきました
https://babaye.hatenablog.com/entry/2019/10/17/214442

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fumu7

2021/02/04 11:36

「ランダムで出てきている点を自分で指定した数値にしたい」と書かれていますが、そもそもランダムである数値は一定ではないので、指定した数値に固定できるものではありません。 まずは、「ランダム」という言葉の意味を辞書で調べましょう! 意味も判らない用語に基づいて、まともなプログラムを作るのは無茶苦茶です。
izm2192

2021/02/04 12:29

ランダムでだすというのをなくしてそこを自分が指定した変数にしたいという意味です、
guest

回答1

0

U = np.random.uniform(0, 1)

が二か所にありますね。これを

S = input('0と1の間の数を入れてください.')

に変更しましょう。
そのあとで、Sに入った文字列が浮動小数に変換できるかどうかをチェックしましょう。
変換出来たら0 と1の間にあるかをチェックしましょう。
問題なければUに入れれば良いでしょう。

問題があった時に、プログラムを終了するか、再度入力させるかなどは、ご自身の望むようにしてください。

投稿2021/02/04 12:55

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izm2192

2021/02/04 13:55

回答ありがとうございます 今試して変更してみましたがグラフの外に点が出たりなどしてしないます。。 横軸が83 その中に15,20,34.5,60の位置に点を打ちたい場合どのように書けばいいでしょうか 質問ばかりですいません。
ppaul

2021/02/04 22:20

そういうのは、質問を出すときに書くべきですね。
izm2192

2021/02/05 02:09

すいません。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問