Попробую.
Вектор на плоскости - это путь, стрелка из начала. У него есть направление и длина.
![\begin{tikzpicture}
\draw[line width=2, ->] (0,0)--(2,1) node[above right] {$v$};
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture} \begin{tikzpicture}
\draw[line width=2, ->] (0,0)--(2,1) node[above right] {$v$};
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture}](https://dxdy-01.korotkov.co.uk/f/8/9/b/89bb0f2830d12c0619c498a4f8343fb382.png)
Ковектор(функционал) на плоскости тоже выделяет направление, но по-другому. Его можно представить себе как систему "верстовых прямых", отмеряющих, сколько мы прошли от начала в каком-то направлении
![\begin{tikzpicture}
\draw[line width=1,dashed] (-1,1)--(1,-1) node[below right]{$0$};
\draw[line width=1,dashed] (-1,2)--(2,-1) node[below right]{$1$};
\draw(0.5,0.5) node[circle,fill=white,inner sep=0]{$f$}
\draw[line width=1,dashed] (0,2)--(2,0) node[below right]{$2$};
\draw[line width=1,dashed] (1,2)--(2,1) node[below right]{$3$};
\draw[line width=1,dashed] (-1,0)--(0,-1) node[below right]{$-1$};
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture} \begin{tikzpicture}
\draw[line width=1,dashed] (-1,1)--(1,-1) node[below right]{$0$};
\draw[line width=1,dashed] (-1,2)--(2,-1) node[below right]{$1$};
\draw(0.5,0.5) node[circle,fill=white,inner sep=0]{$f$}
\draw[line width=1,dashed] (0,2)--(2,0) node[below right]{$2$};
\draw[line width=1,dashed] (1,2)--(2,1) node[below right]{$3$};
\draw[line width=1,dashed] (-1,0)--(0,-1) node[below right]{$-1$};
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture}](https://dxdy-01.korotkov.co.uk/f/8/a/9/8a96f255977826e8a52297a0511bde9d82.png)
Операция умножения вектора на ковектор - это определение того, сколько именно "верстовых прямых" мы прошли по стрелке
![\begin{tikzpicture}
\draw[line width=2, ->] (0,0)--(2,1) node[above right] {$\left<f,v\right> = 3$};
\draw[line width=1,dashed] (-1,1)--(2,-2) node[below right]{$0$};
\draw[line width=1,dashed] (-1,2)--(3,-2) node[below right]{$1$};
\draw[line width=1,dashed] (0,2)--(3,-1) node[below right]{$2$};
\draw[line width=1,dashed] (1,2)--(3,0) node[below right]{$3$};
\draw[line width=1,dashed] (-1,0)--(1,-2) node[below right]{$-1$};
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture} \begin{tikzpicture}
\draw[line width=2, ->] (0,0)--(2,1) node[above right] {$\left<f,v\right> = 3$};
\draw[line width=1,dashed] (-1,1)--(2,-2) node[below right]{$0$};
\draw[line width=1,dashed] (-1,2)--(3,-2) node[below right]{$1$};
\draw[line width=1,dashed] (0,2)--(3,-1) node[below right]{$2$};
\draw[line width=1,dashed] (1,2)--(3,0) node[below right]{$3$};
\draw[line width=1,dashed] (-1,0)--(1,-2) node[below right]{$-1$};
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture}](https://dxdy-01.korotkov.co.uk/f/0/a/9/0a91a13180fba60690369b95e2544aa882.png)
Заметим, что все это мы сделали совсем без координат. И вектор, и ковектор - это объекты, которые есть сами по себе, координаты нужны только для того, чтобы их измерить. Координаты вектора определяются обычным образом - надо посмотреть, сколько мы прошли на север, а сколько - на восток:
![\begin{tikzpicture}
\draw[->] (-1,0)--(3,0) node[above]{$x$};
\draw[->] (0,-1)--(0,3) node[right]{$y$};
\draw(-0.1,1)--(0.1,1);
\draw(1,-0.1)--(1,0.1);
\draw[line width=2, ->] (0,0)--(2,1) node[above right] {$v = 2e_1 + e_2$};
\draw[dotted](0,1) node[left]{$1$}--(2,1);
\draw[dotted](2,0) node[below]{$2$}--(2,1);
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture} \begin{tikzpicture}
\draw[->] (-1,0)--(3,0) node[above]{$x$};
\draw[->] (0,-1)--(0,3) node[right]{$y$};
\draw(-0.1,1)--(0.1,1);
\draw(1,-0.1)--(1,0.1);
\draw[line width=2, ->] (0,0)--(2,1) node[above right] {$v = 2e_1 + e_2$};
\draw[dotted](0,1) node[left]{$1$}--(2,1);
\draw[dotted](2,0) node[below]{$2$}--(2,1);
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture}](https://dxdy-02.korotkov.co.uk/f/5/1/6/5169cbdc2321c3de1338b4ce7b622de382.png)
Координаты ковектора - это отметки "верстовых прямых" на единицах осей.
![\begin{tikzpicture}
\draw[->] (-1,0)--(3,0) node[above]{$x$};
\draw[->] (0,-1)--(0,3) node[right]{$y$};
\draw(-0.1,1)--(0.1,1);
\draw(1,-0.1)--(1,0.1);
\draw[line width=1,dashed] (-1,1)--(1,-1) node[below right]{$0$};
\draw[line width=1,dashed] (-1,2)--(2,-1) node[below right]{$1$};
\draw(0.5,0.5) node[circle,fill=white,inner sep=0]{$f$}
\draw(2,2.5) node[circle,fill=white,inner sep=0]{$f = e^1 + e^2$}
\draw[line width=1,dashed] (0,2)--(2,0) node[below right]{$2$};
\draw[line width=1,dashed] (1,2)--(2,1) node[below right]{$3$};
\draw[line width=1,dashed] (-1,0)--(0,-1) node[below right]{$-1$};
\draw[dotted](0,1) node[fill=white,circle,inner sep=0,xshift=-5,yshift=5]{$1$};
\draw[dotted](1,0) node[fill=white,circle,inner sep=0,xshift=5,yshift=-5]{$1$};
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture} \begin{tikzpicture}
\draw[->] (-1,0)--(3,0) node[above]{$x$};
\draw[->] (0,-1)--(0,3) node[right]{$y$};
\draw(-0.1,1)--(0.1,1);
\draw(1,-0.1)--(1,0.1);
\draw[line width=1,dashed] (-1,1)--(1,-1) node[below right]{$0$};
\draw[line width=1,dashed] (-1,2)--(2,-1) node[below right]{$1$};
\draw(0.5,0.5) node[circle,fill=white,inner sep=0]{$f$}
\draw(2,2.5) node[circle,fill=white,inner sep=0]{$f = e^1 + e^2$}
\draw[line width=1,dashed] (0,2)--(2,0) node[below right]{$2$};
\draw[line width=1,dashed] (1,2)--(2,1) node[below right]{$3$};
\draw[line width=1,dashed] (-1,0)--(0,-1) node[below right]{$-1$};
\draw[dotted](0,1) node[fill=white,circle,inner sep=0,xshift=-5,yshift=5]{$1$};
\draw[dotted](1,0) node[fill=white,circle,inner sep=0,xshift=5,yshift=-5]{$1$};
\draw[fill] (0,0) circle(2pt);
\end{tikzpicture}](https://dxdy-01.korotkov.co.uk/f/4/7/4/47437f7d77119a99084e224da2db66a482.png)
Когда мы умножаем вектор на ковектор, мы можем представить и тот, и другой в координатах и перемножить соответствующие координаты - потому что координаты вектора показывают нам, сколько мы проехали на север и сколько на восток, а координаты ковектора - сколько "верстовых прямых" мы увидим на каждой единице северного направления, и сколько - на единице восточного
При переходе в другую систему координат координаты и векторов, и ковекторов меняются, потому что оси начинают проходить по-другому. Но результат умножения вектора на ковектор измениться не должен, он ведь совсем не зависит от того, в какую сторону показывает компас. Поэтому, если координаты вектора изменились каким-то образом, то координаты ковектора должны измениться так, чтобы это первое изменение нивелировать. Например, если мы увеличили единицу по горизонтали, то первая координата вектора уменьшится в два раза, а первая координата ковектора в два раза увеличится.