行列を計算したいのですが方法がわからずに困っています。
以下のように(A)*(B)の順番はわかるのですが(A)*(B)*(C)の計算方法がわかりません。書籍やグーグル当などで探したのですが、適当なものを見つけることができませんでした。
計算法もしくは、方法が記載されているサイトなどご存知でしたら教えていただけないでしょうか、よろしくお願いいたします。

(A)*(B) = |a b||p q| = |ap + br, aq + bs|
|c d||r s| |cp + dr, cq + ds|

(A)*(B)*(C) = |a b||p q| |vw| = ??
|c d||r s| |xy|

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>(A)*(B)*(C) = |a b||p q| |vw| = ??


>         |c d||r s| |xy|

一ぺんで答えを出す公式ですか。
#1 さんのコメントどおり、まず隣り合う二つの積を出したあと、それと残りとの積を求めるのでしょうね。

隣り合う二つは、{A, B} でも、{B, C}でも、結果は同じ。
  結合則:(A*B)*C = A*(B*C)   ただし、順序は変えられない
お試しください。
 
    • good
    • 0

#1です。



すんません。
#2さんの言うとおり、
行列って結合則が成立しますね。

昔 勉強したこと忘れてるなぁ~

#2さんへ
少し賢くなったよ ありがとう。
    • good
    • 0

前から順番に計算していけばいいよ。



行列は普通の掛け算と違って
(A)*(B)*(C)の
(B)*(C)部分を先に計算すると答えがちがってきます。

簡単な例を作って自分で試してみてください。
    • good
    • 2

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q3行3列の行列の和と積の計算方法を教えて下さい。

3行3列の行列の和と積の計算方法を教えて下さい。
できれば、例題があればありがたいです。

よろしくお願いします。

Aベストアンサー

3行3列の行列同士の計算でいいのでしょうか。
ちょっとずれてしまうかもしれませんがご了承ください。

例えば、
行列A
|a11 a12 a13|
|a21 a22 a23|
|a31 a32 a33|

行列B
|b11 b12 b13|
|b21 b22 b23|
|b31 b32 b33|

があったとき、
A×Bは
|a11×b11+a12×b21+a13×b31 a11×b12+a12×b22+a13×b32 a11×b13+a12×b23+a13×b33|
|a21×b11+a22×b21+a23×b31 a21×b12+a22×b22+a23×b32 a21×b13+a22×b23+a23×b33|
|a31×b11+a32×b21+a33×b31 a31×b12+a32×b22+a33×b32 a31×b13+a32×b23+a33×b33|

A+Bは
|a11+b11 a12+b12 a13+b13|
|a21+b21 a22+b22 a23+b23|
|a31+b31 a32+b32 a33+b33|

となります。

例題:次の行列A、Bがあったとき、それぞれの和と積を求めよ。
行列A
|1 2 3|
|4 5 6|
|7 8 9|

行列B
|7 8 9|
|1 2 3|
|4 5 6|

A×Bは
|1×7+2×1+3×4 1×8+2×2+3×5 1×9+2×3+3×6|
|4×7+5×1+6×4 4×8+5×2+6×5 4×9+5×3+6×6|
|7×7+8×1+9×4 7×8+8×2+9×5 7×9+8×3+9×6|

|21 27 33|
|57 72 87|
|93 117 141|

A+Bは
|1+7 2+8 3+9|
|4+1 5+2 6+3|
|7+4 8+5 9+6|

|8 10 12|
|5 7 9|
|11 13 15|

となります。

3行3列の行列同士の計算でいいのでしょうか。
ちょっとずれてしまうかもしれませんがご了承ください。

例えば、
行列A
|a11 a12 a13|
|a21 a22 a23|
|a31 a32 a33|

行列B
|b11 b12 b13|
|b21 b22 b23|
|b31 b32 b33|

があったとき、
A×Bは
|a11×b11+a12×b21+a13×b31 a11×b12+a12×b22+a13×b32 a11×b13+a12×b23+a13×b33|
|a21×b11+a22×b21+a23×b31 a21×b12+a22×b22+a23×b32 a21×b13+a22×b23+a23×b33|
|a31×b11+a32×b21+a33×b31 a31×b12+a32×b22+a33×b32 a31×b13+a32×b23+a33×b33|

