Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
restrepo
GitHub Repository: restrepo/ComputationalMethods
Path: blob/master/homework/Homework_2018_1_06_1032478036.ipynb
934 views
Kernel: Python 3

Tarea

Modificar los puntos tratados en clase para que la gráfica del polinomio de ajuste tenga dos mínimos, uno relativo y otro absoluto

import numpy as np %pylab inline import pandas as pd from scipy import optimize
Populating the interactive namespace from numpy and matplotlib

Se crea el dataFrame con las coordenadas de los puntos modificados. Se calcula el polinomio de ajuste P y se imprime en pantalla

df=pd.DataFrame({'x':[0.3,0.5,1.3,3.,4.,5.2,6.,7,8.3], 'y':[0.11406,-0.1775,-1.87334,3.10704,30.8025,17.56,47.7822,150.564,287.847]}) coeffs=np.polyfit(df.x,df.y,deg=8) P=np.poly1d(coeffs) print(P)
8 7 6 5 4 3 2 0.02026 x - 0.6494 x + 8.377 x - 55.56 x + 201 x - 388.8 x + 371.2 x - 155.2 x + 22.26

Se grafica dicho polinomio y los puntos

x=np.linspace(df.x[0],df.x[8]) plt.plot(x,P( x)) plt.plot(df.x,df.y,'ro')
[<matplotlib.lines.Line2D at 0x7f28b75d96d8>]
Image in a Jupyter notebook

Con la función de Scipy optimize.fmin_powell se calculan ambos mínimos y se muestran en pantalla

print ('1.El mínimo absoluto es: {} \n2.El mínimo relativo es: {}'.format(optimize.fmin_powell(P,1),optimize.fmin_powell(P,5)))
Optimization terminated successfully. Current function value: -17.276721 Iterations: 2 Function evaluations: 22 Optimization terminated successfully. Current function value: 17.559418 Iterations: 2 Function evaluations: 27 1.El mínimo absoluto es: 2.1465208066666275 2.El mínimo relativo es: 5.195937399239239

Utilizando la función de Scipy optimize.newton se calculan las raíces del polinomio

print ('Las raíces son: {} y {}'.format(optimize.newton(P,1),optimize.newton(P,3)))
Las raíces son: 1.2084432050057703 y 2.920284949273795