Thursday, December 24, 2015

Menggambar Fungsi Implisit

Pengantar

Perbedaan antara fungsi implisit dan fungsi eksplisit dapat dilihat dalam persamaan fungsinya. Secara umum fungsi dinyatakan secara eksplisit dimana variabel tak bebas dan variabel bebasnya dapat dinyatakan sebagai
\[y=f(x)\]
Dalam fungsi implisit, selain variabel tak bebas dan variabel bebasnya tidak berbentuk eksplisit seperti di atas, juga terdiri dari beberapa variabel dan dinyatakan sebagai
\[R(x_1,x_2,\ldots,x_n)=0\]
Untuk dua variabel, misalnya, berbentuk
\[R(x,y)=0\]
Nah, tulisan ini memang didasari oleh fungsi implisit yang disodorkan kepada saya dalam bentuk soal sebagai berikut.
Tentukan semua bilangan real $(x,y)$ dari sistem persamaan \begin{cases}
\sqrt{x-y}=x+y-7\\
\sqrt{x+y}=x-y-1
\end{cases}
Setelah itu, yang pertama terpikirkan adalah bagaimana menyelesaikan soal tersebut secara grafis; menyiasati penyelesaian soal selain cara aljabar. Soal ini tampak rumit, baik untuk diselesaikan secara aljabar maupun secara grafis. Secara aljabar saya coba menyelesaikannya dengan cara mengkuadratkan kedua ruas, tetapi ini menghasilkan jawaban yang keliru (karena cara tersebut tidak berlaku pada fungsi implisit). Hal ini diketahui setelah saya memeriksanya secara grafis pada WolframAlpha. Saya hentikan untuk menjawabnya secara aljabar, karena jawaban itu sudah ditemukan oleh Pak Anang. Saya kembali ke daya tarik semula, yaitu mencari cara untuk menyelesaikannya secara grafis. Akhirnya ditemukan juga, kita dapat menyelesaikannya dengan menggunakan paket pgfplots.

Menggambar Fungsi Implisit

Perhatikan gambar di atas. Berbeda dari penggunaan paket pgfplots sebelumnya dalam tulisan-tulisan ini, fungsi implisit digambar dengan menggunakan perintah utama dari gnuplot. Saya juga sudah mencobanya dengan menggunakan SageMath, tetapi pengkodeannya terlalu rumit.

Kurva dari fungsi implisit kita gambar dalam perintah dasar \addplot dengan dua opsi utama
raw gnuplot,empty line=jump
diiukuti oleh perintah
gnuplot {
    set contour base;
    set cntrparam levels discrete 0.001;
    unset surface;
    set view map;
    set isosamples 500;
    splot ... ;
    };
Ketiga titik itu kita ganti dengan rumus fungsi yang akan kita gambar.

Sebagai contoh, untuk menggambar kurva dari $\sqrt{x-y}=x+y-7$ kita harus menyatakan persamaan fungsinya secara implisit dengan ruas kanan nol menjadi $\sqrt{x-y}-x-y+7=0$. Kemudian fungsi dari ruas kiri itu kita cantumkan dalam perintah berikut ini.
\addplot[name path=satu,blue,
    raw gnuplot,very thick,
    empty line=jump 
    ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.001;
      unset surface;
      set view map;
      set isosamples 500;
      splot sqrt(x-y)-x-y+7;%biru
    };
Nama path dicantumkan dalam opsi karena (seperti tampak pada gambar di atas) saya akan menetapkan koordinat titik potong dari kedua kurva tersebut. Agar opsi ini diterima, lebih dulu kita muat library intersections pada preamble.
\usetikzlibrary{intersections}
Kurva kedua untuk $\sqrt{x+y}=x-y-1$ kita ubah menjadi $\sqrt{x+y}-x+y+1=0$, kemudian kita cantumkan dalam
\addplot[name path=dua,red,
    raw gnuplot,very thick,
    empty line=jump 
    ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.001;
      unset surface;
      set view map;
      set isosamples 500;
      splot sqrt(x+y)-x+y+1;%merah
    };


Menetapkan Koordinat Titik Potong antara Dua Kurva

Dengan library intersections kita sudah menamai masing-masing path dari kedua kurva sebagai satu dan dua. Sekarang kita sebut nama titik potongnya itu sebagai $P$, maka kita nyatakan
\path [name intersections={of=satu and dua,by=P}];
Bila pada $P$ kita ingin menandainya dengan noktah berupa lingkaran kecil, maka kita gambar (misalnya) dengan
\draw[fill=yellow] (P) circle [radius=1.25pt];
Hal-hal lainnya dalam pengkodean ini dapat Anda pelajari dalam tulisan sebelumnya tentang penggunaan paket pgfplots.


Penutup

Nah, berikut ini saya sertakan pengkodean selengkapnya dan dokumen yang dihasilkannya. Contoh dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX
Demikian semoga bermanfaat.


$\square$ Adjie Gumarang Pujakelana 2015
\documentclass{article}
\usepackage[margin=2cm,a4paper]{geometry}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{intersections}
\let\ds\displaystyle
\pagestyle{empty}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[clip=false,
  axis lines=center, 
  xmin=-1,xmax=12,
  ymin=-1,ymax=5,
  xtick={1,6,7,8,10},ytick={2,3,4},
  enlargelimits=false
  ]
\addplot[name path=satu,blue,
    raw gnuplot,very thick,
    empty line=jump 
    ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.001;
      unset surface;
      set view map;
      set isosamples 500;
      splot sqrt(x-y)-x-y+7;%biru
    };
