You are on page 1of 17

Nama: Bulan Nyeqty Az-zahrawati NIM: 11220940000036 Kelas: A Matkul: Metode Numerik

In [ ]: #Interpolasi Polynomials
In [148]: using Plots
using Polynomials
In [149]: #1a
x = [0, 0.6, 0.9]
f(x) = cos(x)
y = f.(x)
nilai_eksak = f(0.45)
Out[149]:0.9004471023526769
In [150]: scatter(x, y, xlabel="x", ylabel="y", label="titik data")

Out[150]:
In [151]: #P2
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
Out[151]:3×3 Matrix{Float64}:
1.0 0.0 0.0
1.0 0.6 0.36
1.0 0.9 0.81
In [152]: a = V \ y
a
Out[152]:3-element Vector{Float64}:
1.0
-0.03245518827530726
-0.4310868670142704
In [153]: p = Polynomial(a)

Out[153]: 1.0 - 0.03245518827530726∙x - 0.4310868670142704∙x2


In [154]: error_abs = abs(p(0.45) - f(0.45))

Out[154]:0.0023470276469549356
In [157]: #P1
u = x[1:length(x)-1]
v = f.(u)
Out[157]:2-element Vector{Float64}:
1.0
0.8253356149096783
In [158]: V = [u[i]^j for i=1:length(u), j=0:length(u)-1]

Out[158]:2×2 Matrix{Float64}:
1.0 0.0
1.0 0.6
In [159]: a = V \ v

Out[159]:2-element Vector{Float64}:
1.0
-0.29110730848386945
In [160]: p = Polynomial(a)

Out[160]:1.0 - 0.29110730848386945∙x
In [161]: p(0.45)

Out[161]:0.8690017111822588
In [162]: error_abs = abs(f(0.45) - p(0.45))

Out[162]:0.03144539117041811
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [202]: #1b
x = [0, 0.6, 0.9]
f(x) = sqrt(1+x)
y = f.(x)
nilai_eksak = f(0.45)
Out[202]:1.2041594578792296
In [203]: scatter(x, y, xlabel="x", ylabel="y", label="titik data")

Out[203]:
In [204]: #P2
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
Out[204]:3×3 Matrix{Float64}:
1.0 0.0 0.0
1.0 0.6 0.36
1.0 0.9 0.81
In [205]: a = V \ y
a
Out[205]:3-element Vector{Float64}:
1.0
0.483655597650043
-0.0702285958963168
In [206]: p = Polynomial(a)

Out[206]: 1.0 + 0.483655597650043∙x - 0.0702285958963168∙x2


In [207]: error_abs = abs(p(0.45) - f(0.45))

Out[207]:0.0007357296057144413
In [208]: #P1
u = x[1:length(x)-1]
v = f.(u)
Out[208]:2-element Vector{Float64}:
1.0
1.2649110640673518
In [209]: V = [u[i]^j for i=1:length(u), j=0:length(u)-1]

Out[209]:2×2 Matrix{Float64}:
1.0 0.0
1.0 0.6
In [210]: a = V \ v

Out[210]:2-element Vector{Float64}:
1.0
0.44151844011225294
In [211]: p = Polynomial(a)

Out[211]:1.0 + 0.44151844011225294∙x
In [212]: p(0.45)

Out[212]:1.1986832980505138
In [213]: error_abs = abs(f(0.45) - p(0.45))

Out[213]:0.005476159828715854
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [214]: #1c
x = [0, 0.6, 0.9]
f(x) = log(x+1)
y = f.(x)
nilai_eksak = f(0.45)
Out[214]:0.371563556432483
In [215]: scatter(x, y, xlabel="x", ylabel="y", label="titik data")

Out[215]:
In [216]: #P2
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
Out[216]:3×3 Matrix{Float64}:
1.0 0.0 0.0
1.0 0.6 0.36
1.0 0.9 0.81
In [217]: a = V \ y
a
Out[217]:3-element Vector{Float64}:
0.0
0.9236761769566901
-0.23389465813410665
In [218]: p = Polynomial(a)

Out[218]: 0.9236761769566901∙x - 0.23389465813410665∙x2


In [219]: error_abs = abs(p(0.45) - f(0.45))

Out[219]:0.0032729450741290633
In [221]: #P1
u = x[1:length(x)-1]
v = f.(u)
Out[221]:2-element Vector{Float64}:
0.0
0.47000362924573563
In [222]: V = [u[i]^j for i=1:length(u), j=0:length(u)-1]