A+B...続きを読む

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Qe^-2xの積分

e^-2xの積分はどうしたらよいのでしょうか…。e^xやe^2xsinxなどはのってるのですがこれが見つかりません。お願いします。

Aベストアンサー

いささか、思い違いのようです。

e^-2x は、 t=-2x と置いて置換してもよいけれど、牛刀の感がします。

e^-2x を微分すると、(-2)*( e^-2x )となるので、

e^-2x の積分は、(-1/2)*( e^-2x )と判明します。

Q3次元ベクトルをある軸ベクトルで回転させたい

3次元ベクトルの求め方を教えてください。

下記図のように始点を軸ベクトルでθ(度)だけ回転したときの?の位置を求めたいのです。
これはどのような計算方法になるのでしょうか?なかなか思いつかなくて非常に悩んでいます。
アドバイスや回答をいただけたら助かります。よろしくお願いします。

Aベストアンサー

先ず、中心点(Sx,Sy,Sz)が原点にくるよう全体を平行移動させます。
(一番最後に元に戻します)
始点(Px,Py,Pz)は、(Px-Sx,Py-Sy,Pz-Sz)に移ります。この座標を(Px',Py',Pz')とします。

次に、回転軸ベクトル(Ax Ay Az)を回転させ、x軸に合致させます。それには二回の
回転変換が必要です。
最初に、ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルが
z軸に合うよう、x軸を回転させます(その角度をφとします)。
すると、回転軸ベクトルはx-y平面上に乗るので、それがx軸に合うよう、z軸を回転させます
(その角度をψとします)。

ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルは、(0 Az -Ay)。
x軸周りにφ回転させると、このベクトルは、
「1  0    0   「 0  =「      0
0 cosφ -sinφ   Az   Az・cosφ+Ay・sinφ
0 sinφ  cosφ」 -Ay」  Az・sinφ-Ay・cosφ」
で、z軸ベクトルに合うので
「      0      =「0
Az・cosφ+Ay・sinφ  0 
Az・sinφ-Ay・cosφ」  1」
これから、cosφ=-Ay/(Ay^2+Az^2)、sinφ=Az/(Ay^2+Az^2)
∴ φ=Arctan(-Az/Ay)

回転軸ベクトル(Ax Ay Az)は、
「1  0    0   「Ax =「      Ax      =「       Ax                   =「Ax 
0 cosφ -sinφ   Ay   Ay・cosφ-Az・sinφ   Ay・{-Ay/(Ay^2+Az^2)}-Az・{Az/(Ay^2+Az^2)}   -1
0 sinφ  cosφ」  Az」   Ay・sinφ+Az・cosφ」  Ay・{Az/(Ay^2+Az^2)}+Az・{-Ay/(Ay^2+Az^2)}」  0」
に変換され、x-y平面上に乗ります。これを(Ax' Ay' Az') とします。
つまり、(Ax' Ay' Az')=(Ax -1 0)

始点(Px',Py',Pz')もこの変換を受けるのですが、変換を全部纏めて後、一括変換させます。

今度は、x-y平面上に乗った回転軸ベクトル(Ax' Ay' Az')を、z軸の周りにψ回転させます。
「cosψ -sinψ 0 「Ax'  =「Ax'・cosψ-Ay'・sinψ =「Ax・cosψ+sinψ
sinψ  cosψ 0   Ay'   Ax'・sinψ+Ay'・cosψ   Ax・sinψ-cosψ
  0    0   1」  Az'」       Az'      」     0      」
これが、x軸ベクトルに合うので、
Ax・cosψ+sinψ=1
Ax・sinψ-cosψ=0
これから、cosψ=Ax/(Ax^2+1)、sinψ=1/(Ax^2+1)
∴ ψ=Arctan(1/Ax)

以上の回転の変換の積は、
「cosψ -sinψ 0 「1  0    0   =「cosψ -sinψ・cosφ  sinψ・sinφ
sinψ  cosψ 0   0 cosφ -sinφ   sinψ  cosψ・cosφ -cosψ・sinφ
  0    0   1」  0 sinφ  cosφ」   0     sinφ      cosφ   」

この変換を始点(Px',Py',Pz')に施します。
「cosψ -sinψ・cosφ  sinψ・sinφ  「Px' = 「Px'・cosψ-Py'・sinψ・cosφ+Pz'・sinψ・sinφ
sinψ  cosψ・cosφ -cosψ・sinφ  Py'   Px'・sinψ+Py'・cosψ・cosφ-Pz'・cosψ・sinφ
  0     sinφ      cosφ   」 Pz'」  Py'・sinφ+Pz'・cosφ               」 

この点を(Px”,Py”,Pz”)とします。

さて、ここでx軸に合った回転軸ベクトル(1 0 0)周りに(Px”,Py”,Pz”)を角度θ、回転させます。
「1  0    0   「Px” =「     Px”   
0 cosθ -sinθ   Py”  Py”・cosθ-Pz”・sinθ 
0 sinθ  cosθ」  Pz”」  Py”・sinθ+Pz”・cosθ」

これを(P_x, P_y, P_z)とします。

今度は、回転させた回転軸を元に戻す変換です。
回転の変換の逆行列は、行列各要素の余因子の行と列を入れ替えたものを行列式で割ったもので、
行列式は、(cosψ)^2+(sinψ)^2=1 なので、逆行列は
「 cosψ      sinψ        0  
-sinψ・cosφ  cosψ・cosφ   sinφ
sinψ・sinφ   -cosψ・sinφ  cosφ」

これを、(P_x, P_y, P_z)に施します。
「 cosψ      sinψ        0   「P_x =「P_x・cosψ+P_y・sinψ
-sinψ・cosφ  cosψ・cosφ   sinφ  P_y   -P_x・sinψ・cosφ+P_y・cosψ・cosφ+P_z・sinφ
sinψ・sinφ   -cosψ・sinφ  cosφ」 P_z」  P_x・sinψ・sinφ-P_y・cosψ・sinφ+P_z・cosφ」

結局、θ回転後のP点の座標は、
x座標 : P_x・cosψ+P_y・sinψ
y座標 : -P_x・sinψ・cosφ+P_y・cosψ・cosφ+P_z・sinφ
z座標 : P_x・sinψ・sinφ-P_y・cosψ・sinφ+P_z・cosφ
となります。

ここで、置き換えた変数を順次、元に戻します。
P_x、P_y、P_z を Px”、Py”、Pz” に、
Px”、Py”、Pz” を Px’、Py’、Pz’ に、
最後に、平行移動を戻して Px’、Py’、Pz’ を Px、Py、Pz に直します。

先ず、中心点(Sx,Sy,Sz)が原点にくるよう全体を平行移動させます。
(一番最後に元に戻します)
始点(Px,Py,Pz)は、(Px-Sx,Py-Sy,Pz-Sz)に移ります。この座標を(Px',Py',Pz')とします。

次に、回転軸ベクトル(Ax Ay Az)を回転させ、x軸に合致させます。それには二回の
回転変換が必要です。
最初に、ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルが
z軸に合うよう、x軸を回転させます(その角度をφとします)。
すると、回転軸ベクトルはx-y平面上に乗るので、それがx軸...続きを読む

Q計算値と理論値の誤差について

交流回路の実験をする前に、ある回路のインピーダンスZ(理論値)を計算で求めたあと、実験をしたあとの測定値を利用して、同じ所のインピーダンスZ(計算値)を求めると理論値と計算値の間で誤差が生じました。
そこでふと思ったのですが、なぜ理論値と計算値の間で誤差が生じるのでしょうか?また、その誤差を無くすことはできるのでしょうか? できるのなら、その方法を教えてください。
あと、その誤差が原因で何か困る事はあるのでしょうか?
教えてください。

Aベストアンサー

LCRのカタログ値に内部損失や許容誤差がありますが、この誤差は
1.Rの抵抗値は±5%、±10%、±20% があり、高精度は±1%、±2%もあります。
2.Cの容量誤差は±20% 、+50%・ー20% などがあり
3.Lもインダクタンス誤差は±20%で、
3.C・Rは理想的なC・Rでは無く、CにL分、Lに抵抗分の損失に繋がる成分があります。
これらの損失に繋がる成分は、試験周波数が高くなると、周波数依存で増大します。
また、周囲温度やLCRの素子自身で発生する自己発熱で特性が変化します。
測定器や測定系にも誤差が発生する要因もあります。
理論値に対する測定値が±5%程度発生するのは常で、実際に問題にならないように、
LCRの配分を工夫すると誤差やバラツキを少なく出来ます。
 

Q一巡伝達関数と開ループ伝達関数

一巡伝達関数と開ループ伝達関数は何が違うのでしょうか?
本によって定義がまちまちで、あまり正しい定義がないのかなと思ってしまいますが、ちゃんとした定義が存在するのでしょうか?
インターネットでは一巡伝達関数と開ループ伝達関数は同一視していますが、私の学校の教科書では開ループ伝達関数はフィードバック系を取り除いたときのもの(すなわちC(S)P(S))、一巡伝達関数は閉ループ系を一巡したときのもの(すなわちC(S)P(S)H(S))となっています。

ご存じの方がいたらご教授よろしくお願いします。

Aベストアンサー

教科書の定義が正しいです。

一巡伝達関数は、ループをどこかで切り開いた時に、ループ全体一周する伝達関数で、ループの安定性(位相余裕など)なんかを調べるときに使います。

開ループ伝達関数は、ループをどこかで切り開いた時に、入力と出力の比です。

つまり、ループを切り開いて考えるのは同じですが、一巡伝達関数がループを一周(フィードバックの要素も考える)のに対して、開ループ伝達関数は入力と出力の比です(したがってフィードバックの要素は考えない)。

フィードバックの要素がない場合には、2つは同じになります。

Q行列の消去法のコツなど教えてください。

只今、学校にて行列を習っているわけですが、最近行列を使った消去法を習い始めました。

たとえば

3  1 -7  0
4 -1 -1  5
1 -1  2  2

このような行列があったとします。
習った方法は、
(1)一つの行に0でない数をかける。
(2)一つの行にある数をかけたものを他の行に加える。
(3)二つの行を交換する。

1  0  0  3
0  1  0  5
0  0  1  2
このような式に変形してx=3,y=5,z=2みたいな感じにするということでしたが、

今回教えていただきたいことは、
→1度に前述の3つの式を何回も使っていいのか。
→うまく変形するコツ。

の二つです。

やり方自体はなんとなくわかるのですが、単位行列に持っていくまでの手順がイマイチ難しくわからないので、よろしければご教授願います。

2月頭辺りからテストなのでズバリを突いて欲しいと思います。

よろしくお願いします。

Aベストアンサー

→1度に前述の3つの式を何回も使っていいのか。
何回でも使っていいです。1+1=2と1+1+1-1+1-1+1-1=2が等価なのと同じことと思ってください。

→うまく変形するコツ。
”うまく”はないですけど、初心者向けの解法のコツみたいなものとして、参考までに。
(1)n列目のn行を1にする。
(2)「n列の他の行の数」を、(1)で作った1に-(「n列の他の行の数」)をかけてたして0にする。
(3)単位行列になるまで(1)~(2)を繰り返す。
※nは1~行列の次数(2次正方とか3次正方とかの2,3)です。

Qeの微分の公式について

e^xの微分はe^xですが
e^f(x)の微分はf'(x)e^f(x)でいいのでしょうか?
ネットで調べたのですが、e^xの微分の公式の説明ばかりだったので教えてください

Aベストアンサー

あってますよ。
普通に検索すると、確かに見つけにくいですね^^
http://www-antenna.ee.titech.ac.jp/~hira/hobby/symbolic/derive.html

Q測定したデータの誤差を計算する方法

集めたデータのばらつきを求めるときに使う計算法として、標準偏差がありますが、「誤差=平均値±標準偏差」と考えていいのでしょうか?
ほかに標準誤差というのがあるようなのですが、説明を読んでも何を意味している誤差なのか理解できません。
ちなみに、データは以下の通りです。

データ数:60
最高値:39.00
最低値:11.00
平均値:22.56
標準偏差:5.261
標準誤差:0.679(5.261/√60)
標準偏差を誤差と考えると22.56±5.261で、総データの70.0%が含まれます。
標準誤差を誤差と考えると22.56±0.679で、総データの10.0%が含まれます。

回答よろしくお願いします。

Aベストアンサー

ここで言う標準誤差は,平均値の確度を表す指標です.
(私自身は標準誤差という名称は初めてですが...)
なので母集団の平均の推定値は算出した平均値±α*標準誤差
(αは推定値の信頼度によって変化します.詳しくは
統計の教科書のt-分布のあたりをご覧下さい)

あと質問者さんは誤差を求めたいようですが,誤差の定義は
誤差=測定値-真値
であり,一般に真値は分からないので誤差は分からないことになります.
また何の誤差をお知りになりたいのかも不明です.上のデータが何をあらわしてるのかは不明ですが,
同一のものを60回測定した結果であれば,母集団の平均の推定値がほぼ真値を表しますので,誤差は,ほぼ標準偏差と考えることができるように思います.
一方60個の別のものを測定したとすれば,母集団の平均の推定値は母集団の平均値であり,標準偏差は60個のものの分布を表していることとなり,誤差という話はあまり出てきません.(無理に言えば,製造の誤差と言えなくもありませんが)

Qfatal error LNK1120: 外部参照 1 が未解決です

またわからないことが・・・
教えて下さい。
以下をVC++2005でコンパイルすると、

MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\tomato\My Documents\Visual Studio 2005\Projects\a\Debug\a.exe : fatal error LNK1120: 外部参照 1 が未解決です。

と警告がでて通りません。
何のことでしょうか。

#include<stdio.h>
#include<process.h>

struct meibo{
  char name[20];
  char tel[20];
  char address[20];
};

void message( void );
void input( FILE *fp, int cnt , struct meibo *a, int *end );

void main( void )
{
  struct meibo a[20];
  FILE *fp;
  int cnt, end;

  if( (fp=fopen( "meibo.dat", "w" ) ) == NULL ){
    printf( "Can not open the meibo.dat.\n" );
    exit( 1 );
  }

  message();

  fprintf( fp, "番号, 名前, TEL, 住所\n" );
  fflush( fp );

  cnt = 0;
  end = 0;
  while( end == 0 ){
    input( fp, cnt, &a[cnt], &end );
    cnt++;
    fflush( fp );
    if( cnt == 20 ){
      printf( "人数が一杯です.終了します.\n" );
      end = 1;
    }
  }
  fclose( fp );
}

void message( void )
{
  printf( "名前, TEL, 住所, endを入力してください.\n" );
  printf( "継続の時はend=0," );
  printf( "中止の時は,end=1と入力してください.\n" );
}

void input( FILE *fp, int cnt, struct meibo *a, int *end )
{
  printf( "名前-->" );
  scanf( "%s", a->name );
  printf( "TEL -->" );
  scanf( "%s", a->tel );
  printf( "住所-->" );
  scanf( "%s", a->address );
  printf( "Exit? Continue:0 Exit:1 -->" );
  scanf( "%d", end );
  printf( "\n" );
  fprintf( fp, "%2d, %s, %s, %s\n",
    cnt+1, a->name, a->tel, a->address );
}

またわからないことが・・・
教えて下さい。
以下をVC++2005でコンパイルすると、

MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
C:\Documents and Settings\tomato\My Documents\Visual Studio 2005\Projects\a\Debug\a.exe : fatal error LNK1120: 外部参照 1 が未解決です。

と警告がでて通りません。
何のことでしょうか。

#include<stdio.h>
#include<process.h>

struct meibo{
  char name[20];
...続きを読む

Aベストアンサー

http://www.a.math.ryukoku.ac.jp/~hig/course/compsci2_2005/man/faq.html
にある現象と同じではないでしょうか、一度お試しください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報