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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Q&A

0回答

546閲覧

Pythonで二階常微分方程式をEuler法を用いて解く

HaruKasu

総合スコア6

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

0グッド

1クリップ

投稿2019/11/19 14:48

Pythonで以下の二階常微分方程式をscimpyなどを使わずにEuler法を用いて解くという課題です。

x'' = -x

そこで様々なサイトなどを調べてどうにかこうにか以下のソースコードを書いたのですが、エラーが出てうまくいきません。

import numpy as np
import matplotlib.pyplot as plt
from math import*

f1 = 1
g1 = 0
dx = 0.01

for i in range(101):

x = i*dx f2 = f1 + dx*g1 g2 = g1 - dx*f1 f = cos(x) t_list.append(x) y1_list.append(f1) f1 = f2 g1 = g2 print('x = ', x) print('計算値 = ', f1) print('正確値 = ', f) print(' ')

plt.plot(x, y1_list, color='r')
plt.plot(x, np.cos(x), color='b')

plt.xlim(0.0, 1,.0)
plt.ylim(-1.0, 1.0)

plt.show()

これに対して現在出ているエラーは以下の通りです。


ValueError Traceback (most recent call last)
<ipython-input-9-d23a7437bae6> in <module>
31 print(' ')
32
---> 33 plt.plot(x, y1_list, color='r')
34 plt.plot(x, np.cos(x), color='b')
35

~\Anaconda3\lib\site-packages\matplotlib\pyplot.py in plot(scalex, scaley, data, *args, **kwargs)
2793 return gca().plot(
2794 *args, scalex=scalex, scaley=scaley, **({"data": data} if data
-> 2795 is not None else {}), **kwargs)
2796
2797

~\Anaconda3\lib\site-packages\matplotlib\axes_axes.py in plot(self, scalex, scaley, data, *args, **kwargs)
1664 """
1665 kwargs = cbook.normalize_kwargs(kwargs, mlines.Line2D._alias_map)
-> 1666 lines = [*self._get_lines(*args, data=data, **kwargs)]
1667 for line in lines:
1668 self.add_line(line)

~\Anaconda3\lib\site-packages\matplotlib\axes_base.py in call(self, *args, **kwargs)
223 this += args[0],
224 args = args[1:]
--> 225 yield from self._plot_args(this, kwargs)
226
227 def get_next_color(self):

~\Anaconda3\lib\site-packages\matplotlib\axes_base.py in _plot_args(self, tup, kwargs)
389 x, y = index_of(tup[-1])
390
--> 391 x, y = self._xy_from_xy(x, y)
392
393 if self.command == 'plot':

~\Anaconda3\lib\site-packages\matplotlib\axes_base.py in _xy_from_xy(self, x, y)
268 if x.shape[0] != y.shape[0]:
269 raise ValueError("x and y must have same first dimension, but "
--> 270 "have shapes {} and {}".format(x.shape, y.shape))
271 if x.ndim > 2 or y.ndim > 2:
272 raise ValueError("x and y can be no greater than 2-D, but have "

ValueError: x and y must have same first dimension, but have shapes (1,) and (808,)

何を言われているのか、何が間違っているのか、何をどうすればいいのか、いろいろ調べてもPythonの本を読んだりしてもよく分かりません。一週間格闘しましたがちっとも要領を得ません。

Pythonはおろか、プログラミング初心者です。
きっと根本的な、初歩的なミスがたくさんあるのだと思います。どなたか、ヒントを頂けませんか。

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

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

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

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

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

2KOH

2019/11/19 16:04

他の言語ならまだしも、Python でインデント不明なコードを提示されてもどうしようもありません。 (がんばればインデントを推測できなくはないけれども。) 質問を編集して Markdown記法を使って書き直してください。
HaruKasu

2020/01/17 06:40

2KOH様  返信が遅れて申し訳ありません。この質問をしたときから暫く経ち、だんだんとpythonに慣れてきて、「インデント不明なコード」というご指摘の意味がようやく分かりました。さらにMarkdown記法がこのサイトの用語であることもつい最近知りました。  せっかく御指摘頂いたのに何の反応も返せず(返そうにも何をどう直せばいいか分からなかったのです)、本当に大変失礼致しました。 P.S.この課題は結局Pythonでの実装を諦め、以前少し習って少し慣れていたC言語で作り直しました。何とか出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問