Maison > développement back-end > Tutoriel Python > Comment déterminer l'intersection exacte de l'axe y des points de données en Python ?

Comment déterminer l'intersection exacte de l'axe y des points de données en Python ?

Patricia Arquette
Libérer: 2024-10-21 07:15:02
original
1042 Les gens l'ont consulté

How to Determine the Exact y-Axis Intersection of Data Points in Python?

Trouver l'intersection exacte des points de données avec l'axe y

Lors du traçage de données en Python, il peut être utile d'obtenir la valeur exacte à l'endroit où une courbe coupe le axe y. Cette valeur peut être déterminée à l'aide de méthodes numériques, notamment par interpolation linéaire.

Solution utilisant l'interpolation linéaire

Le code suivant montre comment trouver les passages par zéro d'un tableau de données à l'aide de l'interpolation linéaire :

<code class="python">import numpy as np

# Generate sample data
N = 750
x = .4 + np.sort(np.random.rand(N)) * 3.5
y = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1

# Define function to find roots (zero crossings)
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)

# Find zero crossings
z = find_roots(x, y)

# Plot data and zero crossings
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)
plt.show()</code>
Copier après la connexion

Tracé inverse pour les intersections à des valeurs y non nulles

La méthode ci-dessus peut être modifiée pour trouver des intersections à des valeurs y non nulles (y0) en trouvant les zéros de y - y0 :

<code class="python">y0 = 1.4
z = find_roots(x, y - y0)
plt.plot(z, np.zeros(len(z)) + y0)</code>
Copier après la connexion

Intersections entre deux courbes

Semblable à la première méthode, trouver le point d'intersection entre deux courbes implique de trouver les zéros de la différence entre les deux tableaux de données :

<code class="python"># Generate sample data
x = .4 + np.sort(np.random.rand(N)) * 3.5
y1 = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1
y2 = (x - 2) * np.cos(x * 8.) * np.cos(x * 5 + 0.03) + 0.3

# Find intersection points
z = find_roots(x, y2 - y1)

# Plot data and intersection points
plt.plot(x, y1)
plt.plot(x, y2, color="C2")
plt.plot(z, np.interp(z, x, y1), marker="o", ls="", ms=4, color="C1")</code>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal