・???「ベクトルを食べる関数」
・??? 全て未確認です。
・??? 私は、以下適当?に転写しています。申し訳ありません。
(本日の)ChatGPT先生へ
テンソルの第1、第2、第3の定義の違いを教えて下さい。
(以下抜粋) 小見出しを表示。何となくわかった部分のみ表示。
第1の定義:成分変換で定義する(物理系で多い)...
第2の定義:多重線形写像として定義する(現代数学)...
第3の定義:テンソル積の元として定義する(最も抽象的)...
3つの定義の関係...
ざっくり比較...
物理と数学の違い...
直感的には
ベクトル 矢印
テンソル 矢印を複数入力すると、長さ 面積 応力 曲率 などを返す装置 。
SymPy 的には
一言でいうと
第1定義:「変換則で見る」
第2定義:「多重線形写像として見る」
第3定義:「テンソル積空間の元として見る」
???
(続けて)ChatGPT先生へ
sympy で説明お願いします。
以下、結果を省略です。私がわかっていないため。
第1の定義:成分変換で見るテンソル
2階テンソルの変換
from sympy import Matrix, symbols
# 座標変換行列
a, b, c, d = symbols('a b c d')
A = Matrix([
[a, b],
[c, d]
])
# 2階テンソル
T = Matrix([
[1, 2],
[3, 4]
])
# テンソル変換
Tp = A * T * A.T
print("A =")
print(A)
print("\nT =")
print(T)
print("\nT' = A T A^T")
print(Tp)
第2の定義:多重線形写像としてのテンソル
双線形写像の例
from sympy import Matrix
# 双線形写像を定める行列
A = Matrix([
[1, 2],
[3, 4]
])
# ベクトル
u = Matrix([1, 2])
v = Matrix([3, 4])
# 双線形写像
Tuv = (u.T * A * v)[0]
print("A =")
print(A)
print("\nT(u,v) = u^T A v")
print(Tuv)
線形性確認
from sympy import Matrix
A = Matrix([
[1,2],
[3,4]
])
u1 = Matrix([1,0])
u2 = Matrix([0,1])
v = Matrix([5,6])
lhs = ((u1 + u2).T * A * v)[0]
rhs = (u1.T * A * v)[0] + (u2.T * A * v)[0]
print(lhs)
print(rhs)
print(lhs == rhs)
第3の定義:テンソル積空間の元
TensorProduct を使う
from sympy import Matrix
from sympy.physics.quantum import TensorProduct
u = Matrix([1,2])
v = Matrix([3,4])
T = TensorProduct(u, v)
print(T)
行列形に直す
from sympy import Matrix
u = Matrix([1,2])
v = Matrix([3,4])
T = u * v.T
print(T)
3つの違いをコードで比較
実は全部つながる
イメージでいうと
第1「座標変換しても壊れない成分」
第2「ベクトルを食べる関数」
第3「テンソルを作るための空間そのもの」
数学的には...
「ベクトルを食べる関数」とは何ですか。
...テンソルの説明でよく出る言い方です。...
...ベクトルを食べる関数...
...内積は「ベクトルを2個食べる関数」...
...例えば計量テンソル...
...応力テンソルも同じ..
「食べる」の意味...「ベクトルを食べる」と言います。
線形性が重要...
さらに抽象化すると...
??? 私には無理。
(さらに続けて)ChatGPT先生へ
「ベクトルを食べる関数」 を専門的な英語に翻訳お願いします。事例のurlを教えてください。
「ベクトルを食べる関数」は、専門的には状況によって次のように言います。
- 最もテンソル論に近い表現
multilinear map(多重線形写像)
multilinear functional(多重線形汎関数)
英語で自然な説明
A tensor can be viewed as a multilinear map acting on vectors and covectors.
(テンソルは、ベクトルや共変ベクトルに作用する多重線形写像と見なせる。) - 1個のベクトルを食べる場合
linear functional(線形汎関数) - ベクトルを返すなら
vector-valued function(ベクトル値関数) - テンソル論で最も自然な専門表現
テンソル第2定義なら:multilinear map
テンソル論 A tensor is a multilinear map.
線形代数 A bilinear form takes two vectors as inputs and returns a scalar. (双線形形式は2つのベクトルを入力として取り、スカラーを返す。)
...以下省略
いつもと違うおすすめです。
Qiita内
・多数
ありがとうございます。