Kalkulus 2.1
unknown
python
2 years ago
1.8 kB
3
Indexable
import numpy as np def g(x): y = np.e**(x**2/2) return y # Latihan 2.1 bagian a def euler(x_end, step_size): def f(x, y): return x*y x = 0 xfin = x_end y = 1 h = step_size xlist = [] ylist = [1.0] j = 0 while j >= 0: xj = x + j*h if xj > xfin: break xlist.append(xj) j += 1 for i in range(len(xlist)-1): yi = y + f(x, y)*h x += h ylist.append(yi) y = yi return [xlist, ylist] xlist_euler5 = euler(2, 0.5)[0] ylist_euler5 = euler(2, 0.5)[1] ylistanl1 = [] for k in xlist_euler5: ylistanl1.append(g(k)) print(33*"-") ; print(2*" ", "METODE EULER DENGAN H = 0.5", 2*" ") ; print(33*"-") dict1 = {} for l in range(len(xlist_euler5)): dict1[l+1] = [xlist_euler5[l], ylist_euler5[l], ylistanl1[l]] print ("{:<4} {:<6} {:<10} {:<10}".format('No','x','y numerik','y analitik')) for n, v in dict1.items(): x, y_numerik, y_analitik = v print ("{:<4} {:<6} {:<10} {:<10.5f}".format(n, x, y_numerik, y_analitik)) print('') # Latihan 2.1 bagian b xlist_euler2 = euler(2, 0.2)[0] ylist_euler2 = euler(2, 0.2)[1] ylistanl2 = [] for k in xlist_euler2: ylistanl2.append(g(k)) print(33*"-") ; print(2*" ", "METODE EULER DENGAN H = 0.2", 2*" ") ; print(33*"-") dict2 = {} for l in range(len(xlist_euler2)): dict2[l+1] = [xlist_euler2[l], ylist_euler2[l], ylistanl2[l]] print ("{:<4} {:<6} {:<10} {:<10}".format('No','x','y numerik','y analitik')) for n, v in dict2.items(): x, y_numerik, y_analitik = v print ("{:<4} {:<6.1f} {:<10.5f} {:<10.5f}".format(n, x, y_numerik, y_analitik)) print('') # Latihan 2.1 bagian c import matplotlib.pyplot as plt xfine = np.linspace(0, 2, 100) yfine = g(xfine) plt.plot(xlist_euler5, ylist_euler5, 'o-r', xlist_euler2, ylist_euler2, 'x-g', xfine, yfine, '-k') plt.legend(['h = 0.5', 'h = 0.2', 'Analitik']) plt.show()
Editor is loading...