Saltar al contenido principal
LibreTexts Español

39.1: Ejemplo de LSF - Seguimiento de los Planetas

  • Page ID
    115119
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    El sistema solar

    La siguiente tabla enumera la distancia promedio desde el sol hasta cada uno de los primeros siete planetas, utilizando la distancia de la Tierra como unidad de medida (AUs).

    Mercurio Venus Tierra Marte Júpiter Saturno Urano
    0.39 0.72 1.00 1.52 5.20 9.54 19.2

    A continuación se presenta una gráfica de los datos:

    # Here are some libraries you may need to use
    
    %matplotlib inline
    import matplotlib.pylab as plt
    import numpy as np
    import sympy as sym
    import math
    sym.init_printing()
    distances = [0.39, 0.72, 1.00, 1.52, 5.20, 9.54, 19.2]
    planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Satern','Uranus']
    ind = [1.0,2.0,3.0,4.0,5.0,6.0,7.0]
    
    plt.scatter(ind, distances);
    plt.xticks(ind,planets)
    plt.ylabel('Distance (AU)')
    Nota

    Que la trama anterior no parece una línea, y así encontrar la línea de mejor ajuste no es fructífero. Lo hace, sin embargo, parece una curva exponencial (¿quizás un polinomio?). El siguiente paso transforma las distancias usando la función log numpy y genera una gráfica que se ve mucho más lineal.

    log_distances = np.log(distances)
    
    plt.scatter(ind,log_distances)
    plt.xticks(ind,planets)
    plt.ylabel('Distance (log(AU))')

    Para esta pregunta vamos a encontrar los coeficientes (\(c\)) para la línea de mejor ajuste de la forma\(c_1 + c_2 i = \log d\), donde\(i\) está el índice del planeta y\(d\) es la distancia.

    El siguiente código construye este problema en la forma\(Ax=b\) y define la\(A\) matriz y la\(b\) matriz como matrices numpy

    A = np.matrix(np.vstack((np.ones(len(ind)),ind))).T
    b = np.matrix(log_distances).T
    sym.Matrix(A)
    sym.Matrix(b)
    Hacer esto

    Resuelve para el mejor ajuste\(Ax=b\) y define una nueva variable\(c\) que consiste en el de los dos coeficientes utilizados para definir la línea (\(\log d = c_1 + c_2 i\))

    Hacer esto

    Modifique el siguiente código (según sea necesario) para trazar sus mejores estimaciones de\(c_1\) y\(c_2\) contra los datos proporcionados.

    ## Modify the following code
    
    est_log_distances = (c[0] + c[1]*np.matrix(ind)).tolist()[0]
    plt.plot(ind,est_log_distances)
    
    plt.scatter(ind,log_distances)
    plt.xticks(ind,planets)
    plt.ylabel('Distance (log(AU))')

    Podemos determinar la calidad de este ajuste de línea calculando el error cuadrático medio entre la estimación y los datos reales:

    rmse = np.sqrt(((np.array(log_distances)  - np.array(est_log_distances)) ** 2).mean())
    rmse

    Finalmente, también podemos hacer la gráfica en el eje original usando la inversa del log (es decir, la función exp):

    est_distances = np.exp(est_log_distances)
    plt.scatter(ind,distances)
    plt.plot(ind,est_distances)
    plt.xticks(ind,planets)
    plt.ylabel('Distance (AU)')

    El cinturón de asteroides entre Marte y Júpiter es lo que queda de un planeta que se rompió. Volvamos al cálculo anterior pero renumérense para que el índice de Jupyter sea 6, Saturno sea 7 y Urano sea 8 de la siguiente manera:

    distances = [0.39, 0.72, 1.00, 1.52, 5.20, 9.54, 19.2]
    planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Satern','Uranus']
    ind = [1,2,3,4,6,7,8]
    
    log_distances = np.log(distances)
    Hacer esto

    Repita los cálculos desde arriba con el modelo actualizado. Trazar los resultados y comparar el RMSE.

    ## Copy and Paste code from above
    ## Copy and Paste code from above
    est_log_distances = (c[0] + c[1]*np.matrix(ind)).tolist()[0]
    
    est_distances = np.exp(est_log_distances)
    plt.scatter(ind,distances)
    plt.plot(ind,est_distances)
    plt.xticks(ind,planets)
    plt.ylabel('Distance (AU)')
    
    rmse = np.sqrt(((np.array(log_distances)  - np.array(est_log_distances)) ** 2).mean())
    rmse
    ## Copy and Paste code from above

    Este modelo de ubicación del planeta se utilizó para ayudar a descubrir Neptuno e impulsó a la gente a buscar el “planeta perdido” en la posición 5 lo que resultó en el descubrimiento del cinturón de asteroides. Con base en el modelo anterior, ¿cuál es la distancia estimada del cinturón de asteroides y Neptuno (índice 9) del sol en las AUs?

    Pista

    Puedes verificar tu respuesta buscando la respuesta en línea.

    #Put your prediction calcluation here

    This page titled 39.1: Ejemplo de LSF - Seguimiento de los Planetas is shared under a CC BY-NC 4.0 license and was authored, remixed, and/or curated by Dirk Colbry via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.