Out[222]:2×2 Matrix{Float64}:
1.0 0.0
1.0 0.6
In [223]: a = V \ v
Out[223]:2-element Vector{Float64}:
0.0
0.7833393820762261
In [224]: p = Polynomial(a)

Out[224]:0.7833393820762261∙x
In [225]: p(0.45)

Out[225]:0.35250272193430177
In [226]: error_abs = abs(f(0.45) - p(0.45))

Out[226]:0.019060834498181245
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [227]: #1d
x = [0, 0.6, 0.9]
f(x) = tan(x)
y = f.(x)
nilai_eksak = f(0.45)
Out[227]:0.4830550656165784
In [228]: scatter(x, y, xlabel="x", ylabel="y", label="titik data")

Out[228]:
In [229]: #P2
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
Out[229]:3×3 Matrix{Float64}:
1.0 0.0 0.0
1.0 0.6 0.36
1.0 0.9 0.81
In [230]: a = V \ y
a
Out[230]:3-element Vector{Float64}:
0.0
0.6203324471521526
0.8664926112511132
In [231]: p = Polynomial(a)

Out[231]: 0.6203324471521526∙x + 0.8664926112511132∙x2


In [232]: error_abs = abs(p(0.45) - f(0.45))

Out[232]:0.02844071061975928
In [233]: #P1
u = x[1:length(x)-1]
v = f.(u)
Out[233]:2-element Vector{Float64}:
0.0
0.6841368083416923
In [234]: V = [u[i]^j for i=1:length(u), j=0:length(u)-1]

Out[234]:2×2 Matrix{Float64}:
1.0 0.0
1.0 0.6
In [235]: a = V \ v

Out[235]:2-element Vector{Float64}:
0.0
1.1402280139028207
In [236]: p = Polynomial(a)

Out[236]:1.1402280139028207∙x
In [237]: p(0.45)

Out[237]:0.5131026062562694
In [238]: error_abs = abs(f(0.45) - p(0.45))

Out[238]:0.03004754063969095
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [84]: #Interpolasi Lagrange
In [164]: function Lagrange_basis(x_data)
n = length(x_data)
L = zeros(n, n)
for i in 1:n
for j in 1:n
if i == j
L[i, j] = 1.0
else
L[i, j] = 0.0
end
end
end
return L
end
Out[164]:Lagrange_basis (generic function with 1 method)
In [165]: function poly_Lagrange(x, x_data, koef)
n = length(x_data)
hasil = 0.0
for i in 1:n
term = koef[i]
for j in 1:n
if i != j
term *= (x - x_data[j]) / (x_data[i] - x_data[j])
end
end
hasil += term
end
return hasil
end
Out[165]:poly_Lagrange (generic function with 1 method)
In [166]: #1a
#P2
x = [0, 0.6, 0.9]
f(x) = cos(x)
y = f.(x);
In [167]: V = Lagrange_basis(x)
V
Out[167]:3×3 Matrix{Float64}:
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
In [168]: a = V \ y
a
Out[168]:3-element Vector{Float64}:
1.0
0.8253356149096783
0.6216099682706644
In [169]: p = poly_Lagrange

Out[169]:poly_Lagrange (generic function with 1 method)


In [170]: p(0.45, x, a)

Out[170]:0.898100074705722
In [171]: error_abs = abs(p(0.45, x, a) - f(0.45))

Out[171]:0.0023470276469549356
In [172]: #P1
x = [0, 0.6]
f(x) = cos(x)
y = f.(x);
In [173]: V = Lagrange_basis(x)
V
Out[173]:2×2 Matrix{Float64}:
1.0 0.0
0.0 1.0
In [174]: a = V \ y
a
Out[174]:2-element Vector{Float64}:
1.0
0.8253356149096783
In [175]: p = poly_Lagrange

Out[175]:poly_Lagrange (generic function with 1 method)


In [176]: p(0.45, x, a)

Out[176]:0.8690017111822588
In [177]: error_abs = abs(p(0.45, x, a) - f(0.45))

