Anda di halaman 1dari 22

CRITICAL BOOK REVIEW

Introduction to Numerical Methods


and Matlab Programming for Engineers
(Part I: Vectors, Function, and Plots in MATLAB)

OLEH :
KElOMPOK I
Adventa Sinta Marito (8186176009)
Mawar Ketaren (8186176006)
Setrie Frimayri (8186176005)
Tika Nurjannah (8186176008)

PENDIDIKAN FISIKA PASCASARJANA


UNIVERSITAS NEGERI MEDAN
MEDAN
2019

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

Vektor, Fungsi, dan Plot di Matlab .

Dalam catatan ini akan menunjukkan perintah yang akan dimasukkan pada prompt Matlab >>
di jendela perintah. Jangan mengetikkan simbol | pada saat akan memulai program .

Membuat Data Vektor


Dalam Matlab, objek dasarnya adalah matriks, yaitu susunan angka. Vektor dapat dianggap
istimewa matriks. Vektor baris direkam sebagai matriks dan vektor kolom dicatat sebagai
matriks.
Untuk masukkan baris vektor di Matlab, ketik perintah berikut
v = [0 1 2 3]
dan tekan enter. Matlab akan mencetak vektor baris.
Untuk membuat vektor kolom bisa dilakukan dengan menggunakan titik dua.
u = [9; 10; 11; 12; 13]
Untuk dapat mengakses data dalam vektor dengan kamu (2)
u(2)
dan untuk mengubah nilai entri itu dengan
u (2) = 47
Jika kita mau membuat nilai vector yang ke 4
u (2: 4)
Anda dapat mengubah vektor baris menjadi vektor kolom, dan sebaliknya dengan mudah di
Matlab menggunakan
w=v'
(Ini disebut mengubah vektor dan disebut sebagai kami memanggil operator transpos.). ada
juga cara yang lebih singkat untuk membuat vector seperti
x = -1: .1: 1
y = linspace(0, 1, 11)

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:

Tabel 1.1: Viskositas cairan sebagai fungsi temperatur.

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]

y = [0,08 0,015 0,009 0,006 0,0055]

Memasukkan nama variabel akan mengambil nilai saat ini. Contohnya

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

plot (x, y, '*')

plot (x, y, 'o')

plot (x, y, '.')

Data sebagai Representasi Fungsi


Tema utama dalam kursus ini adalah bahwa seringkali kita tertarik pada fungsi tertentu y
= f (x), tetapi satu-satunya informasi yang kami miliki tentang fungsi ini adalah sekumpulan
data diskrit f (xi; yi) g. Merencanakan data, seperti yang kami lakukan di atas, dapat dianggap
membayangkan fungsi hanya menggunakan data. Kami akan menemukan nanti yang juga
bisa kami lakukan hal-hal lain dengan fungsi, seperti mendiensiasi dan mengintegrasikan,
hanya menggunakan data yang tersedia. Numerik metode, topik kursus ini, berarti melakukan
matematika dengan komputer. Karena komputer hanya dapat menyimpan sejumlah informasi,
kami hampir selalu akan bekerja dengan nite, set nilai - nilai diskrit fungsi (data), bukan
formula untuk fungsi tersebut.

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)

seharusnya nilai dari sin π yang tentu saja 0 dan

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

x = linspace (0, 2 * pi, 40)

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

Fungsi Anonim yang Dipakai Pengguna


Jika kita ingin berurusan dengan fungsi yang merupakan kombinasi dari fungsi bawaan,
Matlab memiliki beberapa fungsi cara bagi pengguna untuk mendefinisikan fungsi. Salah satu
yang akan banyak kita gunakan adalah fungsi anonim, yang mana caranya untuk
mendefinisikan fungsi di jendela perintah. Berikut ini adalah fungsi anonim yang khas:

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 untuk fungsi bawaan, fungsi f

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:

fungsi y = fungsi saya (x)


