{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyPOzKYOuPHNm5hx0VR3PYO/"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":1,"metadata":{"id":"I0ChhX1Q-00I","executionInfo":{"status":"ok","timestamp":1680138364233,"user_tz":180,"elapsed":1092,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"outputs":[],"source":["import math\n","import sympy as sp"]},{"cell_type":"code","source":["def newton( f, df, x, eps = 1e-10 ):\n","\n"," stop = False\n","\n"," niter = 0\n","\n"," while not stop:\n","\n"," niter += 1\n","\n"," x_pre = x\n"," x = x - f( x ) / df( x )\n","\n"," stop = ( abs( x - x_pre ) <= eps )\n","\n"," print( niter )\n"," \n"," return x"],"metadata":{"id":"N9210WIk_1pO","executionInfo":{"status":"ok","timestamp":1680138366095,"user_tz":180,"elapsed":6,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":["print( newton( math.sin, math.cos, 30.0, 1e-15 ) / math.pi )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"tnUntFLQ__8E","executionInfo":{"status":"ok","timestamp":1680138367524,"user_tz":180,"elapsed":5,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"3b876e76-966b-4320-a60b-24cc54c7e0cb"},"execution_count":3,"outputs":[{"output_type":"stream","name":"stdout","text":["7\n","13.000000000000002\n"]}]},{"cell_type":"code","source":["print( newton( math.sin, math.cos, 3.0, 1e-15 ) - math.pi )"],"metadata":{"id":"WEQxTO9h2UuE","executionInfo":{"status":"ok","timestamp":1680138370894,"user_tz":180,"elapsed":7,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"bc089a42-2bee-4e12-b4d1-4e9328132718","colab":{"base_uri":"https://localhost:8080/"}},"execution_count":4,"outputs":[{"output_type":"stream","name":"stdout","text":["4\n","0.0\n"]}]},{"cell_type":"code","source":["print( newton( lambda x : math.cos( x ) + 1.0, lambda x : -math.sin( x ), 3.0, 1e-7 ) - math.pi )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Iz49L7PiClZU","executionInfo":{"status":"ok","timestamp":1680138372797,"user_tz":180,"elapsed":5,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"6f1f30ef-f63d-4d9d-c575-8ac633f6e0fb"},"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["21\n","-6.725136536545051e-08\n"]}]},{"cell_type":"code","source":["def cria_fun( L, raio, V ):\n","\n"," g, h, r, x = sp.symbols( 'g, h, r, x', positive = True )\n"," f_tmp = sp.simplify( sp.integrate( sp.sqrt( r ** 2 - x ** 2 ), ( x, 0, g ) ) )\n"," f = 2 * f_tmp.subs( g, r - h )\n"," df = sp.diff( f, h )\n","\n"," f_tmp = sp.lambdify( [ h, r ], f )\n"," df_tmp = sp.lambdify( [ h, r ], df )\n","\n"," def f( h ):\n"," return L * ( math.pi * ( raio ** 2 ) / 2 - f_tmp( h, raio ) ) - V\n","\n"," def df( h ):\n"," return -L * df_tmp( h, raio )\n","\n"," return f, df"],"metadata":{"id":"vsmpdUEJEG-9","executionInfo":{"status":"ok","timestamp":1680138376001,"user_tz":180,"elapsed":5,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["f, df = cria_fun( 10.0, 1.0, 5.0 )"],"metadata":{"id":"ug6vFR-YHRO8","executionInfo":{"status":"ok","timestamp":1680138412864,"user_tz":180,"elapsed":3,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":11,"outputs":[]},{"cell_type":"code","source":["h = newton( f, df, 0.9, 1e-12 )\n","print( h )\n","print( f( h ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"q-cbpo-osXQG","executionInfo":{"status":"ok","timestamp":1680138415289,"user_tz":180,"elapsed":4,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"92a2a537-9acf-468f-ada1-358c5621cd74"},"execution_count":12,"outputs":[{"output_type":"stream","name":"stdout","text":["5\n","0.43246019539984165\n","0.0\n"]}]},{"cell_type":"code","source":["def newton_seq( f, df, x, eps = 1e-10 ):\n","\n"," stop = False\n","\n"," x_seq = [ x ]\n","\n"," while not stop:\n","\n"," x_pre = x\n"," x = x - f( x ) / df( x )\n","\n"," x_seq.append( x )\n","\n"," stop = ( abs( x - x_pre ) <= eps )\n"," \n"," return x_seq"],"metadata":{"id":"HO5nCNcjspVt","executionInfo":{"status":"ok","timestamp":1680138419356,"user_tz":180,"elapsed":381,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":13,"outputs":[]},{"cell_type":"code","source":["def estima_q( x, x_lim = None ):\n","\n"," if x_lim is None:\n"," x_lim = x[ -1 ]\n","\n"," while x[ -1 ] == x_lim:\n"," x = x[ : -1 ]\n","\n"," return math.log( abs( x[ -1 ] - x_lim ) / abs( x[ -2 ] - x_lim ) ) / math.log( abs( x[ -2 ] - x_lim ) / abs( x[ -3 ] - x_lim ) )"],"metadata":{"id":"_W7ujEQQDWam","executionInfo":{"status":"ok","timestamp":1680138422483,"user_tz":180,"elapsed":5,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":14,"outputs":[]},{"cell_type":"code","source":["h = newton_seq( f, df, 0.9, 1e-12 )\n","print( estima_q( h ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"FYFYZFJdDYhd","executionInfo":{"status":"ok","timestamp":1680138457039,"user_tz":180,"elapsed":5,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"96ed47a6-f1bc-47c1-f243-0400518a3c61"},"execution_count":15,"outputs":[{"output_type":"stream","name":"stdout","text":["1.9971570045420748\n"]}]},{"cell_type":"code","source":[],"metadata":{"id":"5YD2MX_1Dkuu"},"execution_count":null,"outputs":[]}]}