Out[177]:0.03144539117041811
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [109]: #1b
#P2
x = [0, 0.6, 0.9]
f(x) = sqrt(1+x)
y = f.(x);
In [110]: V = Lagrange_basis(x)
V
Out[110]:3×3 Matrix{Float64}:
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
In [111]: a = V \ y
a
Out[111]:3-element Vector{Float64}:
1.0
1.2649110640673518
1.378404875209022
In [112]: p = poly_Lagrange

Out[112]:poly_Lagrange (generic function with 1 method)


In [ ]: p(0.45, x, a)
In [ ]: error_abs = abs(p(0.45, x, a) - f(0.45))
In [ ]: #P1
x = [0, 0.6]
f(x) = sqrt(1+x)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(0.45, x, a)
In [ ]: error_abs = abs(p(0.45, x, a) - f(0.45))
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [ ]: #1c
#P2
x = [0, 0.6, 0.9]
f(x) = log(x+1)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(0.45, x, a)
In [ ]: error_abs = abs(p(0.45, x, a) - f(0.45))
In [ ]: #P1
x = [0, 0.6]
f(x) = log(x+1)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(0.45, x, a)
In [ ]: error_abs = abs(p(0.45, x, a) - f(0.45))
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [ ]: #1d
#P2
x = [0, 0.6, 0.9]
f(x) = tan(x)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(0.45, x, a)
In [ ]: error_abs = abs(p(0.45, x, a) - f(0.45))
In [ ]: x = [0, 0.6]
f(x) = tan(x)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(0.45, x, a)
In [ ]: error_abs = abs(p(0.45, x, a) - f(0.45))
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [ ]: #Interpolasi Newton
In [178]: #1a
#P2
x1=[0,0.6,0.9]
f(x1)=cos(x1)
y1=f.(x1);
xx=0.45
Out[178]:0.45
In [179]: function divdif(x::Array{Float64,1},f::Array{Float64,1})
n=length(x)
d=deepcopy(f)
for i=2:n
for j=1:i-1
d[i] = (d[j] - d[i])/(x[j] - x[i])
end
end
return d
end
Out[179]:divdif (generic function with 1 method)
In [180]: d = divdif(x1,y1)

Out[180]:3-element Vector{Float64}:
1.0
-0.29110730848386945
-0.4310868670142707
In [181]: function newtonform(x::Array{Float64,1}, d::Array{Float64,1}, xx::Float64)
n = length(d)
result = d[n]
for i=n-1:-1:1
result = result*(xx - x[i]) + d[i]
end
return result
end
Out[181]:newtonform (generic function with 1 method)
In [182]: n=newtonform(x1,d,xx)

Out[182]:0.898100074705722
In [183]: function newton(x::Array{Float64,1},f::Array{Float64,1},xx::Float64)
divided=divdif(x,f)
result=newtonform(x,divided,xx)
return divided, result
end
Out[183]:newton (generic function with 1 method)
In [184]: newton(x1,y1,xx)

Out[184]:([1.0, -0.29110730848386945, -0.4310868670142707], 0.898100074705722)


In [185]: error_abs=abs(newtonform(x1,d,xx)-f(0.45))

Out[185]:0.0023470276469549356
In [ ]: #P1
In [186]: u=x1[1:length(x1)-1]
v=f.(u)
Out[186]:2-element Vector{Float64}:
1.0
0.8253356149096783
In [187]: d1=divdif(u,v)

Out[187]:2-element Vector{Float64}:
1.0
-0.29110730848386945
In [188]: n1=newtonform(u,d1,xx)
Out[188]:0.8690017111822588
In [189]: newton(u,v,xx)

Out[189]:([1.0, -0.29110730848386945], 0.8690017111822588)


In [190]: error_abs=abs(newtonform(u,d1,xx)-f(0.45))