y = 2 * x. ^ 2 - 3 * x + 1;
akhir

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:

x = -2: .1: 2; % Menghasilkan vektor nilai x


y = fungsi saya (x); % Menghasilkan vektor nilai y plot (x, y)

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

function nonsense = yourfunc (inputvector) omong kosong = 2 * inputvektor. ^ 2 - 3 *


inputvector + 1;
akhir
Lihat kembali programnya. Semua program fungsi adalah seperti ini, elemen-elemen penting
adalah:
● Mulailah dengan fungsi .
● Ada input dan output.
● Output, nama fungsi dan input harus muncul di baris pertama.
● Badan program harus menetapkan nilai ke variabel output.
● Program tidak dapat mengakses variabel di ruang kerja saat ini kecuali jika mereka
input.
Variabel internal di dalam fungsi tidak muncul di ruang kerja saat ini.
Fungsi dapat memiliki beberapa input, yang dipisahkan dengan koma. Sebagai contoh:

fungsi y = myfunc2d (x, p)


y = 2 * x. ^ p - 3 * x + 1;
akhir

Fungsi dapat memiliki banyak output, yang dikumpulkan ke dalam vektor. Buka dokumen baru dan
ketik:

function [x2 x3 x4] = mypower (x)


x2 = x. ^ 2;
x3 = x. ^ 3;
x4 = x. ^ 4;
akhir

Simpan file ini sebagai mypowers.m. Di jendela perintah, kita bisa menggunakan hasil
program untuk membuatnya
grafik:

x = -1: .1: 1

[x2 x3 x4] = mypower (x);

plot (x, x, 'hitam', x, x2, 'biru', x, x3, 'hijau', x, x4, 'merah')

Mencetak, Mengembalikan, Menangkap, dan Mencetak


Coba yang berikut ini:

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 = fungsi saya (2)

z^2

myfunc mengembalikan nilai yang disebut secara internal y dan kami menangkap hasilnya
dalam z. Kita sekarang dapat menggunakan z untuk perhitungan lainnya.

Sekarang buat program

fungsi myfuncnoreturn (x)


y = 2 * x. ^ 2 - 3 * x + 1
akhir
dan coba:

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

Perhatikan bahwa program menggunakan variabel x dalam perhitungannya, meskipun x


didefinisikan dalam perintah jendela, bukan di program.

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:

fungsi y = fungsi saya (x)


% Menghitung fungsi 2x ^ 2 -3x +1
% Input: x - angka atau vektor;
% untuk vektor perhitungannya adalah elemen
% Output: y - angka atau vektor dengan ukuran yang sama dengan x
y = 2 * x. ^ 2 - 3 * x + 1;
akhir

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

plot grafik x, x ^ 2, x ^ 3, dan x ^ 4

pada interval [-1, 1]

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

Memecahkan Persamaan Secara Numerik


Kita akan fokus pada masalah penyelesaian persamaan:

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.

f (x) ≈ f (x0) + f’ (x0) (x – x0). (3.2)

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.

Loop: for ... end

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:

Tulis fungsi ini di jendela perintah sebagai:


>> mysum (100)

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:

Di jendela perintah atur untuk mencetak lebih banyak digit melalui

Format long

dan untuk tidak mencetak baris kosong via

format compact

Kemudian tentukan fungsi: f (x) = x3 - 5 i.e.

f = @ (x) x ^ 3 - 5

dan mendefinisikan f1 sebagai turunannya, mis.

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.

Untuk f (x) = x1 / 3 kita memiliki x ∗ = 0 tetapi f (x ∗) = ∞. Jika kamu mencoba

maka x tidak konvergen ke 0, tetapi tidak secepat itu.

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

• iterasi tidak akan mendekati x*.

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}

di mana adalah aproksimasi dan adalah nilai sebenarnya. Namun, kami

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

sampai perkiraan berhenti berubah. Masalahnya adalah kadang-kadang tidak berhasil.

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

