MATlAB中计算函数曲线长度的函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATlAB中计算函数曲线长度的函数相关的知识,希望对你有一定的参考价值。
计算 0.2*cos(πx)在[0,2]上的曲线长度?用MATLAB怎么编程?
>> syms xy=0.2*cos(pi*x);
y1=diff(y);
y2=sqrt(1+y1^2);
l=vpa(int(y2,0,2))
Warning: Explicit integral could not be found.
l =
2.1847670946623547877917014121759
得到的l就是长度啦 参考技术A 用matab的积分做。
由于这是曲线积分,根据大学中教材高等数学第二版第十一章的定义
>> y = diff(0.2*cos(pi*x));
y =
-(pi*sin(pi*x))/5
>> quad(@(x)(-pi/5)*sin(pi*x),0,2)
ans =
0追问
能给出具体的程序吗?希望能给出具体程序啊!!急求
追答那你等一下。
追问有程序了没?谢谢啦!!
追答等一下,我去吃饭再给你回答,貌似有错。
追问嗯,谢谢啦!
追答竟然找不到曲线积分的现成的函数,你自己百度一下,看有木有,根据曲线积分的定义,首先转换成对x或者y进行积分。
>> quad(@(x)sqrt(1+(pi^2/25)*sin(pi*x).^2),0,2)
ans =
2.184767094513851
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
在曲线上取点,用折线去逼近曲线,两点间距离你是会求的吧。。。这个编个程就出来了。
当分割前后计算得到的长度差小于你的ε,就可以认为近似值较理想了。
ps:鉴于你的函数是凸函数,你可以在得到的近似值上加一个ε0,至于加多少,可以根据对结果的影响程度来决定。追问
关键是这个取点的过程不会啊,给出x怎么编程的时候给出相应的y呢,这是个隐函数,我不会,求提示
以上是关于MATlAB中计算函数曲线长度的函数的主要内容,如果未能解决你的问题,请参考以下文章