Out[190]:0.03144539117041811
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [139]: #1b
#P2
x1=[0,0.6,0.9]
f(x1)=sqrt(1+x1)
y1=f.(x1);
xx=0.45
Out[139]:0.45
In [ ]: function divdif(x::Array{Float64,1},f::Array{Float64,1})
n=length(x)
d=deepcopy(f)
for i=2:n
for j=1:i-1
d[i] = (d[j] - d[i])/(x[j] - x[i])
end
end
return d
end
In [ ]: d = divdif(x1,y1)
In [ ]: function newtonform(x::Array{Float64,1}, d::Array{Float64,1}, xx::Float64)
n = length(d)
result = d[n]
for i=n-1:-1:1
result = result*(xx - x[i]) + d[i]
end
return result
end
In [ ]: n=newtonform(x1,d,xx)
In [ ]: function newton(x::Array{Float64,1},f::Array{Float64,1},xx::Float64)
divided=divdif(x,f)
result=newtonform(x,divided,xx)
return divided, result
end
In [ ]: newton(x1,y1,xx)
In [ ]: error_abs=abs(newtonform(x1,d,xx)-f(0.45))
In [ ]: #P1
u=x1[1:length(x1)-1]
v=f.(u)
In [ ]: d1=divdif(u,v)
In [ ]: n1=newtonform(u,d1,xx)
In [ ]: newton(u,v,xx)
In [ ]: error_abs=abs(newtonform(u,d1,xx)-f(0.45))
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [140]: #1c
#P2
x1=[0,0.6,0.9]
f(x1)=log(x1+1)
y1=f.(x1);
xx=0.45
Out[140]:0.45
In [ ]: function divdif(x::Array{Float64,1},f::Array{Float64,1})
n=length(x)
d=deepcopy(f)
for i=2:n
for j=1:i-1
d[i] = (d[j] - d[i])/(x[j] - x[i])
end
end
return d
end
In [ ]: d = divdif(x1,y1)
In [ ]: function newtonform(x::Array{Float64,1}, d::Array{Float64,1}, xx::Float64)
n = length(d)
result = d[n]
for i=n-1:-1:1
result = result*(xx - x[i]) + d[i]
end
return result
end
In [ ]: n=newtonform(x1,d,xx)
In [ ]: function newton(x::Array{Float64,1},f::Array{Float64,1},xx::Float64)
divided=divdif(x,f)
result=newtonform(x,divided,xx)
return divided, result
end
In [ ]: newton(x1,y1,xx)
In [ ]: error_abs=abs(newtonform(x1,d,xx)-f(0.45))
In [ ]: #P1
u=x1[1:length(x1)-1]
v=f.(u)
In [ ]: d1=divdif(u,v)
In [ ]: n1=newtonform(u,d1,xx)
In [ ]: newton(u,v,xx)
In [141]: error_abs=abs(newtonform(u,d1,xx)-f(0.45))

Out[141]:0.49743815474977576
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [191]: #1d
#P2
x1=[0,0.6,0.9]
f(x1)=tan(x1)
y1=f.(x1);
xx=0.45
Out[191]:0.45
In [ ]: function divdif(x::Array{Float64,1},f::Array{Float64,1})
n=length(x)
d=deepcopy(f)
for i=2:n
for j=1:i-1
d[i] = (d[j] - d[i])/(x[j] - x[i])
end
end
return d
end
In [ ]: d = divdif(x1,y1)
In [ ]: function newtonform(x::Array{Float64,1}, d::Array{Float64,1}, xx::Float64)
n = length(d)
result = d[n]
for i=n-1:-1:1
result = result*(xx - x[i]) + d[i]
end
return result
end
In [ ]: n=newtonform(x1,d,xx)
In [ ]: function newton(x::Array{Float64,1},f::Array{Float64,1},xx::Float64)
divided=divdif(x,f)
result=newtonform(x,divided,xx)
return divided, result
end
In [ ]: newton(x1,y1,xx)
In [ ]: error_abs=abs(newtonform(x1,d,xx)-f(0.45))
In [ ]: #P1
u=x1[1:length(x1)-1]
v=f.(u)
In [ ]: d1=divdif(u,v)
In [ ]: n1=newtonform(u,d1,xx)
In [ ]: newton(u,v,xx)
In [ ]: error_abs=abs(newtonform(u,d1,xx)-f(0.45))
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [ ]: #Interpolasi Polynomials
In [239]: using Plots
using Polynomials
In [240]: #2a
x = [1, 1.25, 1.6]
f(x) = sin(pi)*x
y = f.(x)
nilai_eksak = f(1.4)
Out[240]:1.7145055188062944e-16
In [241]: scatter(x, y, xlabel="x", ylabel="y", label="titik data")

Out[241]:
In [242]: #P2
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
Out[242]:3×3 Matrix{Float64}:
1.0 1.0 1.0
1.0 1.25 1.5625
1.0 1.6 2.56
In [243]: a = V \ y
a
Out[243]:3-element Vector{Float64}:
-9.860761315262648e-32
1.224646799147355e-16
-7.043400939473309e-32
In [244]: p = Polynomial(a)

