在excel中如何求两条曲线的交点?(x、y轴数值都不同的)

如题所述

VBA编程嘛,原理是:
例如A曲线有100个数据,做一个100的循环;
每次循环中,把A的Xa和Ya提出来。之后做一个100的内循环(假设B曲线也是100个采样)。
内循环中,把B曲线的Xb和Yb提出来。然后和Xa,Ya算一个距离。
设定一个距离的阈值,当距离小于阈值,则认为它们是同一个点。
之后把这两个点的单元格标记一个特殊颜色就行了。同时在图表中,给这两点画一个圈圈。

——这样做,之前必须保证A B的采样是有交点的,否则圈圈画不出来。

如上,祝好!追问

我也想过编程,你说的我能理解,但具体实现不会。我还有如下疑问希望不吝赐教!

    VBA编程能内嵌到excel中吗?或者VBA能读取excel数据文件吗?

    我的输入参数有:Xa,Ya,Qa(A曲线采点数目),Xb,Yb,Qb(B曲线采点数目),阀值(X、Y相同)Ra=Rb=0.5

    大仙教我~~~~

追答

1. EXCEL内嵌VBA
2. 把EXCEL文件给我
3. 留QQ号码

追问

扣扣久零五七二一六二八

追答

太有才了,中文,赞一个。
下周一联系你。回家了,事情多,不方便做,

追问

恩恩

追答

Public Function ifMeet(ByVal Xa As Double, ByVal Ya As Double, ByVal Xb As Double, ByVal Yb As Double) As Boolean
ifMeet = False '强制初始化返回值

Dim DIS As Double '表示距离
DIS = ((Xa - Xb) ^ 2 + (Ya - Yb) ^ 2) ^ 0.5 '最基础的数学公式
If DIS < 0.1 Then ifMeet = True '交点阈值为0.1
End Function

Public Sub test()
Dim A(3, 2) As Double 'A线有三个数据点
Dim B(4, 2) As Double 'B线有四个数据点

'A线是一条45度的斜线
A(0, 0) = 1
A(0, 1) = 1
A(1, 0) = 2
A(1, 1) = 2
A(2, 0) = 3
A(2, 1) = 3

'B线是一条和Y轴平行的线
B(0, 0) = 2
B(0, 1) = -1
B(1, 0) = 2
B(1, 1) = 0
B(2, 0) = 2
B(2, 1) = 1
B(3, 0) = 2
B(3, 1) = 2

'外循环,A线上的三点
For i = 0 To 2
Xa = A(i, 0)
Ya = A(i, 1)

'内循环,B线上的四点
For j = 0 To 3
Xb = B(j, 0)
Yb = B(j, 1)
If ifMeet(Xa, Ya, Xb, Yb) Then MsgBox "A" + Str(i) + "和" + "B" + Str(j) + "有交点。"
Next j
Next i

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-12
如果数据采用的是直线插值的话是可以直接用公式算出交点的,如果你想要的是拟合曲线的交点恐怕要vba了。追问

其中一条曲线有公式
另一条是软件计算得到的,没有公式。

追答

那你就把另一条曲线用图表拟合出来,用迭代法求解曲线交点
如果一定要在excel上算只能用VBA了
如果不一定要在excel上,可以用matlab,只要一个函数就解决了。。。

第2个回答  2020-02-23
你的两组数据生成折线图了。改为平滑散点图就行:
选数据区域——菜单栏——插入——图表——图表类型——散点图:平滑线散点图——下一步或默认完成。
相似回答