TUGAS
MANDIRI 1
METODE
NUMERIK
OLEH
:
RISAL GUNAWAN
F1B314012
JURUAN
TEKNIK PERTAMBANGAN
FAKULATAS ILMU DAN TEKNOLOGI
KEBUMIAN
UNIVERSITAS HALU OLEO
KENDARI
2017
1.
Kode MATLAB function splineCurf
function k = splineCurv(xData, yData)
% Returns
curvatures of a cubic spline at the knots.
%
USAGE: k = splineCurv(xData,yData)
%
xData = x-coordinates of data points.
%
yData = y-coordinates of data points.
n =
length(xData);
c =zeros(n-1,1);d=ones(n, 1);
e =zeros(n-1,1);k=zeros(n, 1);
c(1:n-2) =
xData(1:n-2) - xData(2:n-1);
d(2:n-1) =
2*(xData(1:n-2) - xData(3:n));
e(2:n-1) =
xData(2:n-1) - xData(3:n);
k(2:n-1) =
6*(yData(1:n-2) - yData(2:n-1))...
./(xData(1:n-2) - xData(2:n-1))...
- 6*(yData(2:n-1) -
yData(3:n))...
./(xData(2:n-1) -
xData(3:n));
[c,d,e] =
LUdec3(c, d ,e);
k =
LUsol3(c ,d, e, k);
2.
Kode MATLAB function splinEval
function y =
splineEval(xData, yData, k, x)
% Returns value of cubic spline interpolant at
x.
% USAGE: y
= splineEval(xData,yData,k,x)
% xData
= x-coordinates of data points.
% yData
= y-coordinates of data points.
% k
= curvaturesofsplineattheknots;
% returned by function
splineCurv.
i = findSeg(xData, x);
h =
xData(i) - xData(i+1);
y = ((x
- xData(i+1))^3/h - (x - xData(i+1))*h)*k(i)/6.0...
- ((x - xData(i))^3/h - (x -
xData(i))*h)*k(i+1)/6.0...
+ yData(i)*(x - xData(i+1))/h...
- yData(i+1)*(x - xData(i))/h;
function i = findSeg(xData, x)
%
Returns index of segment containing x.
iLeft =
1; iRight =
length(xData);
while 1
if (iRight -
iLeft) <= 1
i =
iLeft; return
end
i
= fix((iLeft + iRight)/2);
if x
< xData(i)
iRight = i;
else
iLeft = i;
end
end
3.
Gunakan data pada example 3.5 untuk menghitung nilai y
pada x=2.5, x=3.5, dan x=4.5(secara manual dan komputasi numerik).
X
|
1
|
2
|
3
|
4
|
5
|
y
|
0
|
1
|
0
|
1
|
0
|
Komputasi numerik
xData =
[1; 2; 3; 4; 5];
yData =
[0; 1; 0; 1; 0];
k =
splineCurv(xData,yData);
while 1
x = input('x = ');
if
isempty(x)
fprintf('Done'); break
end
y = splineEval(xData,yData,k,x)
fprintf('\n')
end
Running the program produces the following results:
x = 2.5
y =
0.4464
x = 3.5
y =
0.4464
x = 4.5
y =
0.7679
Perhitungan Manual
x=2,5
x=3,5
x=4,5
4.
Gunakan data pada example 3.6 untuk menghitung nilai y
pada x=1.6, x=2.6(secara manual dan komputasi numerik).
Komputasi numerik
xData = [0;
1; 2; 3];
yData = [1;
1; 0.5; 0];
k =
splineCurv(xData,yData);
while 1
x
= input('x = ');
if isempty(x)
fprintf('Done'); break
end
y
= splineEval(xData,yData,k,x)
fprintf('\n')
end
Running the program produces the
following results:
x = 1.6
y =
0.7320
x = 2.6
y =
0.1888
Perhitungan Manual
5.
Tuliskan dengan benar
kode-kode MATLAB pada example3.7 dan tunjukan bahwa hasil eksekusi program yang
dibuat sesuai dengan hasil yang tercantum pada buku teks.
xData =
[1; 2; 3; 4; 5];
yData =
[0; 1; 0; 1; 0];
k =
splineCurv(xData,yData);
while 1
x = input('x = ');
if isempty(x)
fprintf('Done'); break
end
y = splineEval(xData,yData,k,x);
fprintf('\n')
end
Running the program produces the
following results:
x = 1.5
y =
0.7679
x = 4.5
y =
0.7679
6. Kerjakan soal-soal pada PROBLEM SHEET 3.1
untuk nomor 10,11,12,13 dan17.
Ø Nomor 10
xData =
[0; 1; 2];
yData =
[0; 2; 1];
k =
splineCurv(xData,yData);
while 1
x = input('x = ');
if
isempty(x)
fprintf('Done'); break
end
y = splineEval(xData,yData,k,x)
fprintf('\n')
end
Running the program produces the
following results:
x = 0
y =
0
x = 0.1
y =
0.2742
x = 0.2
y =
0.5440
x = 0.3
y =
0.8047
x = 0.4
y =
1.0520
x = 0.5
y =
1.2813
x = 0.6
y =
1.4880
x = 0.7
y =
1.6677
x = 0.8
y =
1.8160
x = 0.9
y =
1.9283
x = 1
y =
2
x = 1.1
y =
2.0282
x = 1.2
y =
2.0160
x = 1.3
y =
1.9677
x = 1.4
y =
1.8880
x = 1.5
y =
1.7813
x = 1.6
y =
1.6520
x = 1.7
y =
1.5048
x = 1.8
y =
1.3440
x = 1.9
y =
1.1743
x = 2
y =
1
Ø
Nomor11
xData = [1;
2; 3; 4; 5;];
yData = [13;
15; 12; 9; 13];
k =
splineCurv(xData,yData);
while 1
x
= input('x = ');
if isempty(x)
fprintf('Done'); break
end
y
= splineEval(xData,yData,k,x)
fprintf('\n')
end
Running the program produces the
following results:
x = 3.4
y =
10.2549
Ø
Nomor12
xData =
[0.2; 0.4; 0.6; 0.8; 1.0];
yData =
[1.150; 0.855; 0.377;
-0.266; -1.049];
k =
splineCurv(xData,yData);
while 1
x
= input('x = ');
if
isempty(x)
fprintf('Done'); break
end
y
= splineEval(xData,yData,k,x)
fprintf('\n')
end
Ø
Nomor13
xData =
[0.2; 20; 200; 2000; 20000];
yData =
[103; 13.9; 2.72; 0.800; 0.401; 0.433];
k =
splineCurv(xData,yData);
while 1
x = input('x = ');
if isempty(x)
fprintf('Done'); break
end
y = splineEval(xData,yData,k,x)
fprintf('\n')
end
Running the program produces the
following results:
x = 5
y =
80.3860
x = 50
y =
-78.8036
x = 500
y =
411.2887
x = 5000
y =
-1.9155e+003
Ø
Nomor
17
ReData =
[0.2;2;20;200;2000;20000];
CdData =
[103;13.9;2.72;0.800;0.401;0.433];
k = splineCurv(xData,yData);
while 1
x = input('x = ');
if isempty(x)
fprintf('Done'); break
end
y = splineEval(xData,yData,k,x)
fprintf('\n')
end
>>
tugas17
x
= 5
y
=
214.5685
x = 50
y =
4.2602e+05
x = 500
y =
4.5013e+08
x = 5000
y =
4.5257e+11