Out[244]: -9.860761315262648e-32 + 1.224646799147355e-16∙x - 7.043400939473309e-32∙x2


In [245]: error_abs = abs(p(0.45) - f(0.45))

Out[245]:3.0814879110195774e-32
In [246]: #P1
u = x[1:length(x)-1]
v = f.(u)
Out[246]:2-element Vector{Float64}:
1.2246467991473532e-16
1.5308084989341916e-16
In [247]: V = [u[i]^j for i=1:length(u), j=0:length(u)-1]

Out[247]:2×2 Matrix{Float64}:
1.0 1.0
1.0 1.25
In [248]: a = V \ v

Out[248]:2-element Vector{Float64}:
-2.465190328815662e-32
1.2246467991473535e-16
In [249]: p = Polynomial(a)

Out[249]:-2.465190328815662e-32 + 1.2246467991473535e-16∙x
In [250]: p(0.45)

Out[250]:5.5109105961630883e-17
In [251]: error_abs = abs(f(0.45) - p(0.45))

Out[251]:1.232595164407831e-32
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [254]: #2b
x = [1, 1.25, 1.6]
f(x) = cbrt(x-1)
y = f.(x)
nilai_eksak = f(1.4)
Out[254]:0.7368062997280772
In [255]: scatter(x, y, xlabel="x", ylabel="y", label="titik data")

Out[255]:
In [256]: #P2
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
Out[256]:3×3 Matrix{Float64}:
1.0 1.0 1.0
1.0 1.25 1.5625
1.0 1.6 2.56
In [257]: a = V \ y
a
Out[257]:3-element Vector{Float64}:
-6.498845638909375
9.682048470205078
-3.183202831295703
In [258]: p = Polynomial(a)
Out[258]: -6.498845638909375 + 9.682048470205078∙x - 3.183202831295703∙x2
In [259]: error_abs = abs(p(0.45) - f(0.45))

Out[259]:1.967201130053824
In [260]: #P1
u = x[1:length(x)-1]
v = f.(u)
Out[260]:2-element Vector{Float64}:
0.0
0.6299605249474366
In [261]: V = [u[i]^j for i=1:length(u), j=0:length(u)-1]

Out[261]:2×2 Matrix{Float64}:
1.0 1.0
1.0 1.25
In [262]: a = V \ v

Out[262]:2-element Vector{Float64}:
-2.5198420997897464
2.5198420997897464
In [263]: p = Polynomial(a)

Out[263]:-2.5198420997897464 + 2.5198420997897464∙x
In [264]: p(0.45)

Out[264]:-1.3859131548843604
In [265]: error_abs = abs(f(0.45) - p(0.45))

Out[265]:0.5665918842837145
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [266]: #2c
#P2
x = [1, 1.25, 1.6]
f(x) = log(10,3x-1)
y = f.(x)
nilai_eksak = f(1.4)
Out[266]:0.5051499783199058
In [267]: scatter(x, y, xlabel="x", ylabel="y", label="titik data")

Out[267]:
In [268]: #P2
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
Out[268]:3×3 Matrix{Float64}:
1.0 1.0 1.0
1.0 1.25 1.5625
1.0 1.6 2.56
In [269]: a = V \ y
a
Out[269]:3-element Vector{Float64}:
-0.5686860032288016
1.1229201638749085
-0.2532041649821257
In [270]: p = Polynomial(a)

Out[270]: -0.5686860032288016 + 1.1229201638749085∙x - 0.2532041649821257∙x2


In [271]: error_abs = abs(p(0.45) - f(0.45))

Out[271]:0.34128618275575096
In [272]: #P1
u = x[1:length(x)-1]
v = f.(u)
Out[272]:2-element Vector{Float64}:
0.30102999566398114
0.4393326938302626
In [273]: V = [u[i]^j for i=1:length(u), j=0:length(u)-1]

Out[273]:2×2 Matrix{Float64}:
1.0 1.0
1.0 1.25
In [274]: a = V \ v

Out[274]:2-element Vector{Float64}:
-0.2521807970011446
0.5532107926651257
In [275]: p = Polynomial(a)
Out[275]:-0.2521807970011446 + 0.5532107926651257∙x
In [276]: p(0.45)

Out[276]:-0.003235940301838008
In [277]: error_abs = abs(f(0.45) - p(0.45))

