Aljabar Python

Python dapat mengoprasikan Aljabar dengan bantuan library numpy.
Sedikit operasi vektor dan matriks yang penting diketahui

In [1]:
import numpy as np
import math

Vektor

Penting :
Bedakan ketika menulis u=[1,2,3] dan u=np.array([1,2,3])
yang pertama adalah list, yang kedua adalah vektor
Tampilan vektor pada python selalu tertulis menyamping, walaupun kita tambahkan transpose, tampilan akan tetap menyamping. Hal ini sangat penting dan harus berhati-hati.

u=np.array([1,2,3]) artinya $\mathbb{u}=\begin{bmatrix}1\\2\\3\end{bmatrix}$, tampilan pada python u= [1 2 3]
np.transpose(u)=$\mathbb{u}^T=\begin{bmatrix}1&2&3\end{bmatrix}$, tampilan pada python u= [1 2 3]

In [2]:
u=[1,2,3] #ini adalah list, bukan vektor
v=[4,5,6] #ini adalah list, bukan vektor
print("List u=",u)
print("List v=",v)
print("Penjumlahan list : u+v =",u+v)
#print("Perkalian Hadamard Vektor : u*v =",u*v) #jika baris ini dijalankan, akan error
#print("Perkalian dot vektor : u@v =",u@v) #jika baris ini dijalankan, akan error
List u= [1, 2, 3]
List v= [4, 5, 6]
Penjumlahan list : u+v = [1, 2, 3, 4, 5, 6]
In [3]:
u=np.array([1,2,3]) #Ini adalah vektor
v=np.array([4,5,6]) #Ini adalah vektor
print("Vektor u=",u)
print("Vektor v=",v)
print("Penjumlahan vektor : u+v =",u+v)
print("Perkalian Hadamard Vektor : u*v =",u*v)
print("Perkalian dot vektor : u@v =",u@v)
print("Perkalian dot vektor : np.dot(u,v) =",np.dot(u,v))
Vektor u= [1 2 3]
Vektor v= [4 5 6]
Penjumlahan vektor : u+v = [5 7 9]
Perkalian Hadamard Vektor : u*v = [ 4 10 18]
Perkalian dot vektor : u@v = 32
Perkalian dot vektor : np.dot(u,v) = 32

Perkalian vektor pada python.
Misalkan $\mathbb{u}=\begin{bmatrix}u_1 \\u_2 \\\vdots\\u_n\end{bmatrix}$ dan $\mathbb{v}=\begin{bmatrix}v_1 \\v_2 \\\vdots\\v_n\end{bmatrix}$
Perkalian Hadamard dengan syntax $\mathbb{u}*\mathbb{v}$ akan menghasilkan $\mathbb{u}*\mathbb{v}=\begin{bmatrix}u_1v_1 \\u_2v_2 \\\vdots\\u_nv_n\end{bmatrix}$
Perkalian dot vektor syntax $\mathbb{u}$@$\mathbb{v}$ akan menghasilkan $\mathbb{u}$@$\mathbb{v}=u_1v_1+u_2v_2+...+u_nv_n$
Perkalian dot vektor syntax np.dot(u,v) akan menghasilkan np.dot(u,v)$=u_1v_1+u_2v_2+...+u_nv_n$

In [4]:
print("Panjang vektor u : |u|=",math.sqrt(u[0]**2+u[1]**2+u[2]**2))
print("Panjang vektor u : |u|=",math.sqrt(u@u))
print("Panjang vektor u : |u|=",np.linalg.norm(u))
w=np.cross(u,v)
print("Perkalian silang vektor : w=np.cross(u,v) =",w)
print("Cek ortogonal u@w =",u@w)
Panjang vektor u : |u|= 3.7416573867739413
Panjang vektor u : |u|= 3.7416573867739413
Panjang vektor u : |u|= 3.7416573867739413
Perkalian silang vektor : w=np.cross(u,v) = [-3  6 -3]
Cek ortogonal u@w = 0

Matriks

In [5]:
A=np.array([[1,2,3],[4,5,6],[7,8,9]])
print("A =",A)
print("A^T =",np.transpose(A))
A = [[1 2 3]
 [4 5 6]
 [7 8 9]]
A^T = [[1 4 7]
 [2 5 8]
 [3 6 9]]

Perkalian matriks pada python.
Misalkan $\mathbb{u}=\begin{bmatrix}u_1 \\u_2 \\\vdots\\u_n\end{bmatrix}$ dan $\mathbb{A}=\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n} \\a_{2,1}&a_{2,2}&\cdots&a_{2,n} \\\vdots&\vdots&\ddots&\vdots \\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}$


