実現したいこと
プログラムがなにもわからないまま難しい授業に突入してしまいわからないところがわからないので、どなたか優しい方解説していただけますか。
発生している問題・分からないこと
連立方程式を行列Aにすることはわかります。ただ、最初のepsからコードが全く分かりません。このコードはクラスの人が送ってくれました。先生に聞こうと思ったのですが、調べての一点張りで(ごもっとも)。ただ、前述したとおり、まったくわからないので、わからないコードを調べると調べたところで分からないことが発生してまいってしまいました。
該当のソースコード
import numpy as np eps=1e-8 N=100 A=np.matrix([[4,-1,-1,0,200], [-0.25,1,0,-0.25,50], [-0.5,0,2,-0.5,50], [0,-0.01,-0.01,0.04,1]]) n,m=np.shape(A) b=A[:,m-1] for i in range(n): A[i]/=A[i,i] b/=A[i,i] x=np.matrix([[100],[100],[75],[68.75]]) B=np.eye(n)-A[:,0:n] for m in range(N): x_tmp=np.copy(x) x=b+B*x_tmp if np.linalg.norm(x-x_tmp)<eps: break for i in range(n): print('x[%d]=%f'%(i,x[i,0]))
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
x[0]=87.500000
x[1]=87.500000
x[2]=62.500000
x[3]=62.500000
補足
特になし
> プログラムがなにもわからないまま難しい授業に突入してしまい
状況が分からないのですがまず何の授業でしょうか?
「 プログラムがなにもわからない」というのはPythonの文法が分からないという意味でしょうか?文法についてはある程度暗記するしかないと思いますが。
> プログラムがなにもわからないまま難しい授業に突入してしまいわからないところがわからないので、どなたか優しい方解説していただけますか。
さすがに授業で急に知らない事ばかり詰め込んでくるとは思えないので、今までの授業をきちんと受けていなかっただけではないですか?
ジタバタしてもどうにもならないので、今からでも頑張って復習するか、諦めて留年するか好きな方を選んでください。
meg_さん
横から失礼します。
授業についてはおそらく、数値計算で連立方程式の解を求めるプログラミングの授業だと思います。
提題のコードは、その手法の一つであるヤコビ法だと思われます。
meg_さん、回答ありがとうございます。
for文やif文とかの簡単な文法はある程度覚えているのですが、np.~や[:,0:n]がなにを表しているかわからなかったです。
nururiさん、回答ありがとうございます。誠に仰られる通りでございます。普通に諦めて留年したほうがいいですよね...。私何をしても覚えられないし課題の提出二週間前からわからなくてしらみつぶしに調べていって調べていった先で全く見たことのないコードが出てきてそれをまた調べてもまたわからないのが出てきて普通に精神的に参っていただけなので、こんなくそみたいなやつに回答なんかされなくても大丈夫ですよ。nururiさんの貴重なお時間を無駄にしてしまい誠に申し訳ございませんでした。
numpyに関する知識が足りないのだと思います。まずはnumpyの部分の復習をしたり、本やネットなどを頼りにしてnumpyに関する基礎知識を身につけるところからです。
それでもお手上げということであれば、Udemyのような講座を受けることを検討しても良いかもしれません。残念ですがこのサイトは手取り足取り教えてもらえるようなサイトではないので。
参考
https://teratail.com/help/question-tips
https://www.udemy.com/courses/search/?src=ukw&q=numpy
> np.~や[:,0:n]がなにを表しているかわからなかったです。
numpyモジュールの使い方や配列操作についてですね。よく使う関数はそれほど多くはないかと思うので反復練習が効果的かと思います。私はドキュメントを読みつつそれでも分からない箇所はネット検索しています。
回答2件
あなたの回答
tips
プレビュー