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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

0回答

1259閲覧

ああああいいいいいいい

bUyTj5ZFx0uMiwZ

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2021/12/02 08:39

編集2021/12/04 05:05

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
pythonで以下の数値計算
\left{
-\frac{d^2y}{dx^2}+px\frac{dy}{dx}=\lambda*y (0<x<1)
\frac{dy}{dx}(0)=0, y(1)=0
y(x)>0, (0\leq x <1)
という問題を考えています。今,p=20としてこの問題に取り組んでいるのですが,

発生している問題・エラーメッセージ

import numpy as np import scipy.linalg from scipy.special import * import matplotlib.pyplot as plt import sympy as sym sym.symbols("x") delta_x = 0.025 x0, x1 = 0, 1 N=int((x1-x0)/delta_x) print("N=",N) v= np.linspace(-1,1,N) a=v y = np.zeros([N-1,N+1]) dy = sym.diff(y,x) dy[:,0] = 0 y[:,-1] = 0 p=20 A=np.zeros([N-1,N-1]) B=np.identity(N-1) for i in range(N-1): # 3重対角行列なのでindexの位置を気をつけること if i == 0: A[i,i] = 2/(delta_x**2) A[i,i+1] = -1/(delta_x**2)-(p*a[i])/(2*delta_x) elif i == N-2: A[i,i-1] = -1/(delta_x**2)+(p*a[i])/(2*delta_x) A[i,i] = 2/(delta_x**2) else: A[i,i-1] = -1/(delta_x**2)+(p*a[i])/(2*delta_x) A[i,i] = 2/(delta_x**2) A[i,i+1] = -1/(delta_x**2)-(p*a[i])/(2*delta_x) eigen, vec= scipy.linalg.eig(A,B) print("eigen values=",eigen) for j in range(N-1): for i in range(1,N): y[j, i] = vec[i-1,j] X= np.linspace(x0,x1, N+1) plt.plot(X, y[0,:],'-',markersize=5,label='y1') plt.plot(X, y[1,:],'-',markersize=5,label='y2') plt.plot(X, y[2,:],'-',markersize=5,label='y3') plt.legend(loc='upper right') plt.xlabel('X') plt.ylabel('Y') plt.grid(); plt.title("a(x)=x, p=%d"%(p), {"fontsize":25}) plt.show()

該当のソースコード

TypeError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_10976/3986481418.py in <module> 13 y = np.zeros([N-1,N+1]) 14 dy = sym.diff(y,x) ---> 15 dy[:,0] = 0 16 y[:,-1] = 0 17 p=20 TypeError: 'Zero' object does not support item assignment

試したこと

上のコードでは,y(x)>0というコードを打ち込んでいない状況です.改善点などをご教授していただければと思い,投稿させていただきました.何卒よろしくお願いいたします.

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

https://qiita.com/sci_Haru/items/2d238fcadbe7990239df
上記のサイトを参考にさせていただいてます.
独学でpythonの方を勉強しているので,お手柔らかにお願いします.

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/12/04 09:54

「前提・実現したいこと」の数式をMathJaxで入力しても正しく表示されないので、 正しく表示できる形に修正した方が回答がつくような気がします。 https://www.mathjax.org/#demo 難しい数式のことはわからないのですが、 直近の問題として、 「TypeError: 'Zero' object does not support item assignment」 を解消できれば良いのでしょうか? sympyを使ったことがないのですが、 `sym.diff(y,x)`の戻り値の`dy`の操作でエラーになっているように見えます。 `sym.diff(y,x)`の引数に渡している`x`は、`sym.symbols("x")`で宣言しているように見えますが、 sympyのドキュメントを見ると`x`を変数として宣言できていないようにも見えました。 ---------- In contrast to other Computer Algebra Systems, in SymPy you have to declare symbolic variables explicitly: >>> >>> x = sym.Symbol('x') >>> y = sym.Symbol('y') unlike a NumPy array, you can also put Symbols in it: >>> >>> x, y = sym.symbols('x, y') https://scipy-lectures.org/packages/sympy.html#symbols ---------- 見当違いでしたらすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問