\addplot[name path=dua,red,
    raw gnuplot,very thick,
    empty line=jump 
    ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.001;
      unset surface;
      set view map;
      set isosamples 500;
      splot sqrt(x+y)-x+y+1;%merah
    };
\path [name intersections={of=satu and dua,by=P}];
\draw[fill=yellow] (P) circle [radius=1.25pt];
\draw[dashed,gray] (axis cs:0,2.5)--(P) (axis cs:6.5,0)--(P);
\node[coordinate,pin=95:{\color{red}\small{$\ds\sqrt{x+y}=x-y-1$}}] at (axis cs:7.9,3.5){};
\node[blue,coordinate,pin=80:{\color{blue}\small{$\ds\sqrt{x-y}=x+y-7$}}] at (axis cs:8,1.5){};
  \end{axis}
\end{tikzpicture}

\end{document}





Tuesday, December 22, 2015

Segitiga, Dalil Pythagoras, dan Persamaan Kuadrat

Pengantar

Tulisan ini didasari oleh soal berikut ini.
Diketahui salah satu sisi siku-siku suatu segitiga siku-siku $\small21$cm lebih panjang dari sisi siku-siku lainnya. Jika panjang hipotenusanya adalah $\small39$cm, maka panjang sisi terpendek dari segitiga siku-siku tersebut adalah ... cm.
Nah, bila kita buat konstruksi gambar yang berkaitan dengan soal tersebut maka akan kita peroleh gambar seperti tampak di samping ini. Pada tulisan ini kita akan membuat gambar sederhana tersebut. Dengan menggunakan paket tikz, kita akan pelajari tentang cara
  • menetapkan koordinat
  • menggambar segitiga, sebagai path tertutup
  • menamai ruas garis, sebagai ukuran panjang sisi segitiga
  • menandai sudut siku-siku


Teknis Gambar TikZ

Tentu, lebih dulu, kita muat paket tikz pada preamble.
\usepackage{tikz}
Kemudian, pada badan dokumen, setiap gambar tikz ditulis di dalam environment brikut ini.
\begin{tikzpicture}  
...
\end{tikzpicture}
Sekarang kita mulai dengan menetapkan ketiga koordinat, sebagai titik-titik sudut segitiga itu. Hal ini dapat kita lakukan dengan "membayangkan" kedudukan dari ketiga titik itu pada bidang koordinat, atau kita dapat menyelidikinya dengan menggunakan GeoGebra.
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (0,5);
Kita "sebut" ketiga koordinat itu sebagai $\small{A}$, $\small{B}$, dan $\small{C}$. Dalam hal ini, pusat koordinat $\small A(0,0)$ kita perlakukan sebagai tempat sudut siku-siku.

Untuk menggambar (draw) segitiga, kita nyatakan secara berurutan ketiga koordinat itu dalam bentuk 
\draw[] (A)--(B)--(C)--cycle;
Bila diinginkan kita dapat isi kurung siku itu sebagai opsi terhadap gambar segitiga itu, misalnya dengan mewarnai sisinya atau mengarsir daerahnya.

Selanjutnya kita akan menamai ukuran panjang dari ketiga sisinya. Pada sisi $\small\overline{AB}$ kita misalkan sebagai $\small{x}$. Peletakkan nama ini hanya menyediakan tempat, bukan menggambar ruas garisnya. Ini dinyatakan oleh perintah path dan node sebagai berikut.
\path[] (A)--(B) node[below,midway] {$x$};
Perintah path menyediakan tempat untuk nama itu, yaitu di antara koordinat $\small{A}$ dan $\small{B}$. Sedangkan perintah node menetapkan letak nama itu dan menuliskannya. Opsi below menyatakan bahwa nama itu terletak bawah ruas garis $\small\overline{AB}$ dan oleh opsi midway diletakkannya itu di tengah-tengahnya.

Pada sisi $\small\overline{BC}$, sisi miring dengan ukuran $\small\overline{39}$, kita ingin agar nama itu mengikuti kemiringan sisinya. Untuk hal ini kita tambahkan opsi sloped pada perintah node.
\path[] (C)--(B) node[above,midway,sloped] {$39$};
Hal yang sama kita lakukan dalam menamai sisi $\small\overline{CA}$.
\path[] (C)--(A) node[below,midway,sloped] {$x+21$};
Terakhir, sebagai salah satu pilihan, akan kita gunakan paket lain, yaitu tkz-euclide, untuk menandai sudut siku-siku. Untuk keperluan ini kita mencantumkannya pada preamble sebagai
\usepackage{tkz-euclide}
\usetkzobj{all}
Sedangkan dalam penggunaannya, tanda siku-siku pada $\angle{BAC}$ (penyebutannya melawan arah putar jarum jam) dinyatakan dengan 
\tkzMarkRightAngle[draw=gray,opacity=.5,scale=2](B,A,C)
Opsi-opsinya menyatakan bahwa tanda siku-siku itu digambar dengan warna abu-abu (gray), dengan tingkat keburaman (opacity) 50%, dan berukuran dalam skala 2. Tentu saja opsi-opsi ini dapat disesuaikan dengan selera kita.


Penutup

