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

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

新規登録して質問してみよう
ただいま回答率
85.48%
列挙型

データ型の一種で、要素・メンバなど名前のある値や、型の列挙子によって構成されます。

Python

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

Q&A

解決済

1回答

2035閲覧

python:float型から最小値を求める。

kunikuni96

総合スコア16

列挙型

データ型の一種で、要素・メンバなど名前のある値や、型の列挙子によって構成されます。

Python

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

0グッド

0クリップ

投稿2020/05/04 08:47

編集2020/05/04 08:50

自分でやったこと

乱数を使って適当なデータ(1)を作成しそれを
y=a*sinx+1…(2)
で最小二乗法を用いてフィッティングし、最も良いaの値を決定したいです。

python

1b = np.random.normal(0,1,11) 2deg = np.linspace(0,90,11) 3data = 2*(1+b*0.1)*np.sin(np.radians(deg))+1 #乱数を使ったデータ(1) 4for i in range(1,10): 5 sin_i = (i*0.1+1.5)*np.sin(np.radians(deg))+1#a*sinx+1として1.5≦a≦2.5まで0.1刻みでaの値を変えていく…(2) 6 epsilon = ((data) - (sin_i))**2#データとsin_iの差の2乗の和をとる。 7 sum_all =sum(epsilon)#各iに対する配列epsilonの和をとる。 8 min(sum_all) #最小になるsum_allを表示する。

問題点 ,質問

sum_allはfloatになっているためmin()ではnot iterable(反復できない)となって最小値を求めることができません。

そこで、
1.float型のまま最小値を求める
or
2.float型からlist型に変形して最小値を求める。

方法を教えていただきたいです。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記で「最小になるsum_all」は求められるかと思います。 ※欲しい結果と合ってますか?

Python

1import numpy as np 2 3b = np.random.normal(0,1,11) 4deg = np.linspace(0,90,11) 5data = 2*(1+b*0.1)*np.sin(np.radians(deg))+1 #乱数を使ったデータ(1) 6 7l = [] 8for i in range(1,10): 9 sin_i = (i*0.1+1.5)*np.sin(np.radians(deg))+1#a*sinx+1として1.5≦a≦2.5まで0.1刻みでaの値を変えていく…(2) 10 epsilon = ((data) - (sin_i))**2#データとsin_iの差の2乗の和をとる。 11 sum_all =sum(epsilon)#各iに対する配列epsilonの和をとる。 12 l.append(sum_all) 13 14print(min(l))

投稿2020/05/04 09:39

meg_

総合スコア10580

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

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

kunikuni96

2020/05/04 10:08

meg_さん。 先日も回答いただきました。 何度も回答していただき、大変うれしく思います。ありがとうございます。 l=[] でさきに、配列を作っておき、 l.append() で配列を格納すればよいのですね。 さらに調べてみたところ、np.argmin()をつかうと 最小値が何番目のインデックスであるかを求められるということもわかりました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問