<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Some stuff &#187; component elements</title>
	<atom:link href="http://blog.yhuang.org/?feed=rss2&#038;tag=component-elements" rel="self" type="application/rss+xml" />
	<link>https://blog.yhuang.org</link>
	<description>here.</description>
	<lastBuildDate>Wed, 27 Aug 2025 08:50:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>tensors</title>
		<link>https://blog.yhuang.org/?p=655</link>
		<comments>https://blog.yhuang.org/?p=655#comments</comments>
		<pubDate>Sun, 16 Oct 2011 12:33:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[basis]]></category>
		<category><![CDATA[component elements]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[math math]]></category>
		<category><![CDATA[overbrace]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[sum]]></category>
		<category><![CDATA[vector products]]></category>
		<category><![CDATA[vector space]]></category>
		<category><![CDATA[vector spaces]]></category>

		<guid isPermaLink="false">http://scripts.mit.edu/~zong/wpress/?p=655</guid>
		<description><![CDATA[This has been a confusing topic, with half a dozen Wikipedia pages on the subject. Here I took some notes. Tensors are sums of &#8220;products&#8221; of vectors. There are different kinds of vector products. The one used to build tensors is, naturally, the tensor product. In the Cartesian product of vector spaces , the set [...]]]></description>
			<content:encoded><![CDATA[<p>This has been a confusing topic, with half a dozen Wikipedia pages on the subject. Here I took some notes.</p>
<p>Tensors are sums of &#8220;products&#8221; of vectors. There are different kinds of vector products. The one used to build tensors is, naturally, the <strong>tensor product</strong>. In the Cartesian product of vector spaces \(V\times W\), the set elements are tuples like \((v,w)\) where \(v\in V, w\in W\). A tensor product \(v\otimes w\) is obtained by tupling the component <strong>bases</strong> rather than the component elements. If \(V\) has basis \(\{e_i\}_{i\in\{1,&#8230;,M\}}\) and \(W\) has basis \(\{f_j\}_{j\in\{1,&#8230;,N\}}\), then take \(\{(e_i,f_j)\}_{i\in\{1,&#8230;,M\},j\in\{1,&#8230;,N\}}\) as the basis of the <strong>tensor product space</strong> \(V\otimes W\). Then define the tensor product \(v\otimes w\) as</p>
<p>(1) \(\sum_{i,j} v_i w_j (e_i,f_j) \in V\otimes W\),</p>
<p>if \(v=\sum_i v_i e_i\) and \(w=\sum_j w_j f_j\). The entire tensor product space \(V\otimes W\) is defined as sums of these tensor products</p>
<p>(2) \(\{\sum_k v_k\otimes w_k | v_k\in V, w_k\in W\}\).</p>
<p>So tensors in a given basis can be represented as multidimensional arrays.</p>
<p>\(V\otimes W\) is also a vector space, with \(MN\) basis dimensions (c.f. \(V\times W\) with \(M+N\) basis dimensions). But additionally, it has internal multilinear structure due to the fact that it is made of component vector spaces, namely:</p>
<p>\((v_1+v_2)\otimes w = v_1\otimes w + v_2\otimes w\)<br />
\(v\otimes (w_1+w_2) = v\otimes w_1 + v\otimes w_2\)<br />
\(\alpha (v\otimes w) = (\alpha v)\otimes w = v\otimes (\alpha w)\)<br />
<span id="more-655"></span><br />
Higher-order (n-th order) tensor products \(v_1\otimes v_2\otimes \cdots \otimes v_n\) are obtained by chaining in the obvious way, likewise for higher-order tensor product spaces \(V_1\otimes V_2\otimes \cdots \otimes V_n\). With this, <strong>concatenation</strong> of tensors are also defined, i.e. \(S_{i_1,&#8230;i_m} \in V_1\otimes \cdots \otimes V_m\) and \(T_{i_{m+1},&#8230;,i_n} \in V_{m+1}\otimes \cdots \otimes V_n\), then \(S_{i_1,&#8230;,i_m}\otimes T_{i_{m+1},&#8230;,i_n} = Z_{i_1,&#8230;,i_n} \in V_1\otimes \cdots \otimes V_n\). In other words, the indices are appended. This is essentially the <strong>Kronecker product</strong>, which generalizes the <strong>outer product</strong>.</p>
<p>However, usually when tensors are mentioned, the tensor product spaces under discussion are already specialized to those generated from a single base vector space \(V\) and its dual space \(V^*\), rather than from a collection of arbitrary vector spaces. In such a space \(P(m,n) = \overbrace{V\otimes \cdots \otimes V}^{m} \otimes \overbrace{V^*\otimes \cdots \otimes V^*}^{n}\), the component spaces (and their bases, indices, etc.) naturally belong to two groups, those from \(V\) are called <strong>contravariant</strong>, those from \(V^*\) are called <strong>covariant</strong>,  and an (m,n)-tensor from \(P(m,n)\) is written \(T^{i_1,&#8230;,i_m}_{j_1,&#8230;,j_n}\).</p>
<p>This specialization allows the <strong>contraction</strong> of tensors to be defined. A contraction basically chooses one covariant vector component and one contravariant vector component from a tensor and applies the former as a functional on the latter, e.g., contracting \(T^{i_1,&#8230;,i_m}_{j_1,&#8230;,j_n} = v_{i_1}\otimes \cdots \otimes v_{i_m} \otimes v^*_{j_1} \otimes \cdots \otimes v^*_{j_n}\) on the pair of indices \(i_1\) and \(j_1\) gives \(Z^{i_2,&#8230;,i_m}_{j_2,&#8230;,j_n} = v^*_{j_1}(v_{i_1}) (v_{i_2}\otimes \cdots \otimes v_{i_m} \otimes v^*_{j_2} \otimes \cdots \otimes v^*_{j_n})\). \(v^*_{j_1}(v_{i_1})\) of course is an <strong>inner product</strong> that sums over the dimensions of the paired components. Contraction generalizes the <strong>trace</strong> operator. Combined with concatenation, this defines a <strong>tensor multiplication</strong>, such that if \(S^{r,i_2,&#8230;,i_m}_{s,j_2,&#8230;,j_n}\in P(m,n)\) and \(T^{s,k_2,&#8230;,k_p}_{r,l_2,&#8230;,l_q}\in P(p,q)\), then \(S^{r,i_2,&#8230;,i_m}_{s,j_2,&#8230;,j_n}T^{s,k_2,&#8230;,k_p}_{r,l_2,&#8230;,l_q}\) is the contraction of \(S^{r,i_2,&#8230;,i_m}_{s,j_2,&#8230;,j_n}\otimes T^{s,k_2,&#8230;,k_p}_{r,l_2,&#8230;,l_q}\) on all common indices that can be paired, e.g. \(r,s\). This is the so-called <strong>Einstein notation</strong>, and generalizes <strong>matrix multiplication</strong>.</p>
<p>The distinction of \(V\) vs. \(V^*\) also manifests in the <strong>change-of-basis</strong> rules for tensors, which inherit from the change-of-basis rules of the component vector spaces, which are:</p>
<ul>
<li><strong>contravariant</strong> change-of-basis rule: If \(B = [b_1\ b_2\ \cdots\ b_M]\) is a change-of-basis matrix, with the new basis \(\{b_i\}_{i\in \{1,&#8230;,M\}}\) written in the old basis as columns, then for a vector written in the old basis \(v\in V\) and the same vector written in the new basis \(\tilde{v}\in V\), \(v = B\tilde{v}\). Therefore, we have
<p>(3) \(v \mapsto \tilde{v} = B^{-1}v\).</li>
<li><strong>covariant</strong> change-of-basis rule: If additionally \(a^T\in V^*\) is a functional written in the old basis and \(\tilde{a}^T\in V^*\) is the same functional written in the new basis, then \(\forall v\in V: a^T v = \tilde{a}^T \tilde{v} = \tilde{a}^T B^{-1}v\). Therefore, we have
<p>(4) \(a^T \mapsto \tilde{a}^T = a^T B\).</li>
</ul>
<p>Combining (1), it can be shown that, for a change-of-basis tensor \(B = {B^{-1}}^{i_1}_{i_1}\cdots {B^{-1}}^{i_m}_{i_m}B^{j_1}_{j_1}\cdots B^{j_n}_{j_n}\), an (m,n)-tensor \(T^{i_1,&#8230;,i_m}_{j_1,&#8230;,j_n}\) has the change-of-basis rule \(T^{i_1,&#8230;,i_m}_{j_1,&#8230;,j_n} \mapsto BT^{i_1,&#8230;,i_m}_{j_1,&#8230;,j_n}\).</p>
<p>Okay, so what&#8217;s the point of these tensors? Basically, an (m,n)-tensor \(T^{i_1,&#8230;,i_m}_{j_1,&#8230;,j_n}\in P(m,n)\) represents a multilinear input-output relationship that takes \(n\) vectors as input and produces \(m\) vectors as output. If used &#8220;canonically&#8221; on an input \(X^{j_1,&#8230;,j_n}\in P(n,0)\), you get \(T^{i_1,&#8230;,i_m}_{j_1,&#8230;,j_n}X^{j_1,&#8230;,j_n} = Y^{i_1,&#8230;,i_m}\in P(m,0)\) as output. The contravariant input gets contracted with the covariant parts of the transformation tensor, and these drive the contravariant parts of the transformation tensor to produce the contravariant output.</p>
<p><img src="wp-content/uploads/images/tensor.png" /><br />
(System diagrams: <strong>Rank</strong> is the minimal number of terms in a tensor. On the left, a rank-1 tensor transformation; on the right, a rank-\(K\) one. )</p>
<p>An example is linear transformations, which are (1,1)-tensors (1 vector in, 1 vector out). In array representation these would just be matrices. Any rank-\(K\) linear transformation \(T^v_a\) is decomposable into a \(K\)-term tensor \(\sum_{k=1}^K v_k\otimes a_k\), but 1-term (1,1)-tensors are outer products, so this is the matrix \(\sum_{k=1}^K v_k a^T_k\), and \(Y^v = T^v_a X^a\) is just \(y = \sum_k v_k (a^T_k x)\).</p>
<p>Most other &#8220;multilinear&#8221; operations on vectors (inner product, cross product, wedge product, determinant) can be written as tensors. For example, the inner product operation (2 vectors in, &#8220;0&#8243; vectors out, i.e. scalar) is the (0,2) \(N\)-term <strong>Kronecker tensor</strong> \(\delta_{i_1 i_2}=\sum_{k=1}^N e^*_k\otimes e^*_k\) where \(\{e^*_k\}_{k\in\{1,&#8230;,N\}}\) are the standard basis of \(V^*\).</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.yhuang.org/?feed=rss2&#038;p=655</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