Bila rangkaian perintah yang telah diuraikan di atas dipadukan maka akan membentuk pengkodean selengkapnya seperti tampak dalam struktur dokumen berikut ini. Pengkodean ini untuk menggambar segitiga sebagaimana tampak pada gambar di atas. Adapun jawaban selengkapnya untuk soal tersebut terlampir dalam dokumen di bawahnya. Dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX
Demikian semoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2015
\documentclass[a4paper,10pt]{article}
\usepackage[margin=2cm]{geometry}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetkzobj{all}
\pagestyle{empty}

\begin{document}

\begin{tikzpicture}  
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (0,5);

\draw[] (A)--(B)--(C)--cycle;

\path[] (A)--(B) node[below,midway] {$x$};
\path[] (C)--(B) node[above,midway,sloped] {$39$};
\path[] (C)--(A) node[below,midway,sloped] {$x+21$};

\tkzMarkRightAngle[draw=gray,opacity=.5,scale=2](B,A,C)
\end{tikzpicture}

\end{document}



Sunday, December 20, 2015

Membagi Bilangan dengan LongDiv dan XintFrac

Pengantar

Pada sekolah-sekolah tingkat dasar, materi pembagian bilangan oleh bilangan lain merupakan kemampuan dasar yang harus dimiliki oleh para siswa. Dalam konsep pembagian (division) dikenal istilah pembagi (divisor), hasil bagi (quotient), dan sisa (remainder). Jika dari pembagian itu diperoleh sisa nol maka disebut habis dibagi
Nah, bagaimana Anda menunjukkan proses pembagian bilangan ini pada dokumen tertulis yang Anda susun?
Dalam tulisan ini akan kita tinjau pembagian suatu bilangan (dividend) oleh bilangan lain (divisor) dengan menggunakan makro longdiv dan paket xintfrac.

Pembagian Bentuk Panjang (Long Division)

Pembagian ini dikenal juga sebagai bagi kurung atau pembagian cara pistol. Salah satu cara untuk menunjukkan proses pembagian dalam bentuk panjang, dapat kita gunakan makro longdiv. Pada preamble kita cantumkan
\input{longdiv}
Kemudian kita gunakan (pada badan dokumen), misalnya, untuk memperlihatkan pembagian bilangan $\small12345$ oleh $\small13$ dengan perintah
\longdiv{12345}{13} 
maka hasilnya akan tampak seperti pada Contoh 1 dalam dokumen terlampir di bawah ini. Dengan demikian contoh-contoh lainnya kita perlihatkan dengan
\longdiv{31415926}{2} 
\longdiv{81}{3}
\longdiv{1132}{99}
\longdiv{86491}{94}
Kita lihat bahwa dalam masing-masing pembagian tersebut memperlihatkan proses pembagiannya hingga diperoleh hasil bagi dan sisanya.

Cara Lain

Bila kita ingin menunjukkan pembagian dengan hasil dan sisanya ditulis ke samping kanan, seperti pada Contoh 6 s.d. 8, maka dapat kita gunakan paket xintfrac dengan tambahan perintah baru. Pada preamble kita muat

