怎么在matlab里面求已有两条曲线的交点?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在matlab里面求已有两条曲线的交点?相关的知识,希望对你有一定的参考价值。

两条曲线方程已知,matlab能自动求其多个交点的横纵坐标吗?
谢谢!

那要看你的两条曲线是不是已知函数表达式的——
1.
对于两条曲线都是显示函数的,可以直接求出交点,然后用matlab绘点标注即可;
2.
如果两条曲线至少有一条是隐函数描述的,那么可以用近似求根,比如fsolve,fzero等函数求交点。
如果两条中至少有一条是离散点连接起来的曲线,而其解析表达式未知。那么可以用下面的方法求,而且这种方法对于上面1.
2.都有效。
原理很简单,离散点依次相连形成的曲线,其交点都在两条小直线段上,利用计算几何学中的判断“两线段相交”的方法(快速排斥和跨立试验),然后经过两层循环依次求出每个线段跟另一条曲线的所有线段的交点。
具体实例在
http://www.ilovematlab.cn/thread-167242-1-1.html
上述链接中的4楼给出了函数文件来解决这类问题。
参考技术A zR = solve('1/(0.00379-0.000283*log10(0.101325+1030*9.81*(750+z)*0.000001))-273.15-(2.2+0.054*z+2*erfc(z/2*sqrt(3E-7*500)))','z');
tR = 1/(0.00379-0.000283*log10(0.101325+1030*9.81*(750+zR)*0.000001))-273.15;
zSol = double(zR);
tSol = double(tR);
str = sprintf('The intersection of 2 lines is : \n z = %f \n t = %f', zSol,tSol);
disp(str);
plot(tSol,zSol,'r+','LineWidth',3,'MarkerSize',13);
参考技术B 很简单得啦,例如:
>> [x,y]=solve('y=x^2','y=x+1')

x =

-1/2*5^(1/2)+1/2
1/2+1/2*5^(1/2)

y =

-1/2*5^(1/2)+3/2
3/2+1/2*5^(1/2)

可以验证:
>> x=-2:0.1:2
>> y1=x.^2
>> y2=x+1
>> plot(x,y1,x,y2)本回答被提问者采纳

NX二次开发-UFUN获得两条曲线的交点UF_MODL_intersect_curve_to_curve

NX9+VS2012

#include <uf.h>
#include <uf_ui.h>
#include <uf_modl.h>
#include <uf_curve.h>


UF_initialize();

//创建两条直线
UF_CURVE_line_t Line_coords1;
Line_coords1.start_point[0] = 0.0;
Line_coords1.start_point[1] = 0.0;
Line_coords1.start_point[2] = 0.0;
Line_coords1.end_point[0] = 100.0;
Line_coords1.end_point[1] = 0.0;
Line_coords1.end_point[2] = 0.0;
tag_t Line1Tag = NULL_TAG;
UF_CURVE_create_line(&Line_coords1, &Line1Tag);

UF_CURVE_line_t Line_coords2;
Line_coords2.start_point[0] = 50.0;
Line_coords2.start_point[1] = -50.0;
Line_coords2.start_point[2] = 0.0;
Line_coords2.end_point[0] = 50.0;
Line_coords2.end_point[1] = 100.0;
Line_coords2.end_point[2] = 0.0;
tag_t Line2Tag = NULL_TAG;
UF_CURVE_create_line(&Line_coords2, &Line2Tag);


//获得两条曲线的交点
int num_intersections = 0;
double* data = 0;
UF_MODL_intersect_curve_to_curve(Line1Tag, Line2Tag, &num_intersections, &data);

//打印交点xyz坐标
char msg[256];
sprintf_s(msg, "x:%.2f,y:%.2f,z:%.2f", data[0],data[1],data[2]);
uc1601(msg,1);

//释放
UF_free(data);

UF_terminate();

Caesar卢尚宇
2020年7月5日

技术图片

以上是关于怎么在matlab里面求已有两条曲线的交点?的主要内容,如果未能解决你的问题,请参考以下文章

matlab中怎么求两曲线交点

MATLAB中怎么求两条曲线的交点并标注

matlab中如何求两直线交点?

matlab编程求两条直线的交点

怎样在matlab中得到直线方程与plot出的曲线之间的交点坐标

matlab里一次画两条曲线怎么编程?