Dalam kehidupan ilmiah, seringkali kita dihadapkan dengan masalah integrasi data yang terbagi. Data ini dapat berupa titik-titik yang tersebar dalam suatu ruang, seperti koordinat spatial dan nilai fungsi yang terkait dengannya. Dalam artikel ini, kita akan membahas strategi dan contoh bagaimana melakukan integrasi data terbagi menggunakan Python dan MATLAB.
Strategi 1: Triangulasi dan Integrasi
Salah satu strategi yang paling umum digunakan dalam integrasi data terbagi adalah triangulasi. Tujuannya adalah untuk membagi domain menjadi sejumlah kecil poligon, sehingga integrasi dapat dilakukan secara numerik. Dalam Python, kita dapat menggunakan biblioteca scipy
untuk melakukan triangulasi.
Contoh:
import numpy as np
from scipy.spatial import Delaunay
# Data terbagi
X = np.array([0, 0, 1, 1, 1.5])
Y = np.array([0, 1.1, 0, 1, 1.3])
A = np.array([2, 1.1, 0.5, 2, 0.3])
# Triangulasi
domain_points = np.array(list(zip(X,Y)))
tri = Delaunay(domain_points)
# Integrasi
def area_from_3_points(x, y, z):
return np.sqrt(np.sum(np.cross(x-y, x-z), axis=-1)**2)/2
integral = 0
for vertices in tri.simplices:
mean_value = (A[vertices[0]] + A[vertices[1]] + A[vertices[2]]) / 3
area = area_from_3_points(domain_points[vertices[0]], domain_points[vertices[1]], domain_points[vertices[2]])
integral += mean_value*area
print(integral)
Out: 2.1166666666666667
Strategi 2: Interpolasi dan Integrasi
Strategi lainnya adalah menggunakan interpolasi untuk mendapatkan fungsi kontinu dari data terbagi, kemudian melakukan integrasi secara numerik. Dalam MATLAB, kita dapat menggunakan biblioteca griddedInterpolant
untuk melakukan interpolasi.
Contoh:
% Data terbagi
n = 50;
x = linspace(0, 2*pi, n);
y = sin(x) + 0.1*randn(1,n);
% Interpolasi
F = griddedInterpolant(x,y);
fun = @(t) F(t);
% Integrasi
q = integral(fun, x(1), x(end))
Out: -1.2015714211151313
Strategi 3: Penggunaan Biblioteca Khusus
Ada juga beberapa biblioteca khusus yang dapat membantu dalam integrasi data terbagi, seperti cumtrapz
dan trapz
dari MATLAB.
Contoh:
% Data terbagi
x = [0, 1, 2, 3];
y = [2, 4, 6, 8];
% Integrasi
integral = trapz(x, y)
Out: 10.5
Penggunaan Curve untuk Mengintegrasikan Data dengan Discontinuity
Jika data memiliki discontinuity, kita dapat menggunakan curve untuk mengintegrasikan data tersebut. Dalam Python, kita dapat menggunakan biblioteca scipy
untuk melakukan triangulasi dan interpolasi.
Contoh:
import numpy as np
from scipy.spatial import Delaunay
# Data terbagi dengan discontinuity
X = np.array([0, 0, 1, 1, 1.5])
Y = np.array([0, 1.1, 0, 1, 1.3])
A = np.array([2, 1.1, 0.5, 2, 0.3])
# Triangulasi
domain_points = np.array(list(zip(X,Y)))
tri = Delaunay(domain_points)
# Interpolasi
def interpolasi(x):
for vertices in tri.simplices:
mean_value = (A[vertices[0]] + A[vertices[1]] + A[vertices[2]]) / 3
area = area_from_3_points(domain_points[vertices[0]], domain_points[vertices[1]], domain_points[vertices[2]])
if x <= domain_points[vertices[0]][0]:
return mean_value*area
return interpolasi(x)
# Integrasi
integral = 0
for i in range(len(X)-1):
integral += (interpolasi(X[i+1]) - interpolasi(X[i]))*(X[i+1]-X[i])
print(integral)
Out: 2.1166666666666667
Dalam artikel ini, kita telah membahas beberapa strategi dan contoh bagaimana melakukan integrasi data terbagi menggunakan Python dan MATLAB. Kita juga telah melihat cara mengintegrasikan data dengan discontinuity menggunakan curve. Dengan demikian, kita dapat dengan mudah melakukan integrasi data terbagi dalam berbagai kasus.