こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PythonとRの習得の方法について

PythonとRは似ているように見えます。特に、マトリックスとかベクトルの掛け算をまるで数値の掛け算のように処理しようとしているところがあり、それ以外の言語を学んだものから見ると本当に大丈夫かなと思う面があります。初等的な数学が示すようにマトリックスは掛け算ができない場合があるからです。一方で2つの数値の掛け算の処理は例外が全くないと言っていいと思います。PythonやRで計算がおかしいとか、エラーが出るとき、マトリックスやベクトルの積でミスをしているということがあるかもしれないという不確実さから逃れられないように思うのですが。深層学習の本などではマトリックス計算が数多く出てくるので本当に大丈夫なのかなと思うのですが、どのように確実性の担保を取るのでしょうか。それがないと足元が揺らぐような気がするのですが。CやFortranは本当に電卓をたたいているような雰囲気で処理しているので確かな感じがするのですが、それとかなり違った印象なのですが。

投稿日時 - 2019-12-05 19:10:27

QNo.9686662

困ってます

質問者が選んだベストアンサー

何を心配しているのかと思う。「マトリックスとかベクトルの掛け算をまるで数値の掛け算のように処理しようとしている」のと,それを自分で数値同士の掛け算を書くのとでは圧倒的に後者が安心できると思うがいかが。
「PythonやRで計算がおかしいとか、エラーが出るとき、マトリックスやベクトルの積でミスをしているということがあるかもしれない」なんていうのは,他の言語で数値同士の掛け算をするときにミスをしているかもと不安に思うのと同じだろう。
なお,fortranでの例ですが,
real(8) :: mat(3,3) = reshape( (/1.0d0, 2.0d0, 3.0d0, 4.0d0, 5.0d0, 6.0d0, 7.0d0, 8.0d0, 9.0d0/), shape(mat) )
real(8) :: vec1(3) = (/-3.0d0, -2.0d0, -1.0d0/)
real(8) :: vec2(3)
vec2 = matmul( mat, vec1 )
こんな計算は普通にやりますよ。

投稿日時 - 2019-12-05 21:18:55

お礼

回答ありがとうございます。まあsin(x)ですら怖いかと言われるとそれはないと言えそうですが、関数に放り込んで行列の積を計算する場合、列数と行数が違うと問題ですが、気を付けるのはそこだけともい言えそうです。
行列の積の計算って以下のようにまるで電卓をたたいているようなイメージでやっていたので。
sum=0
do i=5
do j=6
do m=1,4
sum=sum+a(i,m)*b(m,j)
enddo
enddo
endo

投稿日時 - 2019-12-11 12:37:42

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)