0. Kita akan menggunakan kuantitas , disebut residual, dalam banyak situasi

situasi berikutnya. Sebagian besar waktu kami hanya peduli tentang ukuran rn, jadi kami
menggunakannya untuk menyelesaikan masalah:

Pernyataan if ... end

Jika kami memiliki toleransi tertentu untuk maka kita dapat memasukkannya

ke dalam metode Newton menggunakan program jika ... end statement:

Function x = mynewton (f,f1,x0,n, tol)


% Solves f(x) = 0 by doing n steps of Newton’s method starting at x0
% Inputs: f –- the function
% f1 – it’s derivative
% x0 – starting guess, a number
% tol – derised tolerance, prints a warning if |f(x) |>tol
% Output : x – the approximate solution
X = x0; % set x equal to the initial goess xo
for i = 1:n % Do n times
x = x – f(x)/f1 (x) % Newton’s formula
end
r = ads (f(x))
if r > tol
Warning (‘the desired accuracy was not attained’)
end
end

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.

Loop: while ... end


Meskipun program sebelumnya akan memberi tahu kami jika tidak berhasil, kami
masih harus memasukkannya, jumlah langkah yang harus diambil. Bahkan untuk masalah
yang berperilaku baik, jika kita membuatnya terlalu kecil, jika kita membuatnya terlalu besar,
maka program akan mengambil lebih banyak langkah daripada yang diperlukan.

Salah satu cara untuk mengendalikan adalah dengan beralih hingga residual

cukup kecil. Matlab ini mudah diselesaikan dengan while ... end loop.

function x = mynew tontol ( f, f1 , x0 ,tol )


% Solves f(x) = 0 using Newton ’s method until | f (x )| < tol.
% 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
y = f(x);
while abs(y) > tol % Do until the tolerence is reached.
x = x - y/f1(x) % Newton ’s formula
y = f(x)
end
end
Pernyataan while ... end adalah sebuah loop, mirip dengan ... end, tetapi alih-alih melalui loop
sebanyak x kali, pernyataan abs (y) > toll benar.
Satu kekurangan yang jelas dari program ini adalah abs (y) mungkin tidak pernah
lebih kecil dari tol. Jika ini terjadi, program akan terus berjalan berulang kali hingga kami
menghentikannya. Coba ini dengan mengatur toleransi ke jumlah yang sangat kecil:
tol = 10 ^ (- 100)
kemudian jalankan kembali program untuk f (x) = x 3 −5. (Anda dapat
menggunakan Ctrl-c untuk menghentikan program ketika macet.)
Salah satu cara untuk menghindari loop tak terbatas adalah dengan
menambahkan variabel penghitung, I dan jumlah iterasi maksimum
ke program. Menggunakan pernyataan while, ini bisa dicapai
sebagai:

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

4.1 In Calculus we learn that a geometric series has an exact sum


asalkan | r | <1. Sebagai contoh, jika r = .5 maka jumlahnya tepat 2. Di bawah ini adalah
program skrip yang tidak memiliki satu baris seperti yang tertulis. Perintah lalu gunakan
program untuk memverifikasi hasil di atas. Berapa banyak langkah yang dibutuhkan?
Seberapa dekat jawaban untuk 2?

% Computes a geometric series until it seems to converge


format long
format compact
r = .5;
Snew = 0; % start sum at 0
Sold = -1; % set Sold to trick while the first time
i = 0; % count iterations
while Snew > Sold % is the sum still changing?
Sold = Snew; % save previous value to compare to
Snew = Snew + r^i;
i=i+1;
Snew % prints the final value.
i % prints the # of iterations.

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}

di mana x adalah titik tengah antara arus a dan b.


Program fungsi berikut (juga tersedia di halaman web) melakukan iterasi metode
pembagian dua dan mengembalikan tidak hanya nilai-nilai spesifik, tetapi juga kesalahan
maksimum yang mungkin terjadi:

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.

Anda mungkin juga menyukai