Penghampiran Turunan Metode Numerik
PENGHAMPIRAN TURUNAN
Nama :
Maria Ulfa Cahyani
NIM :
110210102054
1. y = 3x3+2x2+4
M-File:
function f = Lat05(x)
x = x(:);
f =
3*(x.^3)+2*(x.^2)+4;
Command Window:
>> y=Lat05(1)
y
=
9
2. Buatlah function untuk menyelesaikan
pendekatan turunan pertama dari f(x) dengan metode beda pusat dengan error
berorde O(h2) (Persamaan 3-1):
Bandingkan hasilnya dengan jika
dihitung langsung? Coba pula anda bandingkan jika h diberi harga 0.1, 0.001,
0.00001, dan 0.000000001?
M-File:
function dfx =
dBP06(f,x,h)
if isstr(f)~=1; error('nama harus sebuah
strings');end
if min(size(x))>1; error('x harus
vector atau scalar'); end
if length(h)==1;h=h*ones(length(x),1);end
x = x(:); h=h(:);
xp = x + h; xm = x – h;
Xp = feval(f,xp);
Xm=feval(f,xm);
dxp=Xp-Xm;
dfx=dxp. / (2*h);
Command Window:
>> format long
>> dx = dBP06 ('Lat05',1,0.01)
dx =
13.00030000000003
>> dx = dBP06 ('Lat05',1,0.1)
dx =
13.03000000000001
>> dx = dBP06 ('Lat05',1,0.001)
dx =
13.00000299999926
>> dx = dBP06 ('Lat05',1,0.00001)
dx =
13.00000000030721
>> dx = dBP06 ('Lat05',1,0.000000001)
dx =
13.00000018744640
3. lakukan seperti
latihan no 2, untuk kedua function dari persamaan (3-2 dan 3-3) berikut ini:
a. function
untuk persamaan (3-2)
M-File:
function dfx2 =
dBP07(f,x,h)
if isstr(f)~=1;error('nama harus sebuah
strings');end
if min(size(x))>1;error('x harus
vector atau scalar');end
if length(h)==1;
h=h*ones(length(x),1);end
x = x(:); h = h(:);
xp = x + h; xm = x
- h;
Xp = feval(f,xp);
Xt = feval(f,x); Xm = feval (f,xm);
dxp = Xp-(2*Xt)+Xm;
dfx2=dxp./(h.*h);function
untuk persamaan (3-3)
Command Window:
>> format
long
>> dfx2 =
dBP07('Lat05',1,0.1)
dfx2 =
22.00000000000024
>> dfx2 =
dBP07('Lat05',1,0.01)
dfx2 =
21.99999999998425
>> dfx2 =
dBP07('Lat05',1,0.001)
dfx2 =
21.99999999596969
>> dfx2 =
dBP07('Lat05',1,0.00001)
dfx2 =
22.00001958385655
>> dfx2 =
dBP07('Lat05',1,0.000000001)
dfx2 =
1.776356839400250e+003
b. M-File:
function dfx3 =
dBP08(f,x,h)
if isstr(f)~=1;error('nama harus
sebuah strings');end
if min(size(x))>1;error('x harus
vector atau scalar');end
if length(h)==1; h=h*ones(length(x),1); end
x = x(:); h = h (:);
xp = x +
h; xm = x - h;
xp2=x+2*h;
xm2=x-2*h;
Xp =
feval(f,xp); Xm = feval(f,xm);
Xp2 =
feval(f,xp2); Xm2 = feval(f,xm2);
dxp =
Xp2-(2*Xp)+(2*Xm)-Xm2;
dfx3 =
dxp./(2*(h.^3));
Command Window:
>> format
long
>> dfx3 =
dBP08('Lat05',1,0.1)
dfx3 =
17.99999999999801
>> dfx3 =
dBP08('Lat05',1,0.01)
dfx3 =
17.99999999985147
>> dfx3 =
dBP08('Lat05',1,0.001)
dfx3 =
18.00000060114826
>> dfx3 =
dBP08('Lat05',1,0.00001)
dfx3 =
16.87538997430238
>> dfx3 =
dBP08('Lat05',1,0.000000001)
dfx3 =
-8.881784197001250e+011
4. buatlah
function yang bisa mengeksekusi input scalar maupun vector dari fungsi y = 4e-2x
*sin(5x). simpanlah function anda dengan nama “Lat09”. Ujilah function
anda dengan memaksukkan nilai x = 0 dan x = 1, bandingkan dengan jika dihitung
langsung. Jika sudah benar, lakukan perintah berikut ini.
>> x = 0:0.1:25;
>> y = Lat09(x);
>> dx = dBP06('Lat09',x,0.001)
>>dx2 = dBP07('Lat09',x,0.001)
>>dx3 = dBP08('Lat09',x,0.001)
>>plot(x,y,x,dx,x,dx2,x,dx3)
Comments