Out[277]:0.4526960153478862
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [278]: #2d
x = [1, 1.25, 1.6]
f(x) = exp(2x)-x
y = f.(x)
nilai_eksak = f(1.4)
Out[278]:15.044646771097048
In [279]: scatter(x, y, xlabel="x", ylabel="y", label="titik data")

Out[279]:
In [280]: #P2
V = [x[i]^j for i=1:length(x), j=0:length(x)-1]
Out[280]:3×3 Matrix{Float64}:
1.0 1.0 1.0
1.0 1.25 1.5625
1.0 1.6 2.56
In [281]: a = V \ y
a
Out[281]:3-element Vector{Float64}:
21.78210959186265
-42.246497444950634
26.853443952018633
In [282]: p = Polynomial(a)

Out[282]: 21.78210959186265 - 42.246497444950634∙x + 26.853443952018633∙x2


In [283]: error_abs = abs(p(0.45) - f(0.45))

Out[283]:6.199405030761688
In [284]: #P1
u = x[1:length(x)-1]
v = f.(u)
Out[284]:2-element Vector{Float64}:
6.38905609893065
10.932493960703473
In [285]: V = [u[i]^j for i=1:length(u), j=0:length(u)-1]

Out[285]:2×2 Matrix{Float64}:
1.0 1.0
1.0 1.25
In [286]: a = V \ v

Out[286]:2-element Vector{Float64}:
-11.784695348160641
18.17375144709129
In [287]: p = Polynomial(a)

Out[287]:-11.784695348160641 + 18.17375144709129∙x
In [288]: p(0.45)

Out[288]:-3.6065071969695595
In [289]: error_abs = abs(f(0.45) - p(0.45))

Out[289]:5.616110308126509
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [ ]: #Interpolasi Lagrange
In [115]: function Lagrange_basis(x_data)
n = length(x_data)
L = zeros(n, n)
for i in 1:n
for j in 1:n
if i == j
L[i, j] = 1.0
else
L[i, j] = 0.0
end
end
end
return L
end
Out[115]:Lagrange_basis (generic function with 1 method)
In [114]: function poly_Lagrange(x, x_data, koef)
n = length(x_data)
hasil = 0.0
for i in 1:n
term = koef[i]
for j in 1:n
if i != j
term *= (x - x_data[j]) / (x_data[i] - x_data[j])
end
end
hasil += term
end
return hasil
end
Out[114]:poly_Lagrange (generic function with 1 method)
In [116]: #2a
#P2
x = [1, 1.25, 1.6]
f(x) = sin(pi)*x
y = f.(x);
In [117]: V = Lagrange_basis(x)
V
Out[117]:3×3 Matrix{Float64}:
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
In [118]: a = V \ y
a
Out[118]:3-element Vector{Float64}:
1.2246467991473532e-16
1.5308084989341916e-16
1.9594348786357652e-16
In [119]: p = poly_Lagrange

Out[119]:poly_Lagrange (generic function with 1 method)


In [121]: p(1.4, x, a)

Out[121]:1.7145055188062946e-16
In [122]: error_abs = abs(p(1.4, x, a) - f(1.4))

