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

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

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

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

Q&A

解決済

2回答

5196閲覧

対数プロットした曲線の一次の近似式と曲線を同時に表示

hoshi1996

総合スコア53

Python

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

0グッド

0クリップ

投稿2019/09/05 03:49

編集2019/09/05 03:53

python

1import matplotlib.pyplot as plt 2x = [4 + 0.25 * i for i in range(25)]#4~10の整数のリスト 3y = [0.6385324830677616, 4 0.6202600090850505, 5 0.6042034525526795, 6 0.5908478444189723, 7 0.5760411352073588, 8 0.5633054576310903, 9 0.5519276896366729, 10 0.5407759907179418, 11 0.5306922913612645, 12 0.5210073061855648, 13 0.5127922088918028, 14 0.5043641156274032, 15 0.49672403869973114, 16 0.4902536075016084, 17 0.48345009043618836, 18 0.47752668792209757, 19 0.47244671508517716, 20 0.46711812358368443, 21 0.4621935718441819, 22 0.45747337435406726, 23 0.4533864474756825, 24 0.4496544302383081, 25 0.445658694860448, 26 0.4425078219623999, 27 0.4393855751222488] 28plt.plot(x, y) 29plt.xscale('log') 30plt.yscale('log')

イメージ説明

このグラフの一次の近似式を求める。

python

1import numpy as np 2linear = np.polyfit(x, y, 1) 3y_linear = [linear[0] * x_linear + linear[1] for x_linear in x] 4 5plt.plot(x, y_linear)

イメージ説明

一つの画像に表示

python

1plt.plot(x, y) 2plt.plot(x, y_linear) 3plt.xscale('log') 4plt.yscale('log')

イメージ説明
このようにうまく表示できません。
どのようにしたらよいでしょうか。
対数プロットした曲線の傾きを知りたいので一次式の近似がしたいです。

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

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

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

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

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

guest

回答2

0

自己解決

python

1x = [np.log10(4 + 0.25 * i) for i in range(25)] 2y = [np.log10(i) for i in y]

として近似式を作り直してみました。

python

1plt.plot(x, y_linear) 2plt.plot(x, y, color='y')

イメージ説明
一つのグラフに表示できた。

投稿2019/09/05 04:57

hoshi1996

総合スコア53

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

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

0

このようにうまく表示できません。

どのような結果を期待していて、どううまくいかなかったのでしょうか。
3枚目の画像で近似したオレンジの直線が曲線になっているのは、x軸、y軸のスケールを対数スケールにしているからです。
以下の2行を削除すれば、線形スケールになり、近似した直線は真っ直ぐ表示されます。

plt.xscale('log') plt.yscale('log')

曲線の傾きを知りたいので一次式の近似がしたいです。

曲線の傾きを知りたいのであれば、linear[0] の値がそうではないでしょうか。

投稿2019/09/05 04:33

tiitoi

総合スコア21954

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

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

hoshi1996

2019/09/05 04:39

一枚目と二枚目の画像を比較したいです。 そのためその二枚の画像を一つのグラフ内で表現したいです。
tiitoi

2019/09/05 04:42 編集

1枚目の画像はxy軸が対数スケールで2枚目の画像はxy軸が線形スケールですよね?スケールをどちらかに合わせないと1つの図にプロットすることはできないと思いますがいかがでしょうか
hoshi1996

2019/09/05 04:54

その通りです。スケールを合わせて近似式を作り直してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問