マトリクスに変換;概念や理論、他の無料資源のための実践的に学習?[定休日]
-
06-07-2019 - |
質問
私はやっているので楽しくレンダリングチャートやグラフからの座標は最近、私は魅了される利用行列への変換を調整します。
ってことで規模を目的2次元コーディネート空間が今の私の意欲がwhetted.:)
ることができますが、情報(無料)、教材に行列の行列の数学として特に適用される2や3次元スペース?
解決
独自の回答: くなった場合のようにどのような数理コースは通常、導入行列.プログラマーとしてますが気をつかむもの3Dグラフィックスです。すべ非常にコンクリート3x3行列.もぐものを教えてくれます 射影変換 (射影幾何にあり視認性が良く、美しい地域の低次元形状が簡単なプログラム)
ミニコース列の数とPython3
内容:
- 行列
[Vector, __add__, reflect_y, rotate, dilate, transform]
- 行列:過負荷
[Matrix, __add__, __str__, __mul__, zero, det, inv, __pow__]
- ボーナス:複素数
- 行列:(R)進化.すでにあの要旨の終了)
巻頭言: に基づく日本語教師という経験うれしいと思う一方で、科目によって参照されるその他のもの コース.その場合はご理解の行列としての数学者がいよだよは全体のコースです。ただし、ご自分の目標は控えめですが、ここで自分で試してみように御社のニーズに合わせてもまだ書きることを目的に伝える多くの理論的概念のような相反するmyオリジナルです。)
利用方法:
- "海のそばのシェアハウスです。あると考え印刷はこれか遅いような一部です。
- コードが必要です。このコースきます。演習は必須です。
- すべ の仲間コード すべてこのコードます。
- この"2の物価"1"の特別:あなたも学ぶことができPython3。複雑です。
- 私は高い価値を読もうとするとこんが正式に認後最長となるか?), のでお気軽にコメントがわからないものもだしています。
1.行列
ベクトル
前に行列来のベクトル.まずどのように取り扱うかに2-3次元ベクトル:
class Vector:
"""This will be a simple 2-dimensional vector.
In case you never encountered Python before, this string is a
comment I can put on the definition of the class or any function.
It's just one of many cool features of Python, so learn it here!
"""
def __init__(self, x, y):
self.x = x
self.y = y
り込み完了するときに印刷できま
v = Vector(5, 3)
w = Vector(7, -1)
がないんで楽しい。を追加してみましょう用方法:
def __str__(self: 'vector') -> 'readable form of vector':
return '({0}, {1})'.format(self.x, self.y)
def __add__(self:'vector', v: 'another vector') -> 'their sum':
return Vector(self.x + v.x, self.y + v.y)
def __mul__(self:'vector', number: 'a real number') -> 'vector':
'''Multiplies the vector by a number'''
return Vector(self.x * number, self.y * number)
るものをもっと面白いて書くことができる:
print(v + w * 2)
との回答を得 (19, 1)
も印刷物としてベクトル場の例を見慣れないかって考え、このコードをどうC++).
変換
今ではすべて涼しく書くことができる 1274 * w
する必要がありますベクトルのグラフィー。その中で数点紹介します:できるフリップのベクトル (0,0)
までを反映しするようにしてください x
または y
軸回転させることが出来まで時計回りまたは反時計回り(いので絵を描く。
もういくつかの簡単な操作:
...
def flip(self:'vector') -> 'vector flipped around 0':
return Vector(-self.x, -self.y)
def reflect_x(self:'vector') -> 'vector reflected around x axis':
return Vector(self.x, -self.y)
print(v.flip(), v.reflect_x())
- 質問 で表現することが可能
flip(...)
に操業した。うreflect_x
?
今はかな"と思われたことでしょうかを省略 reflect_y
.りのさるとしあきだいえっとしたいのですが停止中の一瞬をとお書きの上、自身の版です。Ok、こちらの鉱山:
def reflect_y(self:'vector') -> 'vector reflected around y axis':
return self.flip().reflect_x()
見れば、どこの機能を計算では実際にあるようにします。が突然の驚くべきことが起き:私は書くことができる変換のみを使用し、既存の変換 flip
や reflect_x
.すべてのIスケア、 reflect_y
が定義された派生クラスへアクセスできない x
や y
したものです。
数学者らがこれらの機能 事業者.いといえるだろう reflect_y
が得られたオペレーター 構成 オペレーター flip
や reflect_x
である
によって示される reflect_y = flip ○ reflect_x
(ていることを確認して下さい小さな円を描きながら、Unicodeのシンボル 25CB
).
- 注意: 私も自由に利用
=
シンボルこれからを表示する二つの事業を同じ結果のよう項です。この"数学=
"は、 表現できないとしてプログラム.
ない場合、その
print(v.reflect_y())
を取得します。結果 (-5, 3)
.くの写真です!
- 質問 を考える組成物
reflect_y ◦ reflect_y
.ついてはどのように捉えてい名前です。
回転
その事業の良い有用なもんなんだろうなまでの遅れを紹介し回転.Ok、こちらのん:
def rotate(self:'vector', angle:'rotation angle') -> 'vector':
??????
この点、わかればどのように回転ベクトルを使用し、ご記入の問題をマーク。その他皆さんのための一つの簡単な例:反時計回りに回転する 90
ます。この一つであるが、描画用紙:
def rotate_90(self:'vector') -> 'rotated vector':
new_x = - self.y
new_y = self.x
return Vector(new_x, new_y)
しようと
x_axis = Vector(1, 0)
y_axis = Vector(0, 1)
print(x_axis.rotate_90(), y_axis.rotate_90())
を与える (0, 1) (-1, 0)
.実行します。
- 質問 ことを証明する
flip = rotate_90 ◦ rotate_90
.
とにかくんですが、隠し味がな:
import math # we'll need math from now on
...
class Vector:
...
def rotate(self:'vector', angle:'rotation angle') -> 'rotated vector':
cos = math.cos(angle)
sin = math.sin(angle)
new_x = cos * self.x - sin * self.y
new_y = sin * self.x + cos * self.y
return Vector(new_x, new_y)
うみもの:
print(x_axis.rotate(90), y_axis.rotate(90))
が予想される場合は同じ結果として、 (0, 1) (-1, 0)
, だきます。このコードを印刷:
(-0.448073616129, 0.893996663601) (-0.893996663601, -0.448073616129)
少年では醜い!
表記: そして応用操作
rotate(90)
へx
の例です。の知識を得たいとrotate(90) != rotate_90
.質問 何があった。どのように表現
rotate_90
面rotate
?どのように表現flip
面rotate
?
Dilations
その回転は必ず役に立つものではありません必要なものなの2Dグラフィー。考え、以下の変換:
def dilate(self:'vector', axe_x:'x dilation', axe_y:'y dilation'):
'''Dilates a vector along the x and y axes'''
new_x = axe_x * self.x
new_y = axe_y * self.y
return Vector(new_x, new_y)
この dilate
もdilatesの x
や y
軸る方法は異なります。
- 約権の行使 をご記入の問題点
dilate(?, ?) = flip
,dilate(?, ?) = reflect_x
.
まこの dilate
機能を発揮できるものは数学者を呼 可換性を備え:つまり、パラメータの値 a
, b
, c
, d
を確認することができること
dilate(a, b) ◦ dilate(c, d) = dilate(c, d) ◦ dilate(a, b)
約権の行使 ことを証明します。もうするすべての値のパラメータは以下のよう。
rotate(a) ◦ rotate(b) = rotate(b) ◦ rotate(a)
dilate(a, b) ◦ rotate(c) = rotate(c) ◦ dilate(a, b)
rotate(a) ◦ __mul__(b) = __mul__(b) ◦ rotate(a)
行列
うめさんたちは、 事業者のベクトル x
flip
,reflect_x
,*
,rotate(angle)
,dilate(x, y)
つきがあっきゃのように
flip ◦ rotate(angle) ◦ dilate(x, y) ◦ rotate(angle_2) ◦ reflect_y + reflect_x = ???
として作成するより複雑な表現がいいなどの注文が急に低減可能な表現に役立つ。恐れることはありません!魔法、表現の形式で簡易に
def ???(self:'vector', parameters):
'''A magical representation of a crazy function'''
new_x = ? * self.x + ? * self.y
new_y = ? * self.x + ? * self.y
return Vector(new_x, new_y)
一部の番号および/またはパラメータの代わりに ?
s.
- 例: どのような動作するように、価値に'?'が
__mul__(2) ◦ rotate(pi/4)
- 別の例: 同じ質問
dilate(x, y) ◦ rotate(pi/4)
この書は、ユニバーサル機能
def transform(self:'vector', m:'matrix') -> 'new vector':
new_x = m[0] * self.x + m[1] * self.y
new_y = m[2] * self.x + m[3] * self.y
return Vector(new_x, new_y)
でも他の4つのタプル番号と呼ばれる マトリクス, は、 適用 でベクトル x
.次に例を示します。
rotation_90_matrix = (0, -1, 1, 0)
print(v, v.rotate_90(), v.transform(rotation_90_matrix))
る版画 (5, 3) (-3, 5) (-3, 5)
.ることがありますのでご注意くだ適用 transform
と
他のマトリクスを出すも原産国:
origin = Vector(0, 0)
print(origin.transform(rotation_90_matrix))
- 約権の行使 そのタプル
m
を記述するflip
,dilate(x, y)
,rotate(angle)
?
としての Vector
クラスを参照してください運動をしたい方は試験の両方のベクトルの数学の知識とPythonic力:
- 最終決戦: 追加の
Vector
クラスのすべてのベクトル操作ができるかに多くの標準作業者での過負荷のためのベクター?チェックを出したので解答).
2.行列:過負荷
また、前述したマトリックスして考えることができる簡略表現できるエンコードベクトルを運営す。例えば、 rotation_90_matrix
符号化の回転で90度です。
マトリクスオブジェ
今シフト社から対象のベクトル行列を必要としてクラス
マトリックスしています。また、その機能 Vector.transform(...)
上記のステレオ系統のマトリックスしたやや偏.でも、通常 m
これまで固定がベクトル変化を、今後は当社の変革する方法でマトリックスクラス:
class Matrix:
def __init__(self:'new matrix', m:'matrix data'):
'''Create a new matrix.
So far a matrix for us is just a 4-tuple, but the action
will get hotter once The (R)evolution happens!
'''
self.m = m
def __call__(self:'matrix', v:'vector'):
new_x = self.m[0] * v.x + self.m[1] * v.y
new_y = self.m[2] * v.x + self.m[3] * v.y
return Vector(new_x, new_y)
わからない場合はPython __call__
過負荷の意味 (...)
のための行列で使用できますの標準表記のためのマトリクス 演技 ベクトル.また、行列は、通常の筆記を大文字:
J = Matrix(rotation_90_matrix)
print(w, 'rotated is', J(w))
- 約権の行使 繰り返しこの例では,行列の前です。
加
しょうがないのかもしできない行列の覚えているマトリクス m
本当にそのようなエンコード、運用上のベクトル.このための二つの機能 m1(x)
や m2(x)
できる新しい機能を使用 ラムダ仕様の表記) m = lambda x: m1(x) + m2(x)
.多くの場合 m1
や m2
たencondedによる行列 またこのエンコード m
利用行列!
- 約権の行使 を通じて問題がないと決まっているわけです。
るためには、ただひたすらに追加し、そのデータ、など (0, 1, -1, 0) + (0, 1, -1, 0) = (0, 2, -2, 0)
.この方法は二つのタプルをPythonでは、一部の有用性の高いPythonic技法:
def __add__(self:'matrix', snd:'another matrix'):
"""This will add two matrix arguments.
snd is a standard notation for second argument.
(i for i in array) is Python's powerful list comprehension.
zip(a, b) is used to iterate over two sequences together
"""
new_m = tuple(i + j for i, j in zip(self.m, snd.m))
return Matrix(new_m)
できていなかったのを書いった表現 J + J
も J + J + J
, が、結果が見えている方法を見つけ出すことを印刷で行います。でちょっと印刷の4つのタプル番号が、みからのヒント Matrix.__call__
る機能なども行っている組織 2x2
ブロック:
def as_block(self:'matrix') -> '2-line string':
"""Prints the matrix as a 2x2 block.
This function is a simple one without any advanced formatting.
Writing a better one is an exercise.
"""
return ('| {0} {1} |\n' .format(self.m[0], self.m[1]) +
'| {0} {1} |\n' .format(self.m[2], self.m[3]) )
見ればこの機能に作らすぐの場所にある改善の余地:
print((J + J + J).as_block())
- 約権の行使 書くのもキレイ機能
Matrix.__str__
その 数字で印刷の分野に固定長さです。
現在対応することができるでしょうを書きマトリクス回転数:
def R(a: 'angle') -> 'matrix of rotation by a':
cos = math.cos(a)
sin = math.sin(a)
m = ( ????? )
return Matrix(m)
約権の行使 検討のためのコード
Vector.rotate(self, angle)
記入してください質問です。試験from math import pi print(R(pi/4) + R(-pi/4))
増殖
最も重要なことができる一つのパラメータ機能で作成してい: f = lambda v: f1(f2(v))
.どのようにミラーその行列を用い?する必要があり方を検討 Matrix(m1) ( Matrix(m2) (v))
ます。場展開をサポートしていますのでお届けすること
m(v).x = m1[0] * (m2[0]*v.x + m2[1]*v.y) + m1[1] * (m2[2]*v.x + m2[3]*v.y)
と同様に、 m(v).y
, を開き、括弧内は、suspiciously同様の
へ Matrix.__call__
を新たなタプル m
, なる m[0] = m1[0] * m2[0] + m1[2] * m2[2]
.みましょう、このことをヒントのための新しいdefiniton:
def compose(self:'matrix', snd:'another matrix'):
"""Returns a matrix that corresponds to composition of operators"""
new_m = (self.m[0] * snd.m[0] + self.m[1] * snd.m[2],
self.m[0] * snd.m[1] + self.m[1] * snd.m[3],
???,
???)
return Matrix(new_m)
約権の行使 をご記入の問題をマーク。試験で
print(R(1).compose(R(2))) print(R(3))
数学の習: ことを証明する
R(a).compose(R(b))
常に同じとしてR(a + b)
.
をご紹介しましょう言:この compose
機能が実際にどれだけの数学者を決定 multiply 行列.この感覚として表記: A * B
であるマトリクスdecribesオペレーター A ○ B
, とち次がより深い理由に話す"増殖してます。
使い始め乗算Pythonしていますが、注文するのかもしれない Matrix
クラス:
class Matrix:
...
__mul__ = compose
- 約権の行使 計算
(R(pi/2) + R(pi)) * (R(-pi/2) + R(pi))
.をさがしてみてください答えを自分で初めての情報誌も発行されています。
ルール +
や *
にしましょういくつかの良い名前のマトリクスに対応する dilate(a, b)
オペレーター今あるものか D(a, b)
, さん
使用機会の紹介標準表記:
def diag(a: 'number', b: 'number') -> 'diagonal 2x2 matrix':
m = (a, 0, 0, b)
return Matrix(m)
試 print(diag(2, 12345))
なぜかという 斜め で行います。
として構成された前に見つかりできない可換, *
オペレーターはない可換のための行列です。
- 約権の行使 戻りにリフレッシュ 可換性を備え ことが必要です。その後具体的にどのような行列
A
,B
, から作られたR
やdiag
, そのA * B
するものではなく、B * A
.
これは多少奇妙に、増殖のための数字は常に可換やるのかが問題になるかどうか compose
本当の名にふさわ __mul__
.こちらの多くのルール +
や *
い を満たす:
A + B = B + A
A * (B + C) = A * B + A * C
(A + B) * C = A * C + B * C
(A * B) * C = A * (B * C)
ありがと呼ばれる
A - B
や(A - B) + B = A
- 約権の行使 証明するこれらの記述です。のように定義する
A - B
面+
,*
やdiag
?ものは何かA - A
等しい。追加の方法__sub__
のクラスMatrix
.れば、一体どうなることを計算R(2) - R(1)*R(1)
?何をすべきか等しい。
- 約権の行使 証明するこれらの記述です。のように定義する
の (A * B) * C = A * (B * C)
男女平等という associativity 特に素敵でいる、ということを意味していないの心配を括弧内の表現
の形式 A * B * C
:
print(R(1) * (diag(2,3) * R(2)))
print((R(1) * diag(2,3)) * R(2))
していきましょう類似通常の番号 0
や 1
は、足し算や引き算:
zero = diag(0, 0)
one = diag(1, 1)
以下の容易に追加:
A + zero = A
A * zero = zero
A * one = one * A = A
ルールの完全なようになったという意味のある短い名前:イメージ リング公理.数学者という行列を形成 リング, は、実際には常に使用記号 +
や *
話リングなどはいたしました。
規則を使用できる計算の表現から前項:
(R(pi/2) + R(pi)) * (R(-pi/2) + R(pi)) = R(pi/2) * R(-pi/2) + ... = one + ...
- 約権の行使 仕上がります。ことを証明する
(R(a) + R(b)) * (R(a) - R(b)) = R(2a) - R(2b)
.
アフィン変換
時間どのように定義した列:このショートカットも作業ができベクトルでもあります。を描いています。するためにペン、はじめての材料その他かの例参照の異なる面に小さなものに過ぎません。
に変換してまいりますので、お気軽に アフィン ものの方を見て、何処でも(屈曲)します。例えば、回転周一 (x, y)
修.現在この表現できないとして lambda v: A(v)
, ができる形式で記述すること lambda v: A(v) + b
一部のマトリクス A
及びベクトル b
.
- 約権の行使 の
A
やb
このような回転によるpi/2
周辺に点(1, 0)
がします。はい。
注そのベクターがアフィン変換する シフト のベクトルとなっています。
るアフィン変換が伸びた形状の膨らみもしていくべきなのであろうと同じです。今私は信じていることを地域の図の変化により一定の数の変容しています。変換されたマトリクス A
このcoeffiecientと呼ばれる 決定要因 の A
とを算出することが可能で印式のための地域への二つのベクトル A(x_axis)
や A(y_axis)
:
def det(self: 'matrix') -> 'determinant of a matrix':
return self.m[0]*self.m[3] - self.m[1] * self.m[2]
としてのアメニティチェック diag(a, b).det()
以 a * b
.
- 約権の行使 チェック。どのようなときの引数は0?できの悪い?
ご覧のとおり、行列の回転行列は常に同じです:
from random import random
r = R(random())
print (r, 'det =', r.det())
一つの興味深いこと det
この乗法(種類から、以下のような定義の場合瞑想な):
A = Matrix((1, 2, -3, 0))
B = Matrix((4, 1, 1, 2))
print(A.det(), '*', B.det(), 'should be', (A * B).det())
逆
有用なことができ行列が書き込システムの線形方程式
A.m[0]*v.x + A.m[1]*v.y = b.x
A.m[2]*v.x + A.m[3]*v.y = b.y
シス方法: A(v) = b
.みを解決するシステムとして彼らを教える(一部)高校:掛け最初の方程式による A.m[3]
, 第二によるA.m1 追加の場合も、この手紙にするための v.x
.
だったのではないか A.det() * v.x = (A.m[3]) * b.x + (-A.m[1]) * b.y
, ることが示唆されるとともできるん v
を乗じ b
その他のマトリックスこのマトリクスと呼ばれ 逆 の A
:
def inv(self: 'matrix') -> 'inverse matrix':
'''This function returns an inverse matrix when it exists,
or raises ZeroDivisionError when it doesn't.
'''
new_m = ( self.m[3] / self.det(), -self.m[1] / self.det(),
????? )
return Matrix(new_m)
したがって、この方法に失敗した理由が決定因子マトリックスはゼロになります。だいたい聞き取ることができると思いこのexpection:
try:
print(zero.inv())
except ZeroDivisionError as e: ...
- 約権の行使 仕上げの方法。この逆行列は存在しない場合
self.det() == 0
.記の方法を分ける行列ととしていたことが分かりました。利用の逆マトリクス方程式を解くためにA(v) = x_axis
(A
定義した。
力
本物件の逆行列である A * A.inv()
常に同 one
- 約権の行使 ることを確認す。その理由を説明すべきでこの定義からの逆行列.
そこには多くの数を示 A.inv()
による A
-1.つまり書け
素敵な機能を利用 A ** n
表記 A
n?このナイーブ for i in range(n): answer *= self
サイクルはO(|n)は必ず遅すぎるので、
この機能は、複雑さの log |n|
:
def __pow__(self: 'matrix', n:'integer') -> 'n-th power':
'''This function returns n-th power of the matrix.
It does it more efficiently than a simple for cycle. A
while loop goes over all bits of n, multiplying answer
by self ** (2 ** k) whenever it encounters a set bit.
...
約権の行使 ご記入内容はこの機能です。試験で
X, Y = A ** 5, A ** -5
print (X, Y, X * Y, sep = '\n')
この機能だけのための整数値 n
, ものの、一部の行列を定義します小数電力などの平方根(言い換えれば、マトリクス B
その B * B = A
).
- 約権の行使 見ルート
diag(-1, -1)
.この答えはどうでしょうか?例があるマトリクス な 矩形です。
ボーナス:複素数
こちらかをご紹介しの対象と正確に一部!なかに複雑な対象、私が失敗すので、ご容赦ください。
第一に、同様にどのようにして行列 zero
や one
, はい、可能ですマトリクスの任意の実数によって diag(number, number)
.行列が書き加減算だけでなく,逆の結果が真似う数字です。そのためのすべての実践的な目的で、見ることができ、例えば、 diag(5, 5)
は 5.
しかし、Pythonの知らないなどのように扱う表現の形式 A + 1
または 5 * B
場所 A
や B
は行列.ついて興味のある方はもちろん、すべての手段を行い、以下の行使または差し替えによって、様々な実装を利用した涼しいPythonで使われるボキャブラリー デコレータ);そのうえで実施されました。
- 行使のための日付: 変更の演算子
Matrix
クラスですべての標準的操作のオペランドであるマトリクスおよび他の多くの番号は自動的に変換されるdiag
で行います。も追加比較を進めていきます。
以下に例を示します試験:
print( 3 * A - B / 2 + 5 )
この興味深い 複素数:のマトリクス J
, 導入した"首相 Matrix((0, 1, -1, 0))
, では、面白い物件と J * J == -1
(うです!)その J
のみならず常に重要ですが、先ほどもお話ししたように、行列番号簡単に混ぜる。例えば、
(1 + J) * (2 + J) == 2 + 2 * J + 1 * J + J * J = 1 + 3 * J
規則を使用上場時間です。えば試験このPython?
(1 + J) * (2 + J) == 1 + 3*J
ばんな True
.別の例:
(3 + 4*J) / (1 - 2*J) == -1 + 2*J
という推測の数学者にな呼び方い数字がない類似したい表現の形式 a + b*J
複素数.ではまだインスタンスの Matrix
クラスまで多くの業:足し算、引き算、乗算として、部門電力で実施してき!な行列しょうか?
私は見逃の問題については、もう一度に印刷した結果、運転のような E = (1 + 2*J) * (1 + 3*J)
このような表現 J
ではなく 2x2
で行います。ご検討ので、慎重に
だが必要な印刷の左欄にそのマトリクスの形式 ... + ...J
(より良いもの:って言って E(x_axis)
!) 知っている方の違い str()
や repr()
るべきであるのは当然の名機能が表現の形として repr()
.
約権の行使 関数を書きます
Matrix.__repr__
ということをしてみる試験でのように、(1 + J) ** 3
, 初計算の結果を論文としています。数学の質問 の決定要因の
a + b*J
?どんなものか知っていれば、 絶対値 の複素数では:どのようにして接続されていますか。の絶対値a
?のa*J
?
3.行列:(R)進化
最後にこの作するのかをマトリクスで表したものです。まず一般 M x N
行列は、どのようにベクトルと考えることができ 1 x N
行列、なぜ数の対角行列.とこまでの複素数として 2 x 2
行列.
最後に、また、書く、アフィン射影変換行列を用い.
での授業を計画して [MNMatrix, NVector, Affine, Projective]
.
私の場合ことができたんでここにしてしまう可能性もあります。関心のある方の続編というのもいいが続くことが、いくもん超えて合理的であると考えられる長さの単一のdocument).
他のヒント
MITには、テルのすぐ近くは飲食面では貧弱その数学コースの素材をオンラインで http://ocw.mit.edu/OcwWeb/Mathematics/.一度の基礎を、その物理ノーオンラインです。
の書籍"初心者のためのカール-マイヤーの"マトリックス分析および応用線形代数".
眺望できる全体の書籍のオンラインはこちら(ともに著作権電子透かし):http://www.matrixanalysis.com/DownloadChapters.html
もんもしくは第5章ます。326-332の回転3次元コンピュータグラフィック
お見たいと思い 線形代数幾何学 によるI-Hsiung Lin Yixiong Lin(ISBN:9812560874).本書には具体的には向かい線形変換の2および3次元ベクトル空間)の扱いで幾何学的アプローチはフル、プログレッシブの詳細(300ページをご注文いただいた際に、正).私でも購入で対応することができるでしょうかずに良い大学図書館があります。その他 Bookfinder べきでは比較的緩やかな価格です。
Jim Hefferon無料 線形代数 教科書にあります。とは異なり多くの無料電子書籍のメカニズムの明確となるための時間を工芸の優れたリーダーおよび線形代数入門.な過度の負担となり数学的な書きすることで、多分定理と証明が簡単にわかりやすくなります。ものがたくさん含まれていますの優れた事例の実世界応用線形代数座標変換されませんでした。になんと言っても価格のものであり、付属のオプションソリューション演習を行います。
P.S.た場合の座標変換がおこされることもありますので、興味の微分幾何学後まで線形代数.
その情報についていった。それが貴重なものです:
理論:
- Woflramsに関する情報行列 や 追加のものをWikipediaで調べる
- 行列Pamノ -良い図書も用意されており、Googleの書籍を無料です。
- 正および視点の見通し
- 3D変換ではMSDN
(検索 "行列" でのGoogleの書籍でもlecutures、直接接続と変容- この 最初の結果でも貴方を応援しますチェックします。)
- 記事のように この, というか この または この 簡単に見つけてGoogleとがあるかどうか分かりませんがをしてはならないものとします。
- また、数につ行列にStackOverflow.com : 3d変換行列 や どのように変換マトリクス? だかの例が紹介されていますの マトリクス または 数学 タグです。
いうもないわからない場合は別途追加料金を頂くことは単語と"もしかして英語を学ぶ)、このような情報の書籍(がいません無料ですが、大きなパーツの古いものGoogleの書籍):
- ゲームプログラミングジェム7
- ゲームプログラミングgems6
- ゲームプログラミング珠玉の5
- ゲームプログラミングの宝石4
- ゲームプログラミングの宝石3
- ゲームプログラミングの宝石2
- ゲームプログラミングの宝石
それぞれの持部数学gems-がすっき技あります。それらの本ズは初中級者プレーヤーのパーセントに過ぎません。
またGPUプログラミングの継続課金は期間の期限がないようにしています。
:
- OpenGl書 でのWikipediaには関行列はOpenGl また、マトリックスOpenGlを記述 こちらの や こちらの)
- 図3D室DirectX +情報行列の小さなものに過ぎません。
まくまの編集リンクを追加するだ正直であること見つけたそのリンクより約10分のを使用します。世界で最も人気のブラウザの店舗データを絞り、"すべて"とは、行列です。
声で購入しました。
と思うので過ごして欲しいという数日やってドットの製品とのクロス製品をベクトル3次元.その関係を学ぶことの間にtrigとベクトル.その後の行列を多く感します。
MIT-OCWコースに線形代数によるギルバートStrang.なによる講演会な男;ご理解の行列のみから派生プロ源の数)をコースに線形代数んの基礎的な狂気も行列.
http://www.ocw.cn/OcwWeb/Mathematics/18-06Spring-2005/VideoLectures/index.htm