Program Integral Numerik Metode Simpson 1/3 Menggunakan Python

Soal

Diketahui tabel dari nilai-nilai suatu fungsi sebagai berikut:
index nilai Xi nilai Yi
0 3 10
1 5 10
2 7 8
3 9 8
4 11 8
5 13 5
6 15 3

Tentukan
  • Luas area dari Xi = 3 sampai Xi=7
  • Luas area dari semua nilai Xi yang diketahui oleh tabel

Code

Silahkan copas code, berikut:

beri nama file dengan nama simpson3.py

Hasil
  • single
    list = [[3,10],[5,10],[7,9]]
    print(simpson3_single(list))


  • composit
    list = [[3,10],[5,10],[7,8],[9,8],[11,8],[13,5],[15,3]]
    print(simpson3_composit(list))

Penjelasan Code

# declare library
import numpy as np
menggunakan library numpy untuk mempermudah proses pengolahan array

# check consistency
def check_consistency(list_x):
        cond = True
        msg = "x consistent"
        h = list_x[1]-list_x[0]
        for i in range(1,len(list_x)-1):
            if(list_x[i+1]-list_x[i]!=h):
                cond = False
                msg = "in index : "+str(i+1)+" in consistence"
                break
        return cond,msg
    # check variable
    # print(list_x)
    # print(check_consistency(list_x)[0])
membuat fungsi untuk mengecheck ke konsistensian dari nilai x, agar semua nilai tabel yang ada bisa digunakan. Cara kerjanya adalah mengecheck semua nilai selisih antara nilai x sekarang mengurangi  nilai x selanjutnya. Apabila terjadi kesalahan, maka fungsi akan langsung memberikan nilai kembalian yang indeks ke 0 berupa False, dan indeks ke 1 berupa message dimana indeks nilainya tidak konsisten (sama). Jika sampai akhir tidak ada masalah.Kembalian nilai dari fungsi indeks ke0 berupa True dan message yang menyatakan "x consistent".

# single case
def simpson3_single(list):
    list_x=np.array(list)[:,0]
    list_y=np.array(list)[:,1]

    # handle return value from check_consistency function
    res_1 = check_consistency(list_x)

    # final result
    if(res_1[0]):
        # print(((list_x[1]-list_x[0])/3))
        # print(sum([list_y[0],4*list_y[1],list_y[2]]))
        h = abs(list_x[1]-list_x[0])
        return (h/3)*sum([list_y[0],4*list_y[1],list_y[2]])
    else:
        return (res_1[1])
fungsi simpson3_single ini membutuhkan parameter list, kemudian akan mengembalikan nilai yang berasal dari luas = h/3*(f(0)+4f(1)+f(2)). Seperti yang tertulis pada return return (h/3)*sum([list_y[0],4*list_y[1],list_y[2]]).

def simpson3_composit(list):
    list_x=np.array(list)[:,0]
    list_y=np.array(list)[:,1]
   
    # handle return value from check_consistency function
    res_1 = check_consistency(list_x)
    if(res_1[0]):
        h = abs(list_x[1]-list_x[0])
        y_ganjil = []
        y_genap = []
        for i in range(1,len(list_y)-1):
            if(i%2==0):
                y_genap.append(list_y[i])
            else:
                y_ganjil.append(list_y[i])
        print(h/3,y_ganjil,y_genap)
        return (h/3)*(sum([list_y[0],4*sum(y_ganjil),2*sum(y_genap),list_y[len(list_y)-1]]))
    else:
        return res_1[1]
fungsi simpson3_composit, tidak jauh cara kerjanya dengan yang single hanya saja untuk rumus menggunakan luas = h/3*(f(0) + 4*f(i<ganjil>) + 2*f(i<genap>) + f(n)). Sesuai yang ada pada baris code return (h/3)*(sum([list_y[0],4*sum(y_ganjil),2*sum(y_genap),list_y[len(list_y)-1]]))



Sekian dan Terimakasih

 


Posting Komentar untuk "Program Integral Numerik Metode Simpson 1/3 Menggunakan Python"