"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment trouver l'intersection d'une courbe avec y==0 à l'aide de l'interpolation linéaire en Python ?

Comment trouver l'intersection d'une courbe avec y==0 à l'aide de l'interpolation linéaire en Python ?

Publié le 2024-11-10
Parcourir:404

How to Find the Intersection of a Curve with y==0 Using Linear Interpolation in Python?

Trouver l'intersection d'une courbe avec y==0 à l'aide de l'interpolation linéaire

En Python, nous pouvons créer un tracé à partir de données stockées dans tableaux en utilisant la bibliothèque matplotlib. Cependant, obtenir la valeur exacte sur l'axe Y de l'intersection d'une courbe avec y==0 peut s'avérer difficile.

Pour résoudre ce problème, nous pouvons utiliser l'interpolation linéaire pour approximer le point d'intersection, comme suit :

  1. Définissez le problème : Étant donné des tableaux contenant des points de données gradient(temperature_data) et vertical_data, nous devons déterminer la valeur sur l'axe y où la courbe intersecte y==0.
  2. Implémentez la solution : Nous pouvons trouver les racines ou les zéros du tableau de données en utilisant l'interpolation linéaire :

    import numpy as np
    
    def find_roots(x, y):
        s = np.abs(np.diff(np.sign(y))).astype(bool)
        return x[:-1][s]   np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s]) 1)
  3. Appliquez la solution :

    z = find_roots(gradient(temperature_data), vertical_data)
  4. Tracer les résultats : Pour visualiser l'intersection, nous pouvons tracer les points de données et marquer le passage à zéro avec un marqueur :

    import matplotlib.pyplot as plt
    
    plt.plot(gradient(temperature_data), vertical_data)
    plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)
    
    plt.show()

Cette méthode fournit une approximation du point d'intersection exact entre la courbe et y==0.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729465637. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3