Perkalian Hadamard dengan syntax $\mathbb{u}*\mathbb{A}$ atau $\mathbb{A}*\mathbb{u}$ akan menghasilkan $\mathbb{u}*\mathbb{A}=\mathbb{A}*\mathbb{u}=\begin{bmatrix}u_1a_{1,1}&u_1a_{1,2}&\cdots&u_1a_{1,n} \\u_2a_{2,1}&u_2a_{2,2}&\cdots&u_2a_{2,n} \\\vdots&\vdots&\ddots&\vdots \\u_na_{n,1}&u_na_{n,2}&\cdots&u_na_{n,n}\end{bmatrix}$
Perkalian dot dengan syntax $\mathbb{u}$@$\mathbb{A}$ atau np.dot(u,A) yang artinya $\mathbb{u}^T\mathbb{A}$ akan menghasilkan

$\mathbb{u}$@$\mathbb{A}=$np.dot(u,A)$=\begin{bmatrix}u_1&u_2&\cdots&u_n\end{bmatrix}\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n} \\a_{2,1}&a_{2,2}&\cdots&a_{2,n} \\\vdots&\vdots&\ddots&\vdots \\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}=\begin{bmatrix}u_1a_{1,1}+u_2a_{2,1}+\cdots+u_na_{n,1} &u_2a_{1,2}+u_2a_{2,2}+\cdots+u_na_{n,2} &\cdots &u_na_{1,n}+u_2a_{2,n}+\cdots+u_na_{n,n}\end{bmatrix}$
$=\begin{bmatrix}\sum_{i=1}^{n}u_ia_{i,1} &\sum_{i=1}^{n}u_ia_{i,2}&\cdots&\sum_{i=1}^{n}u_ia_{i,n}\end{bmatrix}$


Perkalian dot dengan syntax $\mathbb{A}$@$\mathbb{u}$ atau np.dot(A,u) yang artinya $\mathbb{A}\mathbb{u}$ akan menghasilkan

$\mathbb{A}$@$\mathbb{u}=$np.dot(A,u)$=\begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n} \\a_{2,1}&a_{2,2}&\cdots&a_{2,n} \\\vdots&\vdots&\ddots&\vdots \\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}\begin{bmatrix}u_1 \\u_2 \\\vdots\\u_n\end{bmatrix}=\begin{bmatrix}a_{1,1}u_1+a_{1,2}u_2+\cdots+a_{1,n}u_n \\a_{2,1}u_1+a_{2,2}u_2+\cdots+a_{2,n}u_n \\\vdots \\a_{n,1}u_1+a_{n,2}u_2+\cdots+a_{n,n}u_n\end{bmatrix}=\begin{bmatrix}\sum_{i=1}^{n}a_{1,i}u_i \\\sum_{i=1}^{n}a_{2,i}u_i\\\vdots\\\sum_{i=1}^{n}a_{n,i}u_i\end{bmatrix}$

In [6]:
print("Perkalian Hadamard u*A =",u*A)
print("Perkalian Hadamard A*u =",A*u)
print("Perkalian dot vektor u dengan A =",u@A)
print("Perkalian dot vektor u dengan A =",np.dot(u,A))
print("Perkalian dot vektor A dengan u =",A@u)
print("Perkalian dot vektor A dengan u =",np.dot(A,u))
Perkalian Hadamard u*A = [[ 1  4  9]
 [ 4 10 18]
 [ 7 16 27]]
Perkalian Hadamard A*u = [[ 1  4  9]
 [ 4 10 18]
 [ 7 16 27]]
Perkalian dot vektor u dengan A = [30 36 42]
Perkalian dot vektor u dengan A = [30 36 42]
Perkalian dot vektor A dengan u = [14 32 50]
Perkalian dot vektor A dengan u = [14 32 50]

Determinan Matriks
Misalkan $\mathbb{B}=\begin{bmatrix}1&2\\3&4\end{bmatrix}$

In [7]:
B=np.array([[1,2],[3,4]])
print("Determinan matriks B =",np.linalg.det(B))
Determinan matriks B = -2.0000000000000004

Invers Matriks

In [8]:
print("Invers matriks B =",np.linalg.inv(B))
Invers matriks B = [[-2.   1. ]
 [ 1.5 -0.5]]

Nilai dan Vektor Eigen Matriks

In [9]:
val,vec=np.linalg.eig(B)
print("Nilai eigen matriks B",val)
print("Nilai eigen pertama matriks B",val[0])
print("Nilai eigen kedua matriks B",val[1])
print("Vektor eigen matriks B",vec)
print("Vektor eigen pertama matriks B",vec[0])
print("Vektor eigen kedua matriks B",vec[1])
Nilai eigen matriks B [-0.37228132  5.37228132]
Nilai eigen pertama matriks B -0.3722813232690143
Nilai eigen kedua matriks B 5.372281323269014
Vektor eigen matriks B [[-0.82456484 -0.41597356]
 [ 0.56576746 -0.90937671]]
Vektor eigen pertama matriks B [-0.82456484 -0.41597356]
Vektor eigen kedua matriks B [ 0.56576746 -0.90937671]

Comments

Popular posts from this blog

MA3071 : Algoritma Newton & Conjugate Gradien

Contoh Program Linear di Python & R

Kuis 1 MA2151 2021