Out[122]:2.465190328815662e-32
In [ ]: #P1
x = [1, 1.25]
f(x) = sin(pi)*x
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(1.4, x, a)
In [ ]: error_abs = abs(p(1.4, x, a) - f(1.4))
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [ ]: #2b
#P2
x = [1, 1.25, 1.6]
f(x) = cbrt(x-1)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(1.4, x, a)
In [ ]: error_abs = abs(p(1.4, x, a) - f(1.4))
In [ ]: #P1
x = [1, 1.25]
f(x) = cbrt(x-1)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(1.4, x, a)
In [ ]: error_abs = abs(p(1.4, x, a) - f(1.4))
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [ ]: #2c
#P2
x = [1, 1.25, 1.6]
f(x) = log(10,3x-1)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(1.4, x, a)
In [ ]: error_abs = abs(p(1.4, x, a) - f(1.4))
In [ ]: #P1
In [ ]: x = [1, 1.25]
f(x) = log(10,3x-1)
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(1.4, x, a)
In [ ]: error_abs = abs(p(1.4, x, a) - f(1.4))
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [ ]: #2d
#P2
x = [1, 1.25, 1.6]
f(x) = exp(2x)-x
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(1.4, x, a)
In [ ]: error_abs = abs(p(1.4, x, a) - f(1.4))
In [ ]: #P1
x = [1, 1.25]
f(x) = exp(2x)-x
y = f.(x);
In [ ]: V = Lagrange_basis(x)
V
In [ ]: a = V \ y
a
In [ ]: p = poly_Lagrange
In [ ]: p(1.4, x, a)
In [ ]: error_abs = abs(p(1.4, x, a) - f(1.4))
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [ ]: #Interpolasi Newton
In [192]: #2a
#P2
x1=[1, 1.25, 1.6]
f(x1)=sin(pi)*x1
y1=f.(x1);
xx=1.4
Out[192]:1.4
In [ ]: function divdif(x::Array{Float64,1},f::Array{Float64,1})
n=length(x)
d=deepcopy(f)
for i=2:n
for j=1:i-1
d[i] = (d[j] - d[i])/(x[j] - x[i])
end
end
return d
end
In [ ]: d = divdif(x1,y1)
In [ ]: function newtonform(x::Array{Float64,1}, d::Array{Float64,1}, xx::Float64)
n = length(d)
result = d[n]
for i=n-1:-1:1
result = result*(xx - x[i]) + d[i]
end
return result
end
In [ ]: n=newtonform(x1,d,xx)
In [ ]: function newton(x::Array{Float64,1},f::Array{Float64,1},xx::Float64)
divided=divdif(x,f)
result=newtonform(x,divided,xx)
return divided, result
end
In [ ]: newton(x1,y1,xx)
In [ ]: error_abs=abs(newtonform(x1,d,xx)-f(1.4))
In [ ]: #P1
u=x1[1:length(x1)-1]
v=f.(u)
In [ ]: d1=divdif(u,v)
In [ ]: n1=newtonform(u,d1,xx)
In [ ]: newton(u,v,xx)
In [ ]: error_abs=abs(newtonform(u,d1,xx)-f(1.4))
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [ ]: #2b
#P2
x1=[1, 1.25, 1.6]
f(x1)=cbrt(x1-1)
y1=f.(x1);
xx=1.4
In [ ]: function divdif(x::Array{Float64,1},f::Array{Float64,1})
n=length(x)
d=deepcopy(f)
for i=2:n
for j=1:i-1
d[i] = (d[j] - d[i])/(x[j] - x[i])
end
end
return d
end
In [ ]: d = divdif(x1,y1)
In [ ]: function newtonform(x::Array{Float64,1}, d::Array{Float64,1}, xx::Float64)
n = length(d)
result = d[n]
for i=n-1:-1:1
result = result*(xx - x[i]) + d[i]
end
return result
end
In [ ]: n=newtonform(x1,d,xx)
In [ ]: function newton(x::Array{Float64,1},f::Array{Float64,1},xx::Float64)
divided=divdif(x,f)
result=newtonform(x,divided,xx)
return divided, result
end
In [ ]: newton(x1,y1,xx)
In [ ]: error_abs=abs(newtonform(x1,d,xx)-f(1.4))
In [ ]: #P1
u=x1[1:length(x1)-1]
v=f.(u)
In [ ]: d1=divdif(u,v)
In [ ]: n1=newtonform(u,d1,xx)
In [ ]: newton(u,v,xx)
In [193]: error_abs=abs(newtonform(u,d1,xx)-f(1.4))

