Pemrograman Analisis Numerik dengan MATLAB
Pemrograman Analisis Numerik dengan MATLAB
Ada beberapa function MATLAB yang digunakan dalam pembahasan ini
Function | Keterangan |
Abs | Harga mutlak |
Dblquad | Evaluasi integral lipat dua |
Erf | Fungsi kesalahan |
feval | Mengeksekusi fungsi yang namanya disebutkan oleh string |
fzero | Menemukan pembuat nol fungsi satu variabel |
gamma | Fungsi gamma |
inline | Konstruksi objek ONLINE |
Interp1 | Interpolasi satu dimensi |
Interp2 | Interpolasi dua dimensi |
linspace | Membagi vektor secara linear |
meshgrid | Array X dan Y untuk plot grafik tiga dimensi |
norm | Normal suatu matrik atau vektor |
ode23 | Penyelesaian persamaan differensial non stiff, metode low order |
ode45 | Penyelesaian persamaan differensial non stiff, metode medium order |
ode113 | Penyelesaian persamaan differensial non stiff, metode variabel order |
Ode15s | Penyelesaian persamaan differensial non stiff, metode variabel order |
ode23s | Penyelesaian persamaan differensial non stiff, metode low order |
poly | Konversi akar-akar ke polinomial |
polyval | Mengevaluasi polinomial |
quad | Mengevaluasi integral secara numerik, metode low order |
quad8 | Mengevaluasi integral secara numerik, metode high order |
rcond | Estimasi kondisi timbal balik |
roots | Mendapatkan akar-akar polinomial |
spline | Interpolasi data dengan kubik spline |
surf | Menggambar permukaan warna 3 dimensi |
unmkpp | Penyediaan secara detailtentang polinomial sepotong-sepotong |
Polinomial
- Akar
Polinomial : X4 – 12 X3 + 0 X2 + 25 X + 116 = 0
>> p = [1 -12 0 25 116]
p =
1 – 12 0 25 116
Akar polinomial dapat ditentukan dengan fungsi roots :
>> r = roots(p)
r =
11.7473
2.7028
-1.2251 + 1.4672i
– 1.2251 – 1.4672i
>> pp = poly(r)
pp =
1.0e+002 *
Columns 1 through 4
0.0100 -0.1200 0.0000 0.2500
Columns 5
1.1600 + 0.0000i
>> pp(abs<1e-12)=0 {mengubah nilai-nilai kecil menjadi nol}
pp =
1.0e+002
Columns 1 through 4
0.0100 -0.1200 0 0.2500
Columns 5
1.1600 + 0.0000i
- Perkalian
Perkalian polinomial dikerjakan dengan fungsi conv
a(x) = X3 + 2 X2 + 3 X + 4 dengan b(x) = X3 + 4 X2 + 9 X + 16
>> a = [1 2 3 4] ; b = [1 4 9 16]
c= conv(a,b)
c =
1 6 20 50 75 84 64
Hasilnya adalah c(x) = X6 +6 X5+ 20 X4 + 50 X3 + 75 X2 + 84 X + 64
- Penjumlahan
>> d = a + b
d =
2 6 12 20
>> e = c + [0 0 0 d]
e =
1 6 20 52 81 96 84
Membuat fungsi M-file dengan menggunakan editor untuk melakukan penjumlahan polinomial secara umum, caranya buka File pilih New pilih lagi M-file setelah itu ketiklah contoh berikut ini :
function p=polyadd(a,b)
if nargin <2, error(‘Kekurangan argumen input’), end % pengecekan error
a=a(:).’;
b=b(:).’;
na = length(a);
nb= length(b);
p=[zeros(1,nb-na) a] + [zeros(1,na-nb) b];
Setelah selesai mengetik simpan dengan nama file polyadd.m
>> f=polyadd(c,d)
f =
1 6 20 52 81 96 84
yang sama dengan e sebelumnya
>> g=polyadd(c, -d)
g =
1 6 20 48 69 72 44
yang menghasilkan g(x) = X6 + 6 X5 + 20 X4 +48 X3 + 69 X2 + 72 X + 44
- Pembagian
Pembagian polinomial dikerjakan dengan fungsi deconv
>> [q,r] = deconv(c,b) {Polinomial b yang dibagi dengan polinomial c menghasilkan polinomial q dan sisa r}
q =
1 2 3 4
r =
0 0 0 0 0 0 0
- Turunan
>> g
g =
1 6 20 48 69 72 44
>> h=polyder(g)
h =
6 30 80 144 138 72
- F.Evaluasi
Untuk mengevaluasi dikerjakan dengan fungsi polyval
>> x = linspace(-1,3); %memilih 100 data point antara -1 sampai 3
>> p = [1 4 -7 -10]; %menggunakan polinomial p(x) = X3 + 4 X2 – 7 X – 10
>> v=polyval(p,x); %mengevaluasi p(x) menggunakan nilai-nilai x dan menyimpan hasilnya dalam v}
>> plot(x,v), title(‘x^3 + 4x^2 – 7x -19’), xlabel(‘x’)
Gambar 1
Pencarian Nol
fungsi mencapai nol di dekat x = 1.2
>> xzero=fzero(‘humps’,1.2)
Zero found in the interval: [1.0642, 1.3358].
xzero =
1.2995
>> yzero=humps(xzero)
yzero =
0
- Pengintegralan
Untuk menghitung luas area di bawah y=humps(x) dalam range 1<z<2 menggunakan trapz untuk setiap plot yang ditunjukkan diatas
>>x=-1:.17:2; % pendekatan kasar
>> y=humps(x);
>> area=trapz(x,y)
area =
25.9174
>> x=-1:.07:2; % Pendekatan halus
>> y=humps(x);
>> area=trapz(x,y)
area =
26.6243
Fungsi quad dan quad8 yang didasarkan atas konsep matematika kuadratur, fungsi quad8 lebih teliti dari quad.
>> area=quad(‘humps’,-1,2)
area =
26.3450
>> area=quad8(‘humps’,-1,2)
area =
26.3450
- Pendiferensialan
>> x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];
>> y=[-.447 1.978 3.20 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
>> n=2;
>> p=polyfit(x,y,n)
p =
-9.8015 20.1418 -0.0485
>>xi=linspace(0,1,100);
>> z=polyval(p,xi);
>> plot(x,y,’o’,x,y,xi,z,’:’)
>>xlabel(‘x’), ylabe(‘y=f(x)’)
>> title(‘Pencocokan Kurva Derajat Dua’)
>>pd=polyder(p)
pd =
-19.6217 20.1293
Derivatif dari y = -9.8108 X2 + 20.1293 – 0.0317 adalah dy/dx = 19.6217 x + 20.1293