def newtonRaphson2(f,x,tol=1.0e-9): def jacobian(f,x): h = 1.0e-4 n = len(x) jac = np.zeros((n,n)) f0 = f(x) for i in range(n): temp = x[i] x[i] = temp + h f1 = f(x) x[i] = temp jac[:,i] = (f1 - f0)/h return jac,f0 for i in range(30): jac,f0 = jacobian(f,x) if math.sqrt(np.dot(f0,f0)/len(x)) < tol: return x dx = alg.gaussPivot(jac,-f0) x = x + dx if math.sqrt(np.dot(dx,dx)) < tol*max(max(abs(x)),1.0): return x print('Too many iterations')
a = 1 - (lam / 0.1) # nilai untuk diagonal kiri b = 1 + (lam / 0.1) # nilai untuk diagonal kanan A = np.zeros([n, n]) B = np.zeros([n]) # Ax = B # Matriks A for i in range(0, n): for j in range(0, n): # loop dari 0 sampai 9 if (i == j): A[i, j] = -2 # nilai diagonal if ((j-1) >= 0): # kondisi agar tidak melebihi ukuran matriks A[i, j - 1] = 1 - (lam / r[i]) # nilai diagonal kiri if ((j+1) <= n-1): A[i, j + 1] = 1 + (lam / r[i]) # nilai diagonal kanan A[0,0] = -3 ; A[0,1] = 4 ; A[0,2] = -1 # definisi titik awal print("Matriks A adalah \n", A,"\n") # Matriks B s = float(input("masukkan nilai S : ")) # input nilai s for i in range(1, n - 1): # loop dari 1 sampai 8 B[i] = -s * h**2 B[n - 1] = -s * h**2 - (1 + lam/r[n-1]) # nilai untuk baris terakhir #print("Matriks B adalah \n",B) C = gaussPivot(A,B) for i in range(0,n): print("Nilai dari T_{:d} adalah {:7.6f}".format(i,C[i])) plt.title('Grafik Soal 27.24') plt.xlabel("Jari-jari (r)") ; plt.ylabel("T(r)") plt.plot(r,C) ; plt.show()