matlab求解最大曲率,神教程:Origin寻找曲率最大点

神教程

【编者按】

前天,在【编辑之谭】Origin制图交流群里,云长同学提出一个问题:怎样寻找曲线的最大曲率点坐标,给出的样图如下。

aa3417d91b38117152dbf8e140eb1f69.png

群里展开了热烈的讨论,谭编也没试过这个问题,于是寻求群里帮助,得到了北科大孙同学的解答,并在今天专门制作了一个简单的教程。谭编立即测试了该方法,并将教程详细扩充后分享给大家。非常感谢助人为乐的孙同学们。

谭编后续将依据该方法,设计一个在线程序,类似于谭编前面设计的k1Tool 秒办线性拟合工具,只要将这系列数据粘贴到一个文本框,按TAB键,1秒钟即可将每条曲线最大曲率的点坐标列出来,这将是一个非常有意义的小工具。请大家关注。

Origin寻找曲率最大点

孙彤丽1,谭编2

(1. 北京科技大学;2. 华南师范大学学报编辑部)

对于一系列实验曲线,在某种情况下,我们需要寻找每条曲线在最大曲率处的点的坐标(x,y),利用Origin软件分三步运算(一阶求导、二阶求导、曲率k的运算)和一次查询(max(k)),可以求得每条曲线最大曲率的点坐标。

1. 曲率公式

曲率、曲率半径的求解公式如下:

20040c3d3700b90be3f62bb59b559f1f.png图1 曲率、曲率半径的计算公式

2. Origin一阶、二阶求导

由于云长同学提供的数据中Y值太小,导致数据的一阶导数太小(这样会使一阶导数对曲率的影响较小而被忽略),因此,对数据的Y值放大1000倍处理。本文仅对B曲线进行相关解释说明。

第一步:求一阶和二阶导数。选中B(Y)列,然后点击菜单Analysis-Mathematics-Differentiate-Open Dialog Theme,将打开的Differentiate对话框中的Derivative Order选为1(一阶导数选1)或2(二阶导数选2)。其过程图如下图。

0c5d88596fba34d106a2fdde9bbdf3e9.png图2 Origin 一阶、二阶求导方法

一阶、二阶导数完成后,在表格右侧新建一列。选中新增的空白列,点击右键,选择Set Column values,

99e0e2e925072de21e7eecdb777117a3.png图3 新增一列并设置函数

1efaa48475ee1cdd0ff3be9191ff2320.png图4 设置函数公式

3. 寻找最大k值

将产生的数据拷贝到EXCEL表格(Origin嵌入的在其上方工具栏第4个按钮)中,在空单元格G1的函数输入框中输入公式“=max(E1:E60)”,可找到曲率最大值;再在G2单元格中输入公式“=MATCH(G1,E1:E60)”即可显示最大曲率的点在46行。

d50d416e576a2a6369902434fa26f219.png图5 利用Excel寻找最大值

也可以在Origin中排序,如下图所示,点击曲率结果的那一列(E)列的表头全选E列数据,再选择菜单Worksheet-sort Worksheet-Descending,对整个数据表依据E列降序排列,得到的第一行数据就是我们寻找的曲率最大点。

77b47cb9e01b2cfaf557ffc3d23ab59b.png

图6 利用Origin软件排序获取最大值

总之,利用Origin软件需要许多步骤才能找到曲率最大处的点坐标。后续,谭编将根据本文方法设计一个自动的在线工具,方便大家使用,敬请关注。