\usepackage{xintfrac}
\newcommand\hasil[2]{%
    \xintNum {#1/#2}+\xintFrac{\xintIrr{\xintTFrac {#1/#2}}}}
Sebagai contoh dalam penggunaannya, pada badan dokumen, kita tulis

$\ds\frac{43365}{5}=\hasil{43365}{5}$
maka hasilnya akan tampak seperti pada Contoh 6 dalam dokumen terlampir di bawah ini. Dengan demikian Contoh 7 dan 8 kita tulis dengan

$\ds\frac{508811}{79}=\hasil{508811}{79}$\\
$\ds\frac {123456789012345678901234567890}{9876543210}
=\hasil{123456789012345678901234567890}{9876543210}$
Dapatkah Anda sebutkan, bilangan berapa pada contoh terakhir itu?


Penutup

Demikianlah dokumen berikut ini saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX. Semoga bermanfaat.


$\square$ Adjie Gumarang Pujakelana 2015




Saturday, December 19, 2015

Pembagi Terbesar Bersisa Sama

Hari ini saya belajar dari Pak Anang yang mengajukan soal sebagai berikut.
"Berapakah bilangan $\small{A}$ terbesar sehingga jika $\small480608$, $\small508811$, dan $\small723217$ dibagi oleh $\small{A}$ akan memberikan sisa yang sama."
Jawaban atas soal tersebut sudah saya tulis dalam dokumen berikut ini. 



Lalu, apa hal penting dalam penyusunan dokumen tersebut?
Silakan Anda perhatikan kolom kanan pada jawaban dalam dokumen tersebut. Penentuan nilai $\small{b-a}$ dan $\small{c-b}$ itu tidak saya tuliskan secara manual melainkan dilakukan oleh paket xlop dengan perintah
$b-a=$ \opsub[style=text]{508811}{480608}\\
$c-b=$ \opsub[style=text]{723217}{508811}
untuk menunjukkan pengurangan dari kedua bilangan itu dengan arah ke samping kanan.
Kemudian perhatikan di bawahnya. Menentukan faktor persekutuan terbesar (great common divisordari kedua bilangan itu juga dilakukan oleh paket xlop dengan perintah (makro)
\opcopy{28203}{a}%
\opcopy{214406}{b}%
\opgcd{a}{b}{FPB}%
$\gcd(\opprint{a},\opprint{b})=\opprint{FPB}$
Tampak bahwa nilai beda yang telah diperoleh sebelumnya dari hasil perintah \opsub, yaitu $\small28203$ dan $\small214406$ berturut-turut saya tetapkan sebagai $\small{a}$ dan $\small{b}$. Lalu nilai faktor persekutuan terbesarnya saya tetapkan sebagai $\small{FPB}$. Setelah itu barulah memberi perintah \gcd untuk memperoleh hasilnya.

Yang terakhir, perhatikan kolom kanan pada bagian terbawah. Pemfaktoran bilangan atas faktor-faktor prima tersebut dihasilkan oleh makro dari Nickie, seorang pakar di forum, berikut ini. Makro ini saya simpan sebagai faktorprima.tex yang kemudian disertakan pada preamble dalam penyusunan dokumen di atas.
\makeatletter

\newcount\factorize@n  % the number to be factorized
\newcount\factorize@t  % temporary
\newcount\factorize@p  % a candidate factor
\newcount\factorize@c  % counter of factors (total)
\newcount\factorize@w  % counter of factors (power of given candidate)

% machinery for factorization
%
\def\factorize#1{%
  \factorize@begin{#1}%
  \factorize@n=#1
  \factorize@c=0
  \factorize@p=2
  \factorize@try%
  \factorize@p=3
  \factorize@try%
  \factorize@p=5
  \factorize@loop%
  \ifnum\factorize@c>0
    \ifnum\factorize@n>1
      \factorize@process{\the\factorize@n}{1}%
    \fi%
  \else%
    \factorize@process{\the\factorize@n}{1}%
  \fi%
  \factorize@end{#1}%
}
\def\factorize@loop{%
  \factorize@t=\factorize@p
  \multiply\factorize@t by \factorize@p
  \ifnum\factorize@t>\factorize@n\else%
    \factorize@try%
    \advance\factorize@p by 2
    \factorize@t=\factorize@p
    \multiply\factorize@t by \factorize@p
    \ifnum\factorize@t>\factorize@n\else%
      \factorize@try%
      \advance\factorize@p by 4
      \factorize@loop%
    \fi%
  \fi%
}
\def\factorize@try{%
  \factorize@w=0
  \factorize@try@aux%
  \ifnum\factorize@w>0
    \factorize@process{\the\factorize@p}{\the\factorize@w}%
    \advance\factorize@c by \factorize@w
  \fi%
}
\def\factorize@try@aux{%
  \factorize@t=\factorize@n
  \divide\factorize@t by \factorize@p
  \multiply\factorize@t by \factorize@p
  \ifnum\factorize@n=\factorize@t
    \divide\factorize@n by \factorize@p
    \advance\factorize@w by 1
    \factorize@try@aux%
  \fi%
}

% Stubs to be called at start, end, and when a factor is found
%
\def\factorize@begin#1{%
  \noindent%
  $#1 =%$
}
\def\factorize@end#1{%
  $%$
  \par%
}
\def\factorize@process#1#2{%
  \ifnum\factorize@c>0
    \times%
  \fi%
  \ifnum#2>1
    #1^{#2}%
  \else%
    #1%
  \fi%
}

\makeatother
Kemudian saya gunakan untuk
\factorize{28203}

\factorize{214406}

Demikianlah, berikut ini pengkodean selengkapnya untuk soal dan jawaban pada di atas. Dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeXSemoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2015
\documentclass[10pt,a4paper]{article}
\usepackage[hmargin=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage[dvipsnames,svgnames,table]{xcolor}
\definecolor{bistreb}{RGB}{150, 113, 23}
\definecolor{blau}{RGB}{17,94,140}
\renewcommand{\rmdefault}{put}
\usepackage[indonesian]{babel}
\usepackage{amsmath,amssymb,bm} 
\usepackage{xlop}
\input{faktorprima.tex}
\usepackage{multicol}
\setlength\columnseprule{.4pt}
\renewcommand{\columnseprulecolor}{\color{bistreb}}

\parindent0em

\begin{document}

{\color{blau}\bfseries Soal.}

\smallskip
Berapakah bilangan $A$ terbesar sehingga jika $480608$, $508811$, dan $723217$ dibagi oleh $A$ akan memberikan sisa yang sama?

\medskip
{\color{blau}\bfseries Jawaban:}
\begin{multicols}{2}
Misalkan ketiga bilangan itu $a_1$, $a_2$, dan $a_3$ dengan $a_1


Friday, December 18, 2015

Metode Hörner

Metode Hörner dipelajari di sekolah-sekolah sebagai salah satu cara dalam melakukan pembagian terhadap suatu sukubanyak oleh suatu fungsi. Mengutip dari Wikipedia,
Metode Hörner berkaitan dengan salah satu dari dua hal:
  • algoritma untuk perhitungan terhadap sukubanyak, yang berupa pengubahan bentuk (transformasi) dari deretan suku-suku (monomial) ke bentuk perhitungan (dengan menggunakan bagan/skema) yang lebih efisien; atau 
  • metode untuk menemukan pendekatan terhadap akar-akar dari sukubanyak, yang dikenal sebagai metode Ruffini-Horner.
Metode ini mengatasnamai matematikawan Inggris, William George Hörner, meskipun hal itu sudah dikenal sebelumnya oleh Paolo Ruffini dan, enam ratus tahun sebelumnya, oleh matematikawan China, Qin Jiushao

Sukubanyak (Polinomial)

Pada tulisan ini saya akan mengulas tentang perhitungan di dalam Metode Hörner pada dokumen $\small\LaTeX$ di mana, dengan mencantumkan koefisien-koefisien dari suatu sukubanyak dan pembaginya, kita dapat langsung memperoleh hasil pembagian dan sisanya. Namun, sebelum itu dan seperti telah kita ketahui, karena metode ini berkaitan dengan sukubanyak maka (sebagai acuan) lebih dulu saya tunjukkan dokumen yang memuat konsep sukubanyak berikut ini.



Dokumen di atas saya susun dalam TeX Live 2015 dengan kelas dokumen (presentasi) Beamer dan bertema Feather dari Lilyana.


Perhitungan dalam Metode Hörner 

Perhatikan gambar di samping ini. Barangkali Anda sudah terbiasa melakukan pembagian sukubanyak dengan cara Hörner semacam itu. Kali ini (dalam dokumen $\small\LaTeX$) kita dapat melakukannya tanpa perhitungan secara manual atau coba-coba (try and error). Ini berkat sumbangsih makro dari Egreg, seorang pakar di forum.
Untuk memudahkan, karena makro tersebut cukup panjang, lebih dulu saya menyimpannya sebagai file horner.tex. Kemudian, dalam struktur dokumen, saya sertakan sebagai input dan menjalankannya dengan paket xparse.

\ExplSyntaxOn
\NewDocumentCommand{\horner}{smm}
 {
  \IfBooleanTF{#1}
   { \bool_set_false:N \l_silke_show_bool }
   { \bool_set_true:N \l_silke_show_bool }
  \silke_horner:nn { #2 } { #3 }
 }

\bool_new:N \l_silke_show_bool
\seq_new:N \l_silke_top_seq
\seq_new:N \l_silke_middle_seq
\seq_new:N \l_silke_bottom_seq
\seq_new:N \l_silke_temp_seq
\int_new:N \l_silke_degree_int
\tl_new:N \l_silke_remainder_tl

\cs_new_protected:Npn \silke_horner:nn #1 #2
 {
  \seq_set_split:Nnn \l_silke_top_seq { , } { #1 }
  \int_set:Nn \l_silke_degree_int { \seq_count:N \l_silke_top_seq }
  \seq_clear:N \l_silke_middle_seq
  \seq_clear:N \l_silke_bottom_seq
  \seq_put_right:Nn \l_silke_middle_seq { \downarrow }
  \seq_put_right:Nx \l_silke_bottom_seq
   {
    \int_to_arabic:n { \seq_item:Nn \l_silke_top_seq { 1 } }
   }
  \int_step_inline:nnnn { 2 } { 1 } { \l_silke_degree_int }
   {
    \seq_put_right:Nx \l_silke_middle_seq
     {
      \int_to_arabic:n { \seq_item:Nn \l_silke_bottom_seq { ##1 - 1 } * #2 }
     }
    \seq_put_right:Nx \l_silke_bottom_seq
     {
      \int_to_arabic:n
       {
        \seq_item:Nn \l_silke_top_seq { ##1 }
        +
        \seq_item:Nn \l_silke_middle_seq { ##1 }
       }
     }
   }
  \silke_print_scheme:n { #2 }
 }

\cs_new_protected:Npn \silke_print_scheme:n #1
 {
  \bool_if:NF \l_silke_show_bool
   {
    \silke_phantom:N \l_silke_middle_seq
    \silke_phantom:N \l_silke_bottom_seq
   }
  \seq_pop_right:NN \l_silke_bottom_seq \l_silke_remainder_tl
  \begin{array}{r | *{\l_silke_degree_int}{r} }
     & \seq_use:Nn \l_silke_top_seq { & } \\
  #1 & \seq_use:Nn \l_silke_middle_seq { & } \\
  \hline
     & \seq_use:Nn \l_silke_bottom_seq { & } & 
       \multicolumn{1}{@{\vline width 1pt}r}{\l_silke_remainder_tl}
  \end{array}
 }

\cs_new_protected:Npn \silke_phantom:N #1
 {
  \seq_clear:N \silke_temp_seq
  \seq_map_inline:Nn #1 { \seq_put_right:Nn \silke_temp_seq { \phantom{##1} } }
  \seq_set_eq:NN #1 \silke_temp_seq
 }

\ExplSyntaxOff
Sebagai contoh, silakan Anda buka dokumen di atas pada frame 9. Untuk memperoleh hasil bagi dan sisa dari pembagian sukubanyak $\small{x^3+2x^2+3x-5}$ oleh $\small{x-2}$, cukup kita nyatakan
$\horner{1,2,3,-5}{2}$
Kemudian pada frame 10 kita lakukan pembagian $\small{f(x)=x^4-6x^3-6x^2+8x+6}$ oleh $\small{x-2}$, maka kita tulis
$\horner{1,-6,-6,8,6}{2}$
Masih pada frame 10 kita lakukan pembagian $\small{4x^4+3x^2-6x+1}$ oleh $\small{2x-1}$, maka kita tulis
$\horner{4,0,3,-6,1}{1/2}$
Namun demikian, untuk diingat, makro tersebut berfungsi hanya jika pembagi dari sukubanyak itu berupa fungsi linear.


Pengkodean dan Hasilnya

Berikut ini pengkodean selengkapnya untuk menentukan hasil bagi dan sisa dalam Metode Hörner dengan menggunakan makro tersebut, kemudian hasilnya dapat Anda lihat pada gambar di atas.
\documentclass{article}
\usepackage{xparse}

\input{horner.tex}

\begin{document}

$\horner{1,2,3,-5}{2}$

\bigskip

$\horner{1,-6,-6,8,6}{2}$

\bigskip

$\horner{4,0,3,-6,1}{1/2}$

\end{document}


Penutup


Demikianlah, dokumen terakhir ini saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX
Semoga bermanfaat.

Adjie Gumarang Pujakelana 2015


Wednesday, December 16, 2015

Menyelesaikan Pertidaksamaan Bentuk Akar dengan Menggunakan Garis Bilangan

Mari kita ulas jawaban dari soal berikut ini.
Tentukan penyelesaian dari $\displaystyle\sqrt{3x-5}<\sqrt{2x+7}$.
Tentu kita akan selesaikan seperti ini
\begin{align*}
\sqrt{3x-5} &< \sqrt{2x+7}\\
3x-5 &< 2x+7\\
3x-2x &< 7+5\\
x &< 12\qquad\cdots\cdots\cdots\quad (1)
\end{align*}

Namun ada dua syarat lainnya yang harus dipenuhi, yaitu:
\begin{align*}
3x-5 &\ge 0\\
3x &\ge 5\\
x &\ge \frac{5}{3}\qquad\cdots\cdots\cdots\quad (2)
\end{align*}

dan
\begin{align*}
2x+7 &\ge 0\\
2x &\ge -7\\
x &\ge -\frac{7}{2}\qquad\cdots\cdots\cdots\quad (3)
\end{align*}
Nah, ketiga batasan tersebut akan menetapkan penyelesaian dari pertidaksamaan pada soal di atas, yaitu semua nilai $\small{x}$ yang memenuhi ketiga batasan itu. Hal inilah yang ditindaklanjuti dengan menggunakan garis bilangan, agar diperoleh penyelesaian yang tepat secara jelas dan mudah. Lalu, bagaimana kita menggambarkannya dengan menggunakan $\small\LaTeX$, seperti tampak pada gambar di atas?

Kita akan menggambarnya dengan menggunakan paket tikz, dalam environment gambar tikz.
\begin{tikzpicture}[scale=.5]
...
\end{tikzpicture}
Kita sengaja perkecil skalanya (dalam 50%) agar gambarnya tidak terlalu melebar.

Menggambar Ruas Garis

Sesuai dengan cakupan yang memadai, kita buat ruas garis dalam rentang $\small{-5\le{x}\le14}$, dengan memuat mata panah pada kedua ujungnya.
\draw[thick,stealth-stealth] (-5,0)--(14,0);
Agar jarak antarbatasan (berupa ruas garis berarah) relatif tampak baik, maka kita atur agar berjarak $\small1\textrm{cm}$.
Sekarang kita tunjukkan batasan (1) yang beranjak dari koordinat $\small(12,0)$ lalu ke $\small(12,1)$, kemudian lurus ke kiri (tak hingga) yang ditunjukkan oleh mata panah pada koordinat $\small(-5,1)$.
\draw[thick,-stealth,Indigo] (12,0)--(12,1)--(-5,1);
Warna Indigo (dan juga warna lainnya) digoreskan oleh paket xcolor dalam opsi svgnames.

Berikutnya kita buat ruas garis untuk batasan (2) yang beranjak dari koordinat $\small\left(\frac{5}{3},0\right)$ lalu ke $\small\left(\frac{5}{3},2\right)$, kemudian lurus ke kanan (tak hingga) yang ditunjukkan oleh mata panah pada koordinat $\small(14,2)$.
Bagaimana koordinat $\small\left(\frac{5}{3},0\right)$ dapat ditetapkan dengan tepat? Paket tikz memiliki library yang bertugas untuk melakukannya, yaitu calc. Kita tidak menggunakan kalkulator untuk menetapkan nilai $\small\frac{5}{3}$.
\draw[thick,-stealth,OrangeRed] ({5/3},0)--({5/3},2)--(14,2);
Batasan (3) kita buat dari koordinat $\small\left(-\frac{7}{2},0\right)$ ke $\small\left(-\frac{7}{2},3\right)$, kemudian lurus ke kanan (tak hingga) yang ditunjukkan oleh mata panah pada koordinat $\small(14,3)$.
\draw[thick,-stealth,RoyalBlue] ({-7/2},0)--({-7/2},3)--(14,3);

Mengarsir "Daerah" Penyelesaian

Nah, penyelesaian dari pertidaksamaan pada soal di atas, tentu saja, adalah semua nilai $\small{x}$ pada garis bilangan yang "terlintasi" oleh bagian dari ketiga ruas garis berarah tersebut. Dalam hal ini penyelesaiannya terletak pada selang $\small\frac{5}{3}\le{x} < 12$. Untuk menandainya kita arsir daerah persegi panjang yang mencakup bagian dari ketiga ruas garis berarah dalam selang tersebut dan untuk hal ini kita memerlukan library patterns dari tikz.
\path[pattern=north west lines,opacity=.8,pattern color=LightSlateGray] ({5/3},0)--({5/3},3)--(12,3)--(12,0)--cycle;


Menandai "Noktah" Absis

Sekarang kita tandai absis-absis yang menjadi pembatas pada penyelesaian terhadap soal di atas. Penanda ini berupa bulatan (circle) yang kita isi warna hitam atau putih secara bersesuaian dengan penyelesaiannya. Untuk hal ini kita gunakan perintah filldraw.
\filldraw[black,fill=white] (12,0) node[below,yshift=-.05cm] {$12$} circle (0.5em) ;

\filldraw[black] ({5/3},0) node[below,yshift=-.05cm] {$\frac{5}{3}$} circle (0.5em) ;

\filldraw[black] ({-7/2},0) node[below,yshift=-.05cm] {$-\frac{7}{2}$} circle (0.5em);
Perhatikan bahwa kita sekaligus menempatkan nilai-nilainya (oleh perintah node), masing-masing di bawah bulatan tersebut dengan menyusutkannya ke arah bawah sejauh $\small0,05\textrm{cm}$.


Menamai Pembatas

Terakhir kita tunjukkan nama-nama pembatas (1), (2), dan (3) pada langkah-langkah penyelesaian dari pertidaksamaan pada soal di atas. Kita letakkan nama-nama ini masing-masing pada koordinat mata panahnya, di kiri atau kanannya.
\node[right] at (14,3) {(3)} node[right] at (14,2) {(2)} node[left] at (-5,1) {(1)};


Pengkodean dan Hasilnya

Berikut ini pengkodean selengkapnya untuk menggambar penyelesaian dari pertidaksamaan pada soal di atas dengan menggunakan garis bilangan, kemudian hasilnya dapat Anda lihat dalam dokumen terlampir di bawahnya.
\documentclass{article}
\usepackage{geometry}
\usepackage[dvipsnames,svgnames]{xcolor}
\usepackage{amsmath}
\usepackage{utopia,mathpazo}
\usepackage{tikz}
\usetikzlibrary{calc,patterns}

\pagestyle{empty}

\begin{document}

\begin{tikzpicture}[scale=.5]

\draw[thick,stealth-stealth] (-5,0)--(14,0);

\draw[thick,-stealth,Indigo] (12,0)--(12,1)--(-5,1);

\draw[thick,-stealth,OrangeRed] ({5/3},0)--({5/3},2)--(14,2);

\draw[thick,-stealth,RoyalBlue] ({-7/2},0)--({-7/2},3)--(14,3);

\path[pattern=north west lines,opacity=.8,pattern color=LightSlateGray] ({5/3},0)--({5/3},3)--(12,3)--(12,0)--cycle;

\filldraw[black,fill=white] (12,0) node[below,yshift=-.05cm] {$12$} circle (0.5em) ;

\filldraw[black] ({5/3},0) node[below,yshift=-.05cm] {$\frac{5}{3}$} circle (0.5em) ;

\filldraw[black] ({-7/2},0) node[below,yshift=-.05cm] {$-\frac{7}{2}$} circle (0.5em);

\node[right] at (14,3) {(3)} node[right] at (14,2) {(2)} node[left] at (-5,1) {(1)};
\end{tikzpicture}
\end{document}



Penutup

Demikianlah, dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX
Semoga bermanfaat.

Adjie Gumarang Pujakelana 2015


Tuesday, December 15, 2015

Menggambar Grafik Fungsi Trigonometri

Pada tulisan ini kita akan menggambar grafik fungsi trigonometri dengan daerah asal (absis) berupa sudut dalam radian yang dinyatakan dalam $\small\pi$, seperti tampak pada gambar di samping ini, dengan menggunakan paket pgfplots.

Preamble

Tentu saja kita muat
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
Tetapi untuk keperluan lainnya (ukuran dan letak) kita memerlukan library tikz
\usetikzlibrary{calc,positioning,intersections}
Hal utama dalam contoh grafik ini adalah menetapkan ukuran (jarak) absis yang dinyatakan dalam $\small\pi$. Agar ukuran ini menyatakan ukuran sebenarnya, kita memerlukan makro berikut ini.
\makeatletter
\newcommand*{\ArrayToCommaList}[1]{%
  \let\ArrayToCommaList@Result\@empty
  \expandafter\@tfor\expandafter\ArrayToCommaList@Entry
  \expandafter:\expandafter=#1\do{%
    \edef\ArrayToCommaList@Result{%
      \ArrayToCommaList@Result,\ArrayToCommaList@Entry
    }%
  }%
  % Remove first comma
  \edef#1{%
    \expandafter\@cdr\ArrayToCommaList@Result\@empty\@nil
  }%
}
\makeatother
Dengan makro tersebut kita akan mendaftar nilai-nilai absis pada sumbu $\small{X}$ dan mengurutkannya pada jarak yang tepat berdasarkan nilai $\small\pi$.

Opsi-opsi Grafik

Di dalam environment gambar tikz, sebelum environment axis, kita tetapkan dulu nilai-nilai absis yang akan kita tunjukkan, dengan menggunakan makro tadi, misalnya
\pgfmathsetmacro\xticklist{(1/4)*pi, (1/2)*pi, (3/4)*pi, pi, (5/4)*pi, (3/2)*pi, (7/4)*pi, 2*pi}
\ArrayToCommaList\xticklist
Agar bagian kurva kita termuat seluruhnya pada bidang gambar maka kita nyatakan
clip=false,
Kedua sumbu kita letakkan di tengah dan saya pilih warna bistre untuk kedua sumbu tersebut.
axis lines=middle,
axis line style={-stealth,bistre},
Warna bistre itu kita tetapkan dengan paket xcolor sebagai
\definecolor{bistre}{RGB}{61, 43, 31}
Kemudian kita namai dan kita letakkan nama kedua sumbu itu sebagai
xlabel=$x$,ylabel=$y$,
xlabel style=right,ylabel style=above,
Sesuai dengan cakupannya, kita batasi daerah asal dan daerah kawan, misalnya
xmin=-.25,xmax=2*pi+.25,
ymin=-2.5,ymax=2.5,
Noktah untuk absis yang kita tunjukkan merujuk pada daftar dalam perintah \xticklist semula, sedangkan ordinatnya cukup kita tunjukkan bilangan $\small-2$, $\small-1$, $\small1$, dan $\small2$.
xtick=\xticklist,ytick={-2,-1,1,2},
Khusus untuk nilai-nilai absisnya kita namai sesuai dengan daftar tersebut, yaitu
xticklabels={$\frac{\pi}{4}$,$\frac{\pi}{2}$,$\frac{3\pi}{4}$,$\pi$,$\frac{5\pi}{4}$,$\frac{3\pi}{2}$,$\frac{7\pi}{4}$,$2\pi$},
Agar tak terlalu besar, ukuran huruf untuk bilangan-bilangan absis dan ordinat itu kita perkecil, misalnya dengan
xticklabel style={font=\small,bistre},
yticklabel style={font=\small,bistre}
Bila dianggap masih terlalu besar juga, maka ukuran huruf itu dapat kita ganti dengan \scriptsize atau \footnotesize.

Grafik Fungsi

Setelah opsi-opsi tersebut kita muat, barulah sekarang kita bersiap untuk menyatakan kurva yang ingin kita buat. Dalam menggambar grafik fungsi trigonometri, sudut kita nyatakan di dalam tanda kurung setelah fungsinya dan sudut itu dinyatakan dalam derajat (degree) sebagai
cos(deg(sudut))
Dengan demikian untuk menyatakan kurva dari fungsi $\small{y=\cos{3x}+\cos{x}}$, kita nyatakan (dalam tanda kurung siku) sebagai
{cos(deg(3*x))+cos(deg(x))}
Kurva pada gambar di atas dinyatakan oleh
\addplot [samples=500,thick,stempel,domain=0:2*pi] {cos(deg(3*x))+cos(deg(x))} node[above left] {$y=\cos 3x + \cos x$};
Perhatikan opsi yang menyertainya. Kurva yang kita buat mencakup daerah asal $\small0\le{x}\le2\pi$, diwarnai oleh warna stempel, ketebalan garisnya seukuran thick, dan kerapatan plot setingkat $\small500$. Kemudian sekaligus juga kita namai kurva ini oleh perintah node dengan persamaan fungsinya yang diletakkan (pada ujung kanan kurva) di atas-kirinya.
Warna stempel ditetapkan sebagai
\definecolor{stempel}{RGB}{0 34 85}

Pengkodean dan Hasilnya

Nah, berikut ini pengkodean selengkapnya untuk menggambar grafik fungsi trigonometri seperti tampak pada gambar di atas, kemudian hasilnya dapat Anda lihat pada Gambar 1 dalam dokumen terlampir di bawahnya. Kemudian silakan Anda coba gunakan cara-cara yang telah diuraikan di atas untuk menghasilkan kurva seperti tampak pada Gambar 2 dan Gambar 3 dalam dokumen terlampir.
\documentclass[10pt]{article}
\usepackage[margin=2cm,a4paper]{geometry}
\usepackage{mathtools}
\usepackage[dvipsnames,svgnames]{xcolor}
\definecolor{bistre}{RGB}{61, 43, 31}
\definecolor{stempel}{RGB}{0 34 85}
%-------------------------------------------------

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{calc,positioning,intersections}

%-----------------absis dalam pi
\makeatletter
\newcommand*{\ArrayToCommaList}[1]{%
  \let\ArrayToCommaList@Result\@empty
  \expandafter\@tfor\expandafter\ArrayToCommaList@Entry
  \expandafter:\expandafter=#1\do{%
    \edef\ArrayToCommaList@Result{%
      \ArrayToCommaList@Result,\ArrayToCommaList@Entry
    }%
  }%
  % Remove first comma
  \edef#1{%
    \expandafter\@cdr\ArrayToCommaList@Result\@empty\@nil
  }%
}
\makeatother
%---------------------------------------
\pagestyle{empty}

\begin{document}

\begin{figure}[!ht] 
\centering
\begin{tikzpicture}
\pgfmathsetmacro\xticklist{(1/4)*pi, (1/2)*pi, (3/4)*pi, pi, (5/4)*pi, (3/2)*pi, (7/4)*pi, 2*pi}
\ArrayToCommaList\xticklist
\begin{axis}[
    clip=false,axis lines=middle,
    axis line style={-stealth,bistre},
    xlabel=$x$,ylabel=$y$,
    xlabel style=right,ylabel style=above,
    xmin=-.25,xmax=2*pi+.25,
    ymin=-2.5,ymax=2.5,
    xtick=\xticklist,ytick={-2,-1,1,2},
    xticklabels={$\frac{\pi}{4}$,$\frac{\pi}{2}$,$\frac{3\pi}{4}$,$\pi$,$\frac{5\pi}{4}$,$\frac{3\pi}{2}$,$\frac{7\pi}{4}$,$2\pi$},
    xticklabel style={font=\small,bistre},
    yticklabel style={font=\small,bistre}
]
\addplot [samples=500,thick,stempel,domain=0:2*pi] {cos(deg(3*x))+cos(deg(x))} node[above left] {$y=\cos 3x + \cos x$};
\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}



Penutup

Demikianlah, dokumen tersebut saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX
Semoga bermanfaat.

Adjie Gumarang Pujakelana 2015


Related Posts Plugin for WordPress, Blogger...