Out[193]:0.5924497681225828
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [200]: #2c
#P2
x1=[1, 1.25, 1.6]
f(x1)=log(10,3x1-1)
y1=f.(x1);
xx=1.4
Out[200]:1.4
In [201]: function divdif(x::Array{Float64,1},f::Array{Float64,1})
n=length(x)
d=deepcopy(f)
for i=2:n
for j=1:i-1
d[i] = (d[j] - d[i])/(x[j] - x[i])
end
end
return d
end
Out[201]:divdif (generic function with 1 method)
In [ ]: d = divdif(x1,y1)
In [ ]: function newtonform(x::Array{Float64,1}, d::Array{Float64,1}, xx::Float64)
n = length(d)
result = d[n]
for i=n-1:-1:1
result = result*(xx - x[i]) + d[i]
end
return result
end
In [ ]: n=newtonform(x1,d,xx)
In [ ]: function newton(x::Array{Float64,1},f::Array{Float64,1},xx::Float64)
divided=divdif(x,f)
result=newtonform(x,divided,xx)
return divided, result
end
In [ ]: newton(x1,y1,xx)
In [ ]: error_abs=abs(newtonform(x1,d,xx)-f(1.4))
In [ ]: #P1
u=x1[1:length(x1)-1]
v=f.(u)
In [ ]: d1=divdif(u,v)
In [ ]: n1=newtonform(u,d1,xx)
In [ ]: newton(u,v,xx)
In [ ]: error_abs=abs(newtonform(u,d1,xx)-f(1.4))
In [ ]: #Jadi, 2 memiliki error absolut yang lebih kecil dari 1
In [199]: #2d
#P2
x1=[1, 1.25, 1.6]
f(x1)=exp(2x1)-x1
y1=f.(x1);
xx=1.4
Out[199]:1.4
In [ ]: function divdif(x::Array{Float64,1},f::Array{Float64,1})
n=length(x)
d=deepcopy(f)
for i=2:n
for j=1:i-1
d[i] = (d[j] - d[i])/(x[j] - x[i])
end
end
return d
end
In [ ]: d = divdif(x1,y1)
In [ ]: function newtonform(x::Array{Float64,1}, d::Array{Float64,1}, xx::Float64)
n = length(d)
result = d[n]
for i=n-1:-1:1
result = result*(xx - x[i]) + d[i]
end
return result
end
In [ ]: n=newtonform(x1,d,xx)
In [ ]: function newton(x::Array{Float64,1},f::Array{Float64,1},xx::Float64)
divided=divdif(x,f)
result=newtonform(x,divided,xx)
return divided, result
end
In [ ]: newton(x1,y1,xx)
In [ ]: error_abs=abs(newtonform(x1,d,xx)-f(1.4))
In [ ]: #P1
u=x1[1:length(x1)-1]
v=f.(u)
In [ ]: d1=divdif(u,v)
In [ ]: n1=newtonform(u,d1,xx)
In [ ]: newton(u,v,xx)
In [ ]: error_abs=abs(newtonform(u,d1,xx)-f(1.4))
In [ ]: #Jadi, 1 memiliki error absolut yang lebih kecil dari 2
In [317]: #19
#19a
days = [0, 6, 10, 13, 17, 20, 28]
sample1_weights = [6.67, 17.33, 42.67, 37.33, 30.10, 29.31, 28.74]
sample2_weights = [6.67, 16.11, 18.89, 15.00, 10.56, 9.44, 8.89]
Out[317]:7-element Vector{Float64}:
6.67
16.11
18.89
15.0
10.56
9.44
8.89
In [321]: function lagrange_interpolation(x, x_values, y_values)
n = length(x_values)
interpolating_polynomial = zeros(length(x))
for k in 1:length(x)
for i in 1:n
basis_polynomial = 1
for j in 1:n
if i != j
basis_polynomial *= (x[k] - x_values[j]) / (x_values[i] - x_values[j])
end
end
interpolating_polynomial[k] += basis_polynomial * y_values[i]
end
end
return interpolating_polynomial
end
Out[321]:lagrange_interpolation (generic function with 1 method)
In [322]: x = collect(0:0.01:28) # x values for interpolation
sample1_interp = lagrange_interpolation(x, days, sample1_weights)
sample2_interp = lagrange_interpolation(x, days, sample2_weights)
Out[322]:2801-element Vector{Float64}:
6.67
6.613508797792084
6.557597678228147
6.502264167807856
6.447505799214746
6.393320111307194
6.33970464910942
6.286656963802466
6.234174612715219
6.182255159315382
6.130896173200555
6.080095230089179
6.029849911811626

8.479216778431663
8.515008143272432
8.55110559420495
8.587510597911153
8.624224625518906
8.661249152609818
8.698585659226941
8.736235629882668
8.7742005535664
8.812481923752472
8.851081238407836
8.89
In [323]: #19b
max_sample1_weight = maximum(sample1_interp)
max_sample2_weight = maximum(sample2_interp)
Out[323]:19.415750227544443
In [324]: println("Approximate maximum average weight for Sample 1: ", max_sample1_weight)
println("Approximate maximum average weight for Sample 2: ", max_sample2_weight)
Approximate maximum average weight for Sample 1: 42.7084189092004
Approximate maximum average weight for Sample 2: 19.415750227544443

You might also like