mathematic或者其它数学软件求二维曲线长度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mathematic或者其它数学软件求二维曲线长度相关的知识,希望对你有一定的参考价值。

我要求一个平面曲线的长度,但是这个曲线的函数是个隐函数,不能分离y,因此不能用曲线积分来直接求~有谁知道怎样整啊~急用

这是个物理问题的数学模型~,我好不容易才求出这个曲线。但是却求不出它的长度!!!

好吧,这一切太搞笑了……因为就在这几天,知道上还出现了另一个标题为“二维曲线”的提问而我也已答了,我便以为这个回答数为1的提问是我答的那个,直到今天看团队主页的时候我才发现不对囧……然后,“请你贴代码吧”——虽然很想这么说,不过难得会有个向我这个小团队直接求助的人而且还被我无端放置了这么多天我这次就抄一下吧。


你要积分的是整条曲线而不单单是你给的图上的部分吧?那么,姑且先来看看曲线全貌:

img = ContourPlot[1/x + 3/4 (((y - 1/Sqrt[3])/x)^2 + 1) Exp[ArcTan[(y - 1/Sqrt[3])/x] - \\[Pi]/6] == 0, x, -3, 1, y, -(1/5), 4, PlotPoints -> 70]



然后,一般地说,就是取点、寻根、构造插值函数了——一般来说确实是这样,但是试了一下,这个函数在x=0处的奇点似乎造成了不小的麻烦,我一时想不到正面的解决方法,但是,却想到了一个邪道的、最大限度利用Mathematica隐藏数值特性的做法——我们需要的是曲线上的点的坐标,那么,上面的这个图里不就已经含了这些坐标了吗?:

Total[EuclideanDistance @@@ 
  Partition[First@Cases[Normal@img, Line[a_] :> a, Infinity], 2, 1]]
  
  (* 9.85614 *)

上面这个代码是通过提取图像中的隐藏坐标来求解曲线的近似长度的,你对着帮助查一查,再适当解构一下我的代码,应该就能看懂。

追问

不是求整条曲线呢,物理模型要求只需要求x轴(-1,0)这个区间内长度

追答

这里已经有高手给出了一个解析的解法,你可以看看:
mathematica.stackexchange.com/questions/29292/how-can-i-calculate-the-perimeter-of-an-equation-defined-curve

参考技术A 给定你想要的精度ε,离散化。
在曲线上取点,用折线去逼近曲线,两点间距离你是会求的吧。。。这个编个程就出来了。
当分割前后计算得到的长度差小于你的ε,就可以认为近似值较理想了。
ps:鉴于你的函数是凸函数,你可以在得到的近似值上加一个ε0,至于加多少,可以根据对结果的影响程度来决定。追问

关键是这个取点的过程不会啊,给出x怎么编程的时候给出相应的y呢,这是个隐函数,我不会,求提示

以上是关于mathematic或者其它数学软件求二维曲线长度的主要内容,如果未能解决你的问题,请参考以下文章

matlab 符号计算 求空间曲线长度

机器学习|数学基础Mathematics for Machine Learning系列之线性代数(15):向量的内积长度及正交性

虎书学习笔记4:图形学基础数学(隐式二维直线隐式二次曲线二维参数曲线二维参数直线二维参数圆)

DELPHI二维数组设置长度的时候出现了难以理解的问题!急求高人指教!

(专题四)03 其它形式的二维曲线

[数学]如何旋转曲线