Maison  >  Article  >  développement back-end  >  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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-21 07:08:30723parcourir

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 être 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 coupe y==0.
  2. Mettre en œuvre la solution : Nous pouvons trouver les racines ou les zéros du tableau de données en utilisant l'interpolation linéaire :

    <code class="python">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)</code>
  3. Appliquer la solution :

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

    <code class="python">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()</code>

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn