function garis_singgung % author: mohammad fajar :) clc; f = figure('menubar', 'none', 'resize', 'off'); axes('units', 'pix', 'position', [50 50 450 300]... , 'xlim', [0 2*pi], 'ylim', [-1.5, 1.5]); slider = uicontrol('style', 'slider', 'position', [50 380 90 20]); text = uicontrol('style', 'text', 'position', [150 380 40 20 ]); t = 0:.1:2*pi; y1 = sin(t); y2 = cos(t); plot(t, y1 , t, y2); hold on ; line([0 2*pi], [0 0]); hold on ; while ishandle(f) value = get(slider , 'value'); value = value * 2 * pi; set(text, 'string', num2str(value)); hasil = cos(value); yy = (t - value ).* hasil + sin(value) ; p = plot(t, yy, 'r' , 'linewidth', 2); p1 = line([value value ] , [0 cos(value)], 'linewidth', 4); p2 = plot(value, sin(value),'r.' , 'markersize', 23); % method drawnow tidak mengenali settingan di atas axis([0 , 2*pi, -1.5, 1.5 ]); drawnow; if ishandle(p), delete(p); end if ishandle(p1), delete(p1); end if ishandle(p2), delete(p2); end end endAdapun hasilnya adalah pada gambar berikut:
Sesungguhnya shalat itu mencegah dari (perbuatan-perbuatan) keji dan mungkar
Q.S. Al-'Ankabut Ayat 45
Wednesday, November 13, 2013
Memahami garis singgung dengan MATLAB
Berikut ini saya berikan contoh program untuk memahami makna filosofis dari garis singgung.
Friday, November 1, 2013
Belajar monte carlo dengan MATLAB untuk menghitung luas kurva
Berikut ini contoh program yang saya buat pake MATLAB untuk menghitung luas kurva "apa saja" dengan menggunakan metode Monte Carlo.
Yang source codenya
function test_monte_carlo clear all ; clc; f = figure('menubar', 'none', 'resize', 'off' ); ax = axes('units', 'pix', 'position', [40 50 340 340]); uicontrol('units', 'pix', 'position', [400 360 60 25],... 'style', 'text','string','f(x) :' , 'fontsize', 12, 'horizontalAlignment', 'left', ... 'fontsize', 12, 'fontweight', 'bold', 'backgroundcolor', get(f, 'color')); % input fungsi inputFungsi = uicontrol('units', 'pix', 'position', [450 360 100 25],... 'style', 'edit', 'fontsize', 12); uicontrol('units', 'pix', 'position', [400 330 60 25],... 'style', 'text','string','N :' , 'fontsize', 12, 'horizontalAlignment', 'left', ... 'fontsize', 12, 'fontweight', 'bold', 'backgroundcolor', get(f, 'color')); inputN = uicontrol('units', 'pix', 'position', [450 330 100 25],... 'style', 'edit', 'fontsize', 12, 'fontweight', 'bold'); % keterangan hasil ket_hasil = uicontrol('units', 'pix', 'position', [400 280 100 30],... 'style', 'text', 'fontsize', 12, 'fontweight', 'bold', ... 'string', '0' , 'backgroundcolor', get(f, 'color')); % hitung button uicontrol('units', 'pix', 'position', [400 250 100 30],... 'style', 'pushbutton', 'fontsize', 12, 'fontweight', 'bold', ... 'string', 'HITUNG', 'Callback', @fungsi_hitung); % reset button uicontrol('units', 'pix', 'position', [400 210 100 30],... 'style', 'pushbutton', 'fontsize', 12, 'fontweight', 'bold', ... 'string', 'RESET', 'Callback', @reset_fungsi); function fungsi_hitung(varargin) N = get(inputN , 'string'); N = str2double(N); x = 0:.01:2*pi; yy = get(inputFungsi, 'string'); y = eval(yy, x); plot(x,y, 'parent', ax, 'linewidth', 3); hold on; miny = min(y); maxy = max(y); deltax = linspace( 0 , 2*pi ,10000); deltay = linspace( miny,maxy, 10000); a = 0; for i=1:N, m = randi(length(deltax),1); n = randi(length(deltay),1); x = deltax(m); y = deltay(n); if y >= 0 if y <= eval(yy, x) a = a + 1; plot(x,y, 'g*', 'parent', ax); hold on ; else plot(x,y, 'r*', 'parent', ax); hold on ; end else if y >= eval(yy, x) a = a + 1; plot(x,y, 'g*', 'parent', ax); hold on ; else plot(x,y, 'r*', 'parent', ax); hold on ; end end end axis tight; luas = (a/N) * ( (maxy- miny) * (2*pi - 0)); set(ket_hasil, 'string', num2str(luas)); end function reset_fungsi(varargin) cla reset; set(ket_hasil, 'string', '0'); end end
Thursday, October 31, 2013
Menggunakan slider di MATLAB
Contoh penggunaan slider di MATLAB
Adapun source codenya:
function test_slider figure('menubar', 'none', 'position', [300 300 200 100]); slider = uicontrol('style', 'slider', 'position', [10 10, 100 30]... , 'callback', @call); ket = uicontrol('style', 'text', 'position', [10 55, 100 40], ... 'fontsize', 14, 'fontweight', 'bold' ); set(ket, 'string', get(slider, 'value')); function call(varargin) set(ket, 'string', get(slider, 'value')); end end
Menggunakan input field GUI di MATLAB
Berikut adalah contoh penggunaan input field di MATLAB.
adapun sourcenya adalah:
adapun sourcenya adalah:
function tes_button clc; figure('menubar', 'none', 'position', [300 300 200 100]); uicontrol('style', 'pushbutton','position', [10 10, 100 50], 'string', 'TEST'... , 'Callback', @call ); edit = uicontrol('style', 'edit','position', [10 65, 60 30], 'string', '0'.... ,'fontsize', 12, 'fontweight','bold'); tampil = uicontrol('style', 'text', 'position', [80 65 60 25], 'string' , '0' ... ,'fontsize', 12, 'fontweight','bold'); function call(varargin) a = get(edit, 'string'); if ~isnan(str2double(a)) set(tampil, 'string', a); else set(tampil, 'string', 'SALAH'); end end end
Plot animasi sinusoidal di MATLAB
Berikut ini adalah contoh plot animasi sinusoidal di MATLAB
Adapun source codenya adalah
clc ; awal = 0; akhir = 2*pi ; f = figure; temp = awal + .1; step =0.05; while ishandle(f) && temp <= akhir x = awal:step:temp; plot(x,sin(2.*x),'-ro'); axis([0 akhir -1 1]); drawnow; temp = temp+ step; pause(0.02); end while ishandle(f) awal = awal + step; akhir = akhir + step; x = awal:.025:akhir; plot(x,sin(2.*x),'-ro'); axis([awal akhir -1 1]); drawnow; pause(0.02); end disp('program selesai');
Tuesday, October 29, 2013
Membuat 2 plot dalam satu figure di MATLAB
Berikut adalah source code membuat dua plot dalam satu figure di MATLAB.
function main f = figure('menubar', 'none', 'position', [200 100 780 500]); panel_plot = uipanel('title', 'plot area', ... 'units', 'pix', ... 'positioN', [10 50 750 400] , ... 'fontsize', 12); g0 =axes('units','pixels','position',[50 50 300 300], ... 'xlim', [0 (2*pi)], ... 'parent', panel_plot); g1 =axes('units','pixels','position',[400 50 300 300], ... 'xlim', [0 (2*pi)], ... 'parent', panel_plot); x = 0:.1:2*pi; plot(x, sin(x), 'parent', g1); plot(x,sin(x.^2), 'parent', g0);Dengan contoh plot
Wednesday, October 16, 2013
medan vektor konservatif dan simply-connected
Salah satu hal yang menarik dari kalkulus vektor adalah persoalan bagaimana menentukan apakah suatu medan vektor bersifat konservatif atau bukan. Suatu medan vektor dikatakan konservatif jika integral yang dilakukan terhadap suatu lintasan tertutup
yang berada di dalam domain medan vektor tersebut tidak bergantung pada lintasan yang diambil. Salah satu ciri dari medan vektor konservatif adalah curl yang diambil terhadap medan vektor tersebut sama dengan nol, atau bisa dikatakan medan vektor tersebut irotasional. Dengan demikian medan vektor tersebut dapat dinyatakan sebagai gradient suatu medan potensial skalar karena curl dari gradient potensial pasti nol. Contoh medan vektor konservatif adalah medan listrik dan medan gravitasi bumi.
Akan Tetapi pernyataan ini tidak bisa dibalik. Kita tidak bisa memastikan suatu medan vektor bersifat konservatif hanya dengan melihat apakah curl-nya nol atau bukan. Terdapat beberapa kasus di mana suatu medan vektor memiliki curl nol akan tetapi bukanlah medan vektor konservatif. Tinjau medan vektor dua dimensi berikut: \begin{equation} \vec{F} (x,y) = \left( \frac{-y}{x^2 + y^2}\right) \hat{i} + \left( \frac{x}{x^2 + y^2}\right)\hat{j} \end{equation} Yang curl-nya adalah $$ \begin{eqnarray} \nabla \times \vec{F} &=&\left[ \frac{\partial}{\partial x} \left( \frac{x}{x^2 + y^2}\right) + \frac{\partial }{\partial y} \left( \frac{-y}{x^2 + y^2}\right) \right] \hat{j} \\ &=& \left[ \frac{y^2 - x^2 }{\left( x^2 + y^2 \right)^2} + \frac{y^2 - x^2 }{\left( x^2 + y^2 \right)^2} \right] \hat{j} \\ &=& 0 \end{eqnarray} $$ Kita dapat memilih suatu kurva tertutup yang masih dalam domain medan vektor \(\vec{F}\) di mana integral yang diambil sepanjang kurva ini tidak sama dengan nol. Tinjau suatu kurva lingkaran \(C\) yang berpusat di titik \((0, 0)\) dan berjari-jari satu satuan yang dapat diparameterisasi sebagai $$ \begin{eqnarray} \vec{F }(c(t)) &= & \frac{-\sin t }{\cos^2 t + \sin^2 t} \, \hat{i} + \frac{\cos t }{\cos^2 t + \sin^2 t } \, \hat{j} \\ &=& -\sin t \, \hat{i} + \cos t \, \hat{j} \end{eqnarray} $$ dengan \( 0 <= t <= 2 \pi \). Integral yang dilakukan sepanjang kurva ini tidak sama dengan nol yakni $$ \begin{eqnarray} \int_C \vec{F} \cdot ds & = & \int_{a}^{b} \vec{F} (c(t)) \cdot c' (t) \, dt \\ &=& \int_{0}^{2 \pi} \left( -\sin t \, \hat{i} + \cos t \, \hat{j} \right) \cdot \left( - \sin t \, \hat{i} + \cos t \, \hat{j} \right) \\ &=& \int_{0}^{2\pi } 1 \, dt = 2 \pi \end{eqnarray} $$ Yang artinya terdapat suatu kurva yang mana integral \( \int_C \vec{F} \cdot ds \) tidak sama dengan nol yang mengindikasikan bahwa vektor \( \vec{F}\) bukanlah medan vektor konservatif.
Mengapa demikian adalah karena vektor \( \vec{F} \) memiliki titik singularitas yakni pada titik \((0,0)\). Artinya adanya titik singularitas ini mengakibatkan Teorema Stokes yang menghubungkan integral lintasan dengan curl vektor tidak bisa diterapkan pada medan vektor yang bersangkutan. Curl yang sama dengan nol baru bisa dipakai untuk menandai vektor konservatif jika vektor tersebut didefenisikan pada domain yang simply-connected. Adanya titik singularitas pada contoh di atas mengakibatkan domain tersebut tidak lagi simply-connected. Maksud simply connected sendiri adalah kita dapat mereduksi sembarang kurva dalam domain 2D atau permukaan dalam domain 3D menjadi sebuah titik dan masih tetap berada dalam domain tersebut. Untuk domain 2 dimensi simply connected mengharuskan bahwa seluruh domain terdefenisi secara utuh tanpa ada hole di dalam domain. Sementara untuk domain tiga dimensi sebuah hole pada domain bisa ditoleransi asalkan hole tersebut tidak menembus sampa ke luar domain. Syarat simply-connected ini merupakan syarat mutlak bagi teorema Stokes . Pada kasus dua dimensi adanya hole mengakibatkan kita tidak lagi bisa menghubungkan integral lintasan yang mengelilingi hole tersebut dengan integral permukaan pada keseluruhan hole, karena domainnya tidak terdefenisi pada hole. Sementara pada kasus tiga dimensi, walaupun terdapat suatu hole dalam daerah tertentu kita masih bisa mencari alternatif permukaan yang tidak melalui hole akan tetapi batasannya masih pada kurva yang sama dengan permukaan yang melalui hole tersebut.
Jadi kesimpulannya: suatu medan vektor bersifat konservatif jika curl yang dilakukan pada medan vektor tersebut sama dengan nol serta domain di mana medan vektor tersebut didefenisikan harus simply-connected.
Akan Tetapi pernyataan ini tidak bisa dibalik. Kita tidak bisa memastikan suatu medan vektor bersifat konservatif hanya dengan melihat apakah curl-nya nol atau bukan. Terdapat beberapa kasus di mana suatu medan vektor memiliki curl nol akan tetapi bukanlah medan vektor konservatif. Tinjau medan vektor dua dimensi berikut: \begin{equation} \vec{F} (x,y) = \left( \frac{-y}{x^2 + y^2}\right) \hat{i} + \left( \frac{x}{x^2 + y^2}\right)\hat{j} \end{equation} Yang curl-nya adalah $$ \begin{eqnarray} \nabla \times \vec{F} &=&\left[ \frac{\partial}{\partial x} \left( \frac{x}{x^2 + y^2}\right) + \frac{\partial }{\partial y} \left( \frac{-y}{x^2 + y^2}\right) \right] \hat{j} \\ &=& \left[ \frac{y^2 - x^2 }{\left( x^2 + y^2 \right)^2} + \frac{y^2 - x^2 }{\left( x^2 + y^2 \right)^2} \right] \hat{j} \\ &=& 0 \end{eqnarray} $$ Kita dapat memilih suatu kurva tertutup yang masih dalam domain medan vektor \(\vec{F}\) di mana integral yang diambil sepanjang kurva ini tidak sama dengan nol. Tinjau suatu kurva lingkaran \(C\) yang berpusat di titik \((0, 0)\) dan berjari-jari satu satuan yang dapat diparameterisasi sebagai $$ \begin{eqnarray} \vec{F }(c(t)) &= & \frac{-\sin t }{\cos^2 t + \sin^2 t} \, \hat{i} + \frac{\cos t }{\cos^2 t + \sin^2 t } \, \hat{j} \\ &=& -\sin t \, \hat{i} + \cos t \, \hat{j} \end{eqnarray} $$ dengan \( 0 <= t <= 2 \pi \). Integral yang dilakukan sepanjang kurva ini tidak sama dengan nol yakni $$ \begin{eqnarray} \int_C \vec{F} \cdot ds & = & \int_{a}^{b} \vec{F} (c(t)) \cdot c' (t) \, dt \\ &=& \int_{0}^{2 \pi} \left( -\sin t \, \hat{i} + \cos t \, \hat{j} \right) \cdot \left( - \sin t \, \hat{i} + \cos t \, \hat{j} \right) \\ &=& \int_{0}^{2\pi } 1 \, dt = 2 \pi \end{eqnarray} $$ Yang artinya terdapat suatu kurva yang mana integral \( \int_C \vec{F} \cdot ds \) tidak sama dengan nol yang mengindikasikan bahwa vektor \( \vec{F}\) bukanlah medan vektor konservatif.
Mengapa demikian adalah karena vektor \( \vec{F} \) memiliki titik singularitas yakni pada titik \((0,0)\). Artinya adanya titik singularitas ini mengakibatkan Teorema Stokes yang menghubungkan integral lintasan dengan curl vektor tidak bisa diterapkan pada medan vektor yang bersangkutan. Curl yang sama dengan nol baru bisa dipakai untuk menandai vektor konservatif jika vektor tersebut didefenisikan pada domain yang simply-connected. Adanya titik singularitas pada contoh di atas mengakibatkan domain tersebut tidak lagi simply-connected. Maksud simply connected sendiri adalah kita dapat mereduksi sembarang kurva dalam domain 2D atau permukaan dalam domain 3D menjadi sebuah titik dan masih tetap berada dalam domain tersebut. Untuk domain 2 dimensi simply connected mengharuskan bahwa seluruh domain terdefenisi secara utuh tanpa ada hole di dalam domain. Sementara untuk domain tiga dimensi sebuah hole pada domain bisa ditoleransi asalkan hole tersebut tidak menembus sampa ke luar domain. Syarat simply-connected ini merupakan syarat mutlak bagi teorema Stokes . Pada kasus dua dimensi adanya hole mengakibatkan kita tidak lagi bisa menghubungkan integral lintasan yang mengelilingi hole tersebut dengan integral permukaan pada keseluruhan hole, karena domainnya tidak terdefenisi pada hole. Sementara pada kasus tiga dimensi, walaupun terdapat suatu hole dalam daerah tertentu kita masih bisa mencari alternatif permukaan yang tidak melalui hole akan tetapi batasannya masih pada kurva yang sama dengan permukaan yang melalui hole tersebut.
Jadi kesimpulannya: suatu medan vektor bersifat konservatif jika curl yang dilakukan pada medan vektor tersebut sama dengan nol serta domain di mana medan vektor tersebut didefenisikan harus simply-connected.
Tuesday, October 15, 2013
Perbedaan operator divergensi dengan operator laplacian
Kata orang fisika itu lebih berat di filosofinya ketimbang di matematikanya. Seorang fisikawan adalah orang yang harus bisa menggambarkan realita dengan kuas matematika atau sebaliknya mampu menangkap makna fisis dari deskripsi matematika yang diberikan. Fisika lebih jauh dari matematika, karena fisika menyangkut hakikat kebendaan suatu benda sementara matematika hanya menyangkut hitung-hitungan tanpa perlu mempertanyakan sesuatu itu punya makna atau tidak. Menjadi fisikawan ibarat menjadi seorang filsuf tingkat tinggi. Ketika ada saudara yang bertanya apa maksud bilangan imajiner pada persamaan Schroodinger, seorang matematikawan tidak akan bisa menjawabnya, tapi seorang fisikawan mengatakan bahwa eksperimen mengharuskan seperti itu. Antara fisika dan matematika itu ibarat jeruk dan nutrisari. Kita mendapati realita fisika dan kita mencari simbol yang cocok dipakai untuk menuliskan fenomena itu.
\[\]
Demikian pula dengan operator divergensi dan operator laplacian. Kelihatannya keduanya sama padahal tidak sama. Seperti pada kasus medan listrik. Kita dapat menuliskan pernyataan semisal
\begin{equation}
\nabla \cdot \vec{E} = \frac{\rho}{\epsilon_0}
\end{equation}
sebagai
\begin{equation}
\nabla^2 V = \frac{\rho}{\epsilon_0}
\end{equation}
Padahal yang kedua merupakan konsekuensi yang pertama: ketika curl suatu vektor sama dengan nol otomatis vektor yang bersangkutan dapat dinyatakan sebagai gradient suatu skalar atau
\begin{equation}
\nabla \times \vec{E} = 0 \Rightarrow \vec{E} = \nabla V
\end{equation}
Jadi kita tidak mungkin menyatakan bahwa
\begin{equation}
\nabla \cdot \vec{B} = 0 \Rightarrow \nabla^2 W = 0
\end{equation}
dengan \(W\) suatu potensial. Hal ini karena
\begin{equation}
\nabla \times \vec{B} \ne 0
\end{equation}
Divergensi suatu (medan) vektor yang sama dengan nol menandakan tidak adanya source atau sink pada medan tersebut. Atau jika kita meninjau volume infinitesimal yang dialiri suatu medan, kita dapat mengatakan bahwa laju fluks yang masuk ke dalam volume infinitesimal sama dengan laju fluks yang keluar dari volume infinitesimal. Hal ini berbeda dengan operator Laplacian yang sama dengan nol yang maksudnya adalah keadaan kesetimbangan sistem yang mana nilai potensial pada suatu titik merupakan nilai rata-rata dari potensial pada titik-titik sekitarnya. Laplacian menyatakan curvature dari suatu potensial. Jika slope menyatakan perubahan suatu potensial terhadap jarak spasial pada ruang, maka laplacian menyatakan perubahan slope tersebut terhadap jarak spasial. Jadi jika nilainya sama dengan nol itu artinya nilai potensial dalam ruang tidak berubah atau berada dalam keadaan kesetimbangan.
Thursday, October 10, 2013
Soal Matriks 2
\( \textbf{Soal} \)
Tunjukkan bahwa tidak ada \( A \in M_2 (R ) \) yang memenuhi
\begin{equation}
A^{2004} = \left (
\begin{array}{cc}
-1 & 0 \\
0 & -2
\end{array}
\right )
\end{equation}
\( \textbf{Jawab} \)
Jika \( A^{2004} = \left(
\begin{array}{cc}
- 1 & 0 \\
0 & -2
\end{array}
\right) \)
Maka terdapat matriks real \( B = A^{1002} \) yang memenuhi
\begin{equation}
B^2 = \left(
\begin{array}{cc}
- 1 & 0 \\
0 & -2
\end{array}
\right)
\end{equation}
Akan kita tunjukkan bahwa matriks \(B\) ini tidak eksis yang yang dengan sendirinya membuktikan soal di atas.
\( \\ \)
Anggap
\begin{equation}
B = \left(
\begin{array}{cc}
a & b \\
c & d
\end{array}
\right)
\end{equation}
Maka
\begin{equation}
B^2 = \left(
\begin{array}{cc}
a^2 + bc & ab + bd \\
ac + cd & d^2 + bc
\end{array}
\right)
=
\left(
\begin{array}{cc}
-1 & 0 \\
0 & -2
\end{array}
\right)
\end{equation}
Tinjau elemen pada baris pertama kolom kedua pada matriks di atas. Yang mana menghasilkan
\begin{equation}
ab + bd = b (a - d) = 0
\end{equation}
Jika \( b\ne 0 \) maka \( a = -d \) yang mengakibatkan elemen diagonal matriks di atas akan sama yakni \( a^2 + bc = d^2 + bc \) padahal tidak, karena \( -1 \ne -2 \).
Sementara jika \( b \ne 0 \) maka dengan meninjau elemen pada baris pertama kolom pertama akan menghasilkan \( a^2 = -1 \) yang tidak mungkin mengingat \( a \) harus real berdasarkan soal. Jadi matriks \( A \) yang memenuhi pernyataan pada soal tidak eksis. QED
sumber: http://math.stackexchange.com/
sumber: http://math.stackexchange.com/
Tutorial matriks 1
\[
\textbf{Soal}
\]
Buktikan bahwa
\begin{equation}
\left(
\begin{array}{cc}
1 & 1 \\
0 & 1
\end{array}
\right)^n =
\left(
\begin{array}{cc}
1 & n \\
0 & 1
\end{array}
\right)
\end{equation}
\[
\textbf{Jawab}
\]
Untuk menjawab soal di atas kita dapat menggunakan induksi matematika, yakni yang pertama anggap bahwa pertanyaan tersebut benar untuk kasus dasar. Misalkan untuk kasus \(n = 2\) pernyataan tersebut benar yakni
\begin{equation}
\left(
\begin{array}{cc}
1 & 1 \\
0 & 1
\end{array}
\right)^2
=
\left(
\begin{array}{cc}
1 & 1\\
0 & 1
\end{array}
\right)
\cdot
\left(
\begin{array}{cc}
1 & 1\\
0 & 1
\end{array}
\right)
=
\left(
\begin{array}{cc}
1 & 2 \\
0 & 1
\end{array}
\right)
\end{equation}
Selanjutnya untuk \(n = k+1\) akan diperoleh
\begin{eqnarray}
\left(
\begin{array}{cc}
1 & 1 \\
0 & 1
\end{array}
\right)^{k + 1}
= \left(
\begin{array}{cc}
1 & 1 \\
0 & 1
\end{array}
\right)
\cdot
\left(
\begin{array}{cc}
1 & 1 \\
0 & 1
\end{array}
\right)^k \\
\equiv
\left(
\begin{array}{cc}
1 & 1 \\
0 & 1
\end{array}
\right)
\cdot
\left(
\begin{array}{cc}
1 & k \\
0 & 1
\end{array}
\right)
\\
= \left(
\begin{array}{cc}
1 & k + 1 \\
0 & 1
\end{array}
\right)
\end{eqnarray}
Pernyataan pada baris kedua dari persamaan di atas menandakan bahwa fakta tersebut sudah benar untuk beberapa kasus dasar misalnya \(n = 2\), QED.
Sumber: math.stackexchange.com
Sumber: math.stackexchange.com
Subscribe to:
Posts (Atom)