{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyPRU8erjinGfx0yYQbv2IdH"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":1,"metadata":{"id":"z3pIWZge0eC8","executionInfo":{"status":"ok","timestamp":1680137264045,"user_tz":180,"elapsed":1693,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"outputs":[],"source":["import math\n","import sympy as sp"]},{"cell_type":"code","source":["def secante( f, x_pre, x, eps = 1e-10 ):\n","\n"," niter = 0\n","\n"," f_x = f( x )\n"," f_x_pre = f( x_pre )\n","\n"," while abs( x_pre - x ) >= eps:\n","\n"," niter += 1\n","\n"," x_tmp = x - f_x * ( x - x_pre ) / ( f_x - f_x_pre )\n"," \n"," x_pre = x\n"," f_x_pre = f_x\n"," \n"," x = x_tmp\n"," f_x = f( x )\n","\n"," print( niter )\n"," \n"," return x"],"metadata":{"id":"N1a2jiYv0jcC","executionInfo":{"status":"ok","timestamp":1680137266156,"user_tz":180,"elapsed":2,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":["print( secante( math.sin, 3.0, 3.1, 1e-15 ) - math.pi )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"2Ck4GdiS2DxO","executionInfo":{"status":"ok","timestamp":1680137269921,"user_tz":180,"elapsed":299,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"2baedcdf-1384-4323-fbca-6c6ceef8de42"},"execution_count":3,"outputs":[{"output_type":"stream","name":"stdout","text":["4\n","0.0\n"]}]},{"cell_type":"code","source":["print( secante( lambda x : math.cos( x ) + 1.0, 3.0, 3.1, 1e-7 ) - math.pi )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"NU41wL5i2KAk","executionInfo":{"status":"ok","timestamp":1680137271690,"user_tz":180,"elapsed":5,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"f077a739-ca79-43e2-96d3-ddff57b1d8c6"},"execution_count":4,"outputs":[{"output_type":"stream","name":"stdout","text":["27\n","-1.1094481511264576e-07\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","\n"," def f( h ):\n"," return L * ( math.pi * ( raio ** 2 ) / 2 - f_tmp( h, raio ) ) - V\n","\n"," return f"],"metadata":{"id":"LP1a4tD02g-0","executionInfo":{"status":"ok","timestamp":1680137274094,"user_tz":180,"elapsed":268,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["f = cria_fun( 10.0, 1.0, 5.0 )"],"metadata":{"id":"rbfjqqcr3Gpk","executionInfo":{"status":"ok","timestamp":1680138263802,"user_tz":180,"elapsed":407,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":31,"outputs":[]},{"cell_type":"code","source":["h = secante( f, 1.0, 0.9, 1e-12 )\n","print( h )\n","print( f( h ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eJDD2qEW3JiU","executionInfo":{"status":"ok","timestamp":1680138265115,"user_tz":180,"elapsed":421,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"8bffb9fc-1457-4a34-cd88-264fa1cc10de"},"execution_count":32,"outputs":[{"output_type":"stream","name":"stdout","text":["7\n","0.43246019539984165\n","0.0\n"]}]},{"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":"ruMjj7bf3Ohj","executionInfo":{"status":"ok","timestamp":1680137326641,"user_tz":180,"elapsed":267,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":14,"outputs":[]},{"cell_type":"code","source":["x = [ 1 / k ** 20 for k in range( 1, 100 ) ]\n","print( estima_q( x, 0.0 ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pxJDGviw9FvV","executionInfo":{"status":"ok","timestamp":1680137328373,"user_tz":180,"elapsed":376,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"388eefe2-215f-4bd2-9d3a-63cbcee605c1"},"execution_count":15,"outputs":[{"output_type":"stream","name":"stdout","text":["0.9898475404403341\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":"mJ6Izznh9PVU","executionInfo":{"status":"ok","timestamp":1680137330229,"user_tz":180,"elapsed":380,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":16,"outputs":[]},{"cell_type":"code","source":["x = newton_seq( math.sin, math.cos, 3.0, 1e-16 )\n","print( estima_q( x ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9n53f_Yg9ym0","executionInfo":{"status":"ok","timestamp":1680138330335,"user_tz":180,"elapsed":269,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"0fe18987-09c0-468c-9e68-91377dbb210b"},"execution_count":35,"outputs":[{"output_type":"stream","name":"stdout","text":["3.001610578515939\n"]}]},{"cell_type":"code","source":["def secante_seq( f, x_pre, x, eps = 1e-10 ):\n","\n"," f_x = f( x )\n"," f_x_pre = f( x_pre )\n","\n"," x_seq = [ x_pre, x ]\n","\n"," while abs( x_pre - x ) >= eps:\n","\n"," x_tmp = x - f_x * ( x - x_pre ) / ( f_x - f_x_pre )\n"," \n"," x_pre = x\n"," f_x_pre = f_x\n"," \n"," x = x_tmp\n"," f_x = f( x )\n","\n"," x_seq.append( x )\n","\n"," return x_seq"],"metadata":{"id":"-GFFyUFO9-Le","executionInfo":{"status":"ok","timestamp":1680137336291,"user_tz":180,"elapsed":251,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":18,"outputs":[]},{"cell_type":"code","source":["x = secante_seq( math.sin, 3.1, 3.0, 1e-16 )\n","print( estima_q( x, math.pi ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eFc75mzh-0-S","executionInfo":{"status":"ok","timestamp":1680137338659,"user_tz":180,"elapsed":408,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"461b7516-a60c-4714-8b3b-37e5b8d12b83"},"execution_count":19,"outputs":[{"output_type":"stream","name":"stdout","text":["3.3244996142627086\n"]}]},{"cell_type":"code","source":["h = secante_seq( f, 1.0, 0.9, 1e-12 )\n","print( estima_q( h ) )\n","print( estima_q( h[ : : 2 ] ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UB0n8tLt-9EK","executionInfo":{"status":"ok","timestamp":1680138295669,"user_tz":180,"elapsed":5,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"083bb68b-1d92-41c1-d861-fb172e19d587"},"execution_count":34,"outputs":[{"output_type":"stream","name":"stdout","text":["1.669789915932748\n","2.653753678824253\n"]}]},{"cell_type":"code","source":["print( h )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Ns6eih5r_LMj","executionInfo":{"status":"ok","timestamp":1679701225997,"user_tz":180,"elapsed":378,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"cb16f6a1-b4f5-4e50-ee27-f586f4a1b4e7"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["[0.9, 1.0, 0.8643754554166976, 0.8641843141833089, 0.8641831221687647, 0.8641831221529108, 0.8641831221529108]\n"]}]},{"cell_type":"code","source":["print( ( 1 + 5 ** 0.5 ) / 2 )\n","print( ( ( 1 + 5 ** 0.5 ) / 2 ) ** 2 )"],"metadata":{"id":"p2eLt3sN_tbT","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1680137866369,"user_tz":180,"elapsed":4,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"21ca60e5-481d-4d9c-a094-772e65b66ec3"},"execution_count":30,"outputs":[{"output_type":"stream","name":"stdout","text":["1.618033988749895\n","2.618033988749895\n"]}]},{"cell_type":"code","source":[],"metadata":{"id":"gQYxR4l3Aib5"},"execution_count":null,"outputs":[]}]}