python求曲线交点_Python:找到两条高斯曲线的交点

这篇博客介绍了如何通过编程找到两个高斯函数的交点。使用numpy库,作者定义了一个函数`solve`,该函数基于高斯函数的均值和方差计算交点。通过示例展示了当高斯函数参数不同时,如何找到它们的相交点,并绘制了相应的图形。此外,代码能够处理存在多个交点的情况。
摘要由CSDN通过智能技术生成

你想找到x,使得两个高斯函数具有相同的高度.(即相交)

您可以通过将两个高斯函数相等并求解x来实现.最后,您将得到一个二次方程,其系数与高斯均值和方差有关.这是最终结果:

import numpy as np

def solve(m1,m2,std1,std2):

a = 1/(2*std1**2) - 1/(2*std2**2)

b = m2/(std2**2) - m1/(std1**2)

c = m1**2 /(2*std1**2) - m2**2 / (2*std2**2) - np.log(std2/std1)

return np.roots([a,b,c])

m1 = 2.5

std1 = 1.0

m2 = 5.0

std2 = 1.0

result = solve(m1,m2,std1,std2)

输出是:

array([ 3.75])

您可以绘制找到的交叉点:

x = np.linspace(-5,9,10000)

plot1=plt.plot(x,mlab.normpdf(x,m1,std1))

plot2=plt.plot(x,mlab.normpdf(x,m2,std2))

plot3=plt.plot(result,mlab.normpdf(result,m1,std1),'o')

情节将是:

如果您的高斯人有多个交叉点,代码也会找到所有这些交叉点(比如m1 = 2.5,std1 = 3.0,m2 = 5.0,std2 = 1.0):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值