{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyMH3asbQXyuco/LVMa3u+T7"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":1,"metadata":{"id":"BdV0UQyUvL8P","executionInfo":{"status":"ok","timestamp":1679530613027,"user_tz":180,"elapsed":834,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"outputs":[],"source":["import math\n","import sympy as sp"]},{"cell_type":"code","source":["def bissec( f, a, b, eps = 1.0e-10 ):\n","\n"," niter = 0\n","\n"," f_a = f( a )\n"," f_b = f( b )\n","\n"," while ( b - a ) > 2.0 * eps:\n","\n"," niter += 1\n","\n"," c = ( b + a ) / 2.0\n"," f_c = f( c )\n","\n"," if f_a * f_c < 0.0:\n"," b = c\n"," f_b = f_c\n"," elif f_b * f_c < 0.0:\n"," a = c\n"," f_a = f_c\n"," else:\n"," return c\n","\n"," print( niter )\n"," \n"," return ( b + a ) / 2.0"],"metadata":{"id":"SbqCyUjWvW_-","executionInfo":{"status":"ok","timestamp":1679530614665,"user_tz":180,"elapsed":4,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":["a = 3.0\n","b = 3.2\n","eps = 1.0e-13\n","print( bissec( math.sin, a, b, eps = eps ) - math.pi )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"BYz3NOslv2j6","executionInfo":{"status":"ok","timestamp":1679530619148,"user_tz":180,"elapsed":266,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"f445138e-a3c1-453a-9e0b-547fdbc40c10"},"execution_count":3,"outputs":[{"output_type":"stream","name":"stdout","text":["40\n","5.81756864903582e-14\n"]}]},{"cell_type":"code","source":["print( math.ceil( math.log( ( b - a ) / eps ) / math.log( 2.0 ) - 1 ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"EydGCJYCwByt","executionInfo":{"status":"ok","timestamp":1679530623850,"user_tz":180,"elapsed":257,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"b42a494a-8878-41c0-dea0-ab94ff235707"},"execution_count":4,"outputs":[{"output_type":"stream","name":"stdout","text":["40\n"]}]},{"cell_type":"code","source":["g, h, r, x = sp.symbols( 'g, h, r, x', positive = True )"],"metadata":{"id":"yQYtHeqUzF8g","executionInfo":{"status":"ok","timestamp":1679530634072,"user_tz":180,"elapsed":271,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["print( type( h ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"tjtUyhsg4AeP","executionInfo":{"status":"ok","timestamp":1679530638447,"user_tz":180,"elapsed":269,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"585fae64-7ab4-47a5-f4d4-28499fd34346"},"execution_count":6,"outputs":[{"output_type":"stream","name":"stdout","text":["\n"]}]},{"cell_type":"code","source":["f_tmp = sp.simplify( sp.integrate( sp.sqrt( r ** 2 - x ** 2 ), ( x, 0, h ) ) )"],"metadata":{"id":"QutRsSqF3blG","executionInfo":{"status":"ok","timestamp":1679530776802,"user_tz":180,"elapsed":403,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":9,"outputs":[]},{"cell_type":"code","source":["f_tmp"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":56},"id":"iFQovpqP6-g_","executionInfo":{"status":"ok","timestamp":1679530788325,"user_tz":180,"elapsed":254,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"d77ebb2c-d6f0-4fb9-d4f6-b4dd2c6c0a38"},"execution_count":10,"outputs":[{"output_type":"execute_result","data":{"text/plain":["h*sqrt(-h**2 + r**2)/2 + r**2*asin(h/r)/2"],"text/latex":"$\\displaystyle \\frac{h \\sqrt{- h^{2} + r^{2}}}{2} + \\frac{r^{2} \\operatorname{asin}{\\left(\\frac{h}{r} \\right)}}{2}$"},"metadata":{},"execution_count":10}]},{"cell_type":"code","source":["def cria_fun( L, raio ):\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_tmp = 2 * f_tmp.subs( g, r - h )\n","\n"," f_tmp = sp.lambdify( [ h, r ], f_tmp )\n","\n"," def f( h ):\n"," return L * ( math.pi * ( raio ** 2 ) / 2 - f_tmp( h, raio ) )\n","\n"," return f"],"metadata":{"id":"HxX9AAUx7G5n","executionInfo":{"status":"ok","timestamp":1679531106983,"user_tz":180,"elapsed":4,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":19,"outputs":[]},{"cell_type":"code","source":["f = cria_fun( 10.0, 1.0 )"],"metadata":{"id":"IXKxmpfP8SXH","executionInfo":{"status":"ok","timestamp":1679531343658,"user_tz":180,"elapsed":242,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":23,"outputs":[]},{"cell_type":"code","source":["def cria_obj( L, r, v ):\n","\n"," g = cria_fun( L, r )\n"," def f( h ):\n"," return g( h ) - v\n","\n"," return f"],"metadata":{"id":"2CqZ2uKg8fNO","executionInfo":{"status":"ok","timestamp":1679531588998,"user_tz":180,"elapsed":263,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}}},"execution_count":27,"outputs":[]},{"cell_type":"code","source":["F = cria_obj( 10.0, 1.0, 15.0 )\n","print( F( 0.9 ) )\n","print( F( 1.0 ) )"],"metadata":{"id":"txM4SwQo8itW","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1679531899882,"user_tz":180,"elapsed":4,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"ca44e79a-e970-44e2-b827-497bbb984f58"},"execution_count":30,"outputs":[{"output_type":"stream","name":"stdout","text":["-1.2886983807732513\n","0.7079632679489656\n"]}]},{"cell_type":"code","source":["h = bissec( F, 0.9, 1.0, 1e-12 )\n","print( h )\n","print( F( h ) )"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9bv1wBnG4qll","executionInfo":{"status":"ok","timestamp":1679532055060,"user_tz":180,"elapsed":243,"user":{"displayName":"Elias Salomão Helou Neto","userId":"05204382143186061711"}},"outputId":"f9eac2f7-99ba-4865-d607-2e8eb8a63600"},"execution_count":32,"outputs":[{"output_type":"stream","name":"stdout","text":["36\n","0.9645944380819855\n","9.920952948050399e-12\n"]}]},{"cell_type":"code","source":[],"metadata":{"id":"eNHoye0y53O5"},"execution_count":null,"outputs":[]}]}