Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
OLEH :
KElOMPOK I
Adventa Sinta Marito (8186176009)
Mawar Ketaren (8186176006)
Setrie Frimayri (8186176005)
Tika Nurjannah (8186176008)
REVIEW BUKU
[Part I: Vectors, Function, and Plots in MATLAB]
A. IDENTITAS BUKU
Judul Buku : Introduction to Numerical Methods and Matlab Programming for Engineers
Penulis : Todd Young and Martin J. Mohlenkamp
Penerbit : Department of Mathematics Ohio University
Edisi :
Jumlah Hal. : 182
Tahun Terbit : 2004
ISBN :
Kuliah 1
Dalam catatan ini akan menunjukkan perintah yang akan dimasukkan pada prompt Matlab >>
di jendela perintah. Jangan mengetikkan simbol | pada saat akan memulai program .
Pemformatan Dasar
Untuk membuat Matlab memasukkan lebih sedikit garis kosong dalam outputnya, masukkan
format compact
Untuk membuat Matlab menampilkan lebih banyak digit, masukkan format long.
Perhatikan bahwa ini tidak mengubah jumlah digit yang digunakan Matlab dalam
perhitungannya; itu hanya berubah apa yang ditampilkan
Merencanakan Data
Berdasarkan data di Tabel 1.1.1. Kita bisa memasukkan data ini ke Matlab dengan
memasukkan perintah berikut:
T (C) 5 20 30 50 55
Μ 0,08 0,015 0,009 0,006 0,0055
di jendela perintah:
x = [5 20 30 50 55]
Kita dapat memplot data dalam bentuk vektor menggunakan perintah plot:
plot (x, y)
Ini akan menghasilkan grafik dengan titik data yang terhubung oleh garis. Jika Anda lebih
suka titik data diwakili oleh simbol yang dapat Anda lakukan. Contohnya
Fungsi Bawaan
Jika kami ingin menangani rumus untuk fungsi, Matlab berisi sejumlah fungsi bawaan,
termasuk semua fungsi yang biasa, seperti sin (), exp (), dll. Arti dari sebagian besar ini jelas.
Ketergantungan variabel (input) selalu berjalan dalam tanda kurung di Matlab.
sin (pi)
exp (0)
akan mengembalikan e0 yang merupakan 1. Lebih penting lagi, fungsi bawaan dapat
beroperasi tidak hanya pada angka tunggal tetapi pada vektor. Sebagai contoh
y = sin (x)
plot (x, y)
akan mengembalikan sin x pada interval [0; 2 π]
Beberapa fungsi bawaan di Matlab meliputi: cos (), tan (), sinh (), cosh (), log () (natural
logaritma), log10 () (log basis 10), asin () (sinus terbalik), acos (), atan (). Untuk mengetahui
lebih lanjut tentang a berfungsi, gunakan perintah bantuan; mencoba bantu plot
Help plot
f = @ (x) 2 * x. ^ 2 - 3 * x + 1
Ini menghasilkan fungsi f (x) = 2x2 � 3x + 1. Untuk mendapatkan nilai tunggal dari fungsi
ini, masukkan
y = f (2.23572)
Sama seperti fungsi bawaan, fungsi f seperti yang kita definisikan dapat beroperasi tidak
hanya pada angka tunggal tetapi juga pada vektor. Coba yang berikut ini:
x = -2: .2: 2
y = f (x)
Ini adalah contoh vektorisasi, mis. Memasukkan beberapa angka ke dalam vektor dan
memperlakukan semua vektor sekaligus sekali, bukan satu komponen p ada satu waktu, dan
merupakan salah satu kekuatan Matlab. Alasan f (x) berfungsi ketika x adalah vektor adalah
karena kami mewakili x2 oleh x. ^ 2. . mengubah operator eksponen menjadi bijaksana
2
eksponensial, sehingga [-2 -1,8 -1,6]. berarti [(-2) 2; (-1. 8) 2; (-1. 6) 2] dan hasil [4 3,24
2,56].
Sebaliknya, [-2 -1.8 -1.6] ^ 2 berarti produk matriks [-2, -1,8, -1, 6] [-2 -1,8 -1, 6] dan
hanya menghasilkan kesalahan. . diperlukan dalam. ^,. *, dan ./. Tidak diperlukan saat Anda *
atau / menggunakan skalar atau untuk +.
Hasilnya dapat diplot menggunakan perintah plot, seperti halnya untuk data:
plot (x, y) Perhatikan bahwa sebelum memplot fungsi, kita akan mengubahnya menjadi data.
Merencanakan pada mesin apa pun selalu membutuhkan langkah ini.
Latihan
1.1. Temukan tabel data dalam buku teks atau situs web teknik atau sains. Masukkan
sebagai vektor dan plot. Gunakan ikon sisipkan untuk memberi label sumbu dan
menambahkan judul ke grafik Anda. Balikkan grafik. Tunjukkan apa data dan referensi
dari mana asalnya.
1.2. Temukan formula fungsi dalam buku teks atau situs web teknik atau sains. Buat
fungsi anonym yang menghasilkan fungsi itu. Plot di domain yang relevan secara fisik.
Labeli sumbu dan tambahkan judul ke grafik Anda. Balikkan grafik dan tulis pada
halaman perintah Matlab untuk anonym fungsi. Tunjukkan apa arti fungsi dan referensi
dari mana asalnya
Kuliah 2
Program Matlab
Dalam Matlab, program dapat ditulis dan disimpan dalam file dengan suffix .m yang disebut
M- les program. Ada dua tipe program M- le: fungsi dan skrip.
Program Fungsi
Mulailah dengan mengklik ikon dokumen baru di kiri atas jendela Matlab (sepertinya
kosong selembar kertas).
Di jendela dokumen ketikkan yang berikut ini:
Simpan file ini sebagai: myfunc.m di direktori kerja Anda. File ini sekarang dapat
digunakan di jendela perintah sama seperti fungsi Matlab sebelumnya; di jendela perintah
masukkan:
Perhatikan bahwa fakta yang kami gunakan x dan y di kedua program fungsi dan di jendela perintah
hanya a kebetulan. Sebenarnya, itu adalah nama le myfunc.m yang sebenarnya penting, bukan apa
pun yang ada di dalamnya bernama. Kita bisa saja membuat fungsinya
Fungsi dapat memiliki banyak output, yang dikumpulkan ke dalam vektor. Buka dokumen baru dan
ketik:
Simpan file ini sebagai mypowers.m. Di jendela perintah, kita bisa menggunakan hasil
program untuk membuatnya
grafik:
x = -1: .1: 1
myfunc (3)
ans ^ 2
Meskipun fungsi saya mengembalikan nilai, kami tidak menangkap. Secara default Matlab
menangkapnya sebagai ans jadi kami bisa gunakan dalam perhitungan kita selanjutnya.
Namun, Matlab selalu menggunakan ans (untuk jawaban), jadi hasilnya mungkin ditimpa.
Lalu coba:
z=0
z^2
myfunc mengembalikan nilai yang disebut secara internal y dan kami menangkap hasilnya
dalam z. Kita sekarang dapat menggunakan z untuk perhitungan lainnya.
myfuncnoreturn (4)
ans ^ 2
y^2
Meskipun nilai y dicetak dalam fungsi, itu tidak dikembalikan, jadi nilai y juga tidak
nilai ans telah diubah. Jadi kita tidak bisa menggunakan hasil dari fungsi.
Secara umum, cara terbaik untuk menggunakan suatu fungsi adalah menangkap hasil yang
dikembalikan dan kemudian menggunakan atau mencetak hasil ini.
Mencetak dalam fungsi adalah bentuk yang buruk; Namun, untuk memahami apa yang
terjadi dalam suatu fungsi, itu adalah berguna untuk mencetak, begitu banyak fungsi dalam
buku ini yang dicetak.
Program Script
Matlab menggunakan jenis program kedua yang berbeda dari program fungsi dalam beberapa
cara, yaitu:
Tidak ada input dan output.
Program skrip dapat menggunakan, membuat, dan mengubah variabel di ruang kerja
saat ini (variabel yang digunakan oleh jendela perintah).
Di bawah ini adalah program skrip yang menyelesaikan hal yang sama dengan program
fungsi plus perintah di
bagian sebelumnya:
x2 = x. ^ 2;
x3 = x. ^ 3;
x4 = x. ^ 4;
plot (x, x, 'hitam', x, x2, 'biru', x, x3, 'hijau', x, x4, 'merah')
Ketik program ini ke dalam dokumen baru dan simpan sebagai mygraphs.m. Di jendela
perintah, masukkan:
x = -1: .1: 1;
mygraphs
Banyak orang menggunakan program skrip untuk perhitungan rutin yang membutuhkan
pengetikan lebih dari satu perintah di jendela perintah. Mereka melakukan ini karena
memperbaiki kesalahan lebih mudah dalam program daripada di jendela perintah.
Komentar Program
Untuk program yang memiliki lebih dari beberapa baris, penting untuk memasukkan
komentar. Komentar memungkinkan orang lain tahu apa program Anda dan mereka juga
mengingatkan diri sendiri apa program Anda jika Anda sisihkan dan kembalikan lagi nanti.
Yang terbaik adalah memasukkan komentar tidak hanya di bagian atas program, tetapi juga
dengan setiap bagian. Dalam Matlab, segala sesuatu yang muncul dalam barisan setelah%
adalah komentar.
Untuk program fungsi, komentar setidaknya harus memberikan tujuan, input, dan output. A
dengan benar versi komentar dari fungsi yang kami gunakan pada bagian ini adalah:
Untuk program skrip, sering kali membantu memasukkan nama program di awal. Sebagai contoh:
% mygraphs
% memplot grafik x, x ^ 2, x ^ 3, dan x ^ 4
% pada interval [-1, 1]
% perbaiki domain dan poin evaluasi
x = -1: .1: 1;
% menghitung kekuatan
% x1 hanya x
x2 = x. ^ 2;
x3 = x. ^ 3;
x4 = x. ^ 4;
% plot masing-masing grafik
plot (x, x, '+ -', x, x2, 'x -', x, x3, 'o -', x, x4, '-')
Perintah Matlab membantu mencetak blok komentar pertama dari file. Jika kita menyimpan
di atas sebagai mygraphs.m dan kemudian lakukan bantu mygraphs
itu akan mencetak ke jendela perintah:
mygraphs
Latihan
2.1 Tulis program fungsi yang dikomentari dengan baik untuk fungsi x2e- x2 ,menggunakan
operasi yang bijak (misalnya sebagai. * dan. ^). Untuk mendapatkan e x gunakan exp (x).
Plot fungsi pada [-5; 5] menggunakan poin yang cukup untuk membuat grafik halus.
Aktifkan cetakan program dan grafik.
2.2 Tulis program skrip yang dikomentari dengan baik yang menggambarkan fungsi sin x,
sin 2x, sin 3x, sin 4x, sin 5x dan sin 6x pada interval [0, 2π] Pada satu plot. (π Apakah pi
dalam Matlab.) Gunakan ukuran langkah yang cukup kecil untuk membuat semua grafik
menjadi halus. Hidupkan program dan grafik.
Kuliah 3
Metode Newton dan Loops
f (x) = 0 (3.1)
Seperti yang Anda pelajari dalam kalkulus, langkah terakhir dalam banyak masalah
optimisasi adalah menyelesaikan persamaan bentuk ini di mana f adalah turunan dari suatu
fungsi, F, yang ingin Anda maksimalkan atau minimalkan. Dalam masalah teknik nyata
fungsi, f, Anda ingin menemukan akar untuk dapat berasal dari berbagai sumber, termasuk
rumus, solusi persamaan diferensial, percobaan, atau simulasi.
Iterasi Newton
Kami akan menunjukkan solusi aktual dari persamaan (3.1) dengan x *. Ada tiga metode
yang mungkin telah Anda bahas dalam Kalkulus: metode pembagian dua bagian, metode
garis potong dan metode Newton. Ketiganya bergantung pada penutupan awal (dalam
beberapa hal) untuk solusi aktual x*.
Ingat metode Newton. Anda harus tahu bahwa dasar untuk metode Newton adalah
perkiraan suatu fungsi berdasarkan linierasinya pada suatu titik, yaitu.
Karena kami ingin menemukan x sehingga f (x) = 0, atur sisi kiri (f (x)) perkiraan ini
sama dengan 0 dan pecahkan x untuk mendapatkan:
(3.3)
Kami memulai metode dengan tebakan awal x0, yang kami harap cukup dekat dengan x
∗. Kemudian kita menentukan urutan titik {x0, x1, x2, x3, ...} dari rumus:
(3.4)
yang berasal dari (3.3). Jika f (x) berperilaku cukup baik di dekat x ∗ dan x0 cukup dekat
dengan x ∗, maka itu adalah fakta bahwa urutannya akan menyatu dengan x ∗ dan akan
melakukannya dengan sangat cepat.
Untuk melakukan metode Newton, kita perlu mengulang perhitungan dalam (3.4)
beberapa kali. Ini dicapai dalam suatu program menggunakan loop, yang berarti bagian dari
program yang diulang.
Cara paling sederhana untuk mencapai ini adalah dengan menghitung berapa kali
melalui. Di Matlab, pernyataan for ... end membuat perulangan seperti pada program fungsi
sederhana berikut:
Hasilnya akan menjadi jumlah dari 100 bilangan bulat pertama. Semua untuk ... loop
akhir memiliki format yang sama, dimulai dengan untuk, diikuti oleh indeks (i) dan rentang
angka (1: n). Kemudian datang perintah yang harus diulang. Terakhir adalah perintah akhir.
Loop adalah salah satu cara utama yang dilakukan komputer untuk melakukan
perhitungan yang tidak dapat dilakukan manusia. Setiap perhitungan yang melibatkan proses
berulang mudah dilakukan dengan satu lingkaran.
Sekarang mari kita lakukan program yang melakukan langkah (iterasi) metode Newton.
Kita perlu memasukkan fungsi, turunannya, tebakan awal, dan jumlah langkah. Output akan
menjadi nilai akhir x, mis. Xn. Jika kita hanya tertarik pada perkiraan akhir, bukan langkah
menengah, yang biasanya terjadi di dunia nyata, maka kita dapat menggunakan variabel x
tunggal dalam program dan mengubahnya di setiap langkah:
Format long
format compact
f = @ (x) x ^ 3 - 5
f1 = @ (x) 3 * x ^ 2
Kemudian jalankan mynewton pada fungsi ini. Dengan coba-coba, apa nilai terendah
dari n yang dikonversikan program (berhenti berubah). Dengan aljabar sederhana, akar
sebenarnya dari fungsi ini adalah 3√5. Seberapa dekat jawaban program dengan nilai
sebenarnya?
Konvergensi
Metode Newton konvergen dengan cepat ketika f (x ∗) adalah nol dan terbatas, dan x0
cukup dekat dengan x ∗ bahwa pendekatan linier (3,2) valid. Mari kita lihat apa yang salah.
Jika x0 tidak cukup dekat dengan x* bahwa pendekatan linier (3.2) valid, maka iterasi
(3.4) memberikan beberapa x1 yang mungkin atau mungkin tidak lebih baik daripada x0. Jika
kita terus mengulanginya, maka baik
xn pada akhirnya akan mendekati x* dan metode ini kemudian akan menyatu (dengan
cepat), atau
Kuliah 4
Mengontrol Kesalahan dan Pernyataan Bersyarat
Kesalahan pengukuran dan Sisa
Jika kita mencoba mencari solusi numerik dari persamaan f (x) = 0, maka ada
beberapa cara kita dapat mengukur kesalahan perkiraan kita. Kesalahannya adalah
{Error at step n}
biasanya tidak tahu nilai x atau, atau kami tidak akan mencoba memperkirakannya. Ini
memungkinkan untuk menjadi lebih pintar.
Salah satu strategi yang mungkin, yang sering berhasil, adalah menjalankan program
Hanya karena program berhenti berubah tidak berarti bahwa dekat dengan solusi
sebenarnya.
Untuk metode Newton kami memiliki prinsip berikut: Pada setiap langkah jumlah
digit signifikan kira-kira dua kali lipat. Meskipun ini adalah pernyataan penting tentang
kesalahan (karena itu berarti metode Newton menyatu sangat cepat), agak sulit untuk
digunakan dalam suatu program.
Dari pada mengukur seberapa dekat xn dengan , dalam situasi ini dan banyak
lainnya, lebih praktis untuk mengukur, dengan kata lain, seberapa dekat dengan
situasi berikutnya. Sebagian besar waktu kami hanya peduli tentang ukuran rn, jadi kami
menggunakannya untuk menyelesaikan masalah:
Jika kami memiliki toleransi tertentu untuk maka kita dapat memasukkannya
Dalam program ini jika memeriksa apakah abs (y)> tol benar atau tidak. Jika itu benar
maka ia melakukan segalanya antara sana dan akhir. Jika tidak benar, maka lompatan dari
depan ke ujung.
Jendela perintah mendefinisikan fungsi dan turunannya:
f = @ (x) x ^ 3-5
f1 = @ (x) 3 * x ^ 2
Kemudian gunakan program dengan n = 3, toll = .01, dan x0 = 2. Selanjutnya, ubah tol
menjadi 10-10 dan ulangi.
Salah satu cara untuk mengendalikan adalah dengan beralih hingga residual
cukup kecil. Matlab ini mudah diselesaikan dengan while ... end loop.
function x = mynewtontol(f,f1,x0,tol)
% Solves f(x) = 0 using Newton ’s method until |f(x)| < tol.
% Safety stop after 1000 iterations
% Inputs: f -- the function
% f1 -- it’s derivative
% x0 -- starting guess , a number
% tol -- desired tolerance , runs until |f(x)|<tol
% Output: x -- the approximate solution
x = x0; % set x equal to the initial guess
x0. i=0; % set counter to zero
y = f(x);
while abs(y) > tol & i < 1000
% Do until the tolerence is reached or max iter.
x = x - y/f1(x) % Newton ’s formula
y = f(x)
i = i+1; % increment counter
end
end
Tambahkan akhir program ke kesalahan relatif snew versus nilai yang tepat. Jalankan skrip
untuk r = 0,9, 0,99, 0,999, 0,9999, 0,99999, dan 0,999999. Dalam sebuah tabel, nomor
laporan diperlukan dan kesalahan relatif untuk setiap r.
Kuliah 5
The Bisection Method and Locating Roots
Membagi dua dan jika ... lain ... pernyataan akhir
Ingat metode pembagian dua bagian. Misalkan c = f (a) <0 dan d = f (b)> 0. Jika f kontinu,
maka jelas itu harus nol pada beberapa x∗ antara a dan b. Metode pembelahan kemudian
terdiri dari melihat jalan antara a dan b untuk nol f, misalkan x = (a + b)/2 dan mengevaluasi
y = f (x). Kecuali jika ini nol, maka dari tanda c, kita dapat memutuskan interval baru mana
yang akan dibagi. Khususnya, jika Anda memiliki tanda yang sama, maka [x, b] harus
menjadi interval baru, tetapi jika Anda memiliki tanda yang berbeda, maka [a, x] harus
menjadi interval baru. (Lihat Gambar)
Memutuskan untuk melakukan hal-hal yang berbeda dalam situasi yang berbeda dalam
program ini disebut flow control. Cara paling umum untuk melakukan ini adalah jika ...
else ... pernyataan akhir yang merupakan perpanjangan dari jika ... pernyataan akhir yang
telah kita gunakan.
Membatasi Kesalahan
Satu hal yang baik tentang metode pembagian dua, yang tidak kita miliki dengan
metode Newton, adalah bahwa kita selalu tahu bahwa solusi aktual x berada dalam interval
saat ini [a, b], karena f (a) dan f (b) memiliki tanda-tanda awal. Ini memungkinkan kami
untuk memastikan tentang apa kesalahan maksimum yang bisa terjadi. Tepatnya, kesalahan
selalu kurang dari setengah dari interval saat ini [a, b], mis.
{Absolute Error}
function [x e] = mybisect(f,a,b,n)
% function [x e] = mybisect(f,a,b,n)
% Does n iterations of the bisection method for a function f
% Inputs: f -- a function
% a,b -- left and right edges of the interval
% n -- the number of bisections to do.
% Outputs: x -- the estimated solution of f(x) = 0
% e -- an upper bound on the error
% evaluate at the ends and make sure there is a sign change
c = f(a); d = f(b);
if c*d > 0.0
error(’Function has same sign at both endpoints.’)
end
disp(’ x y’)
for i = 1:n
% find the middle and evaluate there
x = (a + b)/2;
y = f(x);
disp([ x y])
if y == 0.0 % solved the equation exactly
e = 0;
break % jumps out of the for loop
end
% decide which half to keep , so that the signs at the ends
differ
if c*y < 0
b=x;
else
a=x;
end
end
% set the best estimate for x and the error bound
x = (a + b)/2;
e = (b-a)/2;
end/
Aspek penting lain dari pembagian dua adalah bahwa ia selalu bekerja. Kami melihat
bahwa metode Newton dapat gagal untuk konvergen ke x jika x0 tidak cukup dekat dengan x*.
Sebaliknya, interval saat ini [a, b] di bus akan selalu dikurangi dengan faktor 2 pada setiap
langkah dan karenanya akan selalu menyusut sekecil yang Anda inginkan.
Locating a root
Metode pembagian dua dan metode Newton keduanya digunakan untuk mendapatkan
pendekatan yang lebih dekat dan lebih dekat dari solusi, tetapi keduanya membutuhkan
tempat awal. Metode pembagian dua membutuhkan dua titik a dan b yang memiliki root di
antara mereka, dan metode Newton membutuhkan satu titik x 0 yang cukup dekat dengan root.
Bagaimana Anda menemukan titik awal ini? Tergantung. Jika Anda memecahkan suatu
persamaan sekali, maka hal terbaik untuk dilakukan pertama adalah dengan membuat
grafiknya saja. Dari grafik yang akurat Anda dapat melihat kira-kira di mana grafik melintasi
nol.
Ada situasi lain di mana Anda tidak hanya menyelesaikan persamaan sekali, tetapi
Anda harus menyelesaikan persamaan yang sama berkali-kali, tetapi dengan koefisien yang
berbeda. Ini terjadi ketika Anda mengembangkan perangkat lunak untuk aplikasi tertentu.
Situasi ini adalah hal yang ingin Anda manfaatkan dari domain alami masalah, yaitu pada
interval berapa solusi yang wajar secara fisik. Jika diketahui, maka mudah untuk sampai ke
root hanya dengan memeriksa fungsi di sejumlah titik di dalam interval. Setiap kali tanda
berubah dari satu titik ke titik berikutnya, ada akar di antara titik-titik itu. Program berikut
akan mencari fungsi interval yang diedit khusus [a0, b0].
/
function [a,b] = myrootfind(f, a0, b0)
% function [a,b] = myrootfind(f,a0,b0)
% Looks for subintervals where the function changes sign
% Inputs: f -- a function
% a0 -- the left edge of the domain
% b0 -- the right edge of the domain
% Outputs: a -- an array , giving the left edges of subintervals
% on which f changes sign
% b -- an array , giving the right edges of the subintervals
n = 1001; % number of test points to use
a = [ ]; % start empty array
b = [ ]; % split the interval into n-1 intervals and evaluate at the
break points
x = linspace (a0, b0, n);
y = f(x);
% loop through the intervals
for i = 1:(n-1)
if y(i)*y(i+1) < 0 % The sign changed , record it
a = [a x(i)];
b = [b x(i+1)];
end
end
if size (a, 1) == 0
warning (’no roots were found’)
end
end
/
Situasi historis adalah menulis sebuah program yang akan mencari akar tanpa
informasi yang diberikan. Ini adalah masalah yang dihadapi dalam aplikasi teknik.
Setelah root ditemukan pada interval [a, b], a dan b ini dapat berfungsi sebagai titik
awal untuk pembagian dua dan metode garis potong (lihat bagian berikutnya). Untuk metode
Newton, orang ingin memilih x0 antara a dan b. Salah satu pilihan yang jelas adalah
membiarkan garis bagi a dan b, yaitu x 0 = (a + b)/2. Pilihan yang lebih baik lagi adalah
menggunakan metode garis potong untuk memilih x0.
B. PENUTUP
1. KELEBIHAN BUKU
Terdapat banyak kelebihan dalam buku yang ditulis oleh Todd Young and Martin J.
Mohlenkamp ini. Secara keseluruhan buku ini sangat mudah untuk dipahami
karena penulis menggunakan bahasa-bahasa yang ringan dan disertai langkah-
langkah melakukan pemograman menggunakan MATLAB. Dan penulis juga
memberi secara langsung script algoritma pemrograman untuk metode numeriknya dalam
bentuk potongan script langsung pada MATLAB, penulis buku ini juga menjelaskan meski
tidak semua penggunaan script MATLAB tersebut. Dan penulis juga memberikan latihan di
setap akhir bagian, sehingga pembaca bisa melatih kemampuannya setelah mempelajari buku
tersebut.
2. KEKURANGAN BUKU
Kekurangan buku ini adalah tidak ada cover yang berwarna sehingga kurang menarik
pembaca untuk membuka buku ini dan gambar-gambar di dalamnya juga tidak ada yang
berwarna jadi kurang menarik. Buku ini juga tidak terdapat ISBN nya.