用matlab求如下轨迹长度,求算法及过程~在线等~
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用matlab求如下轨迹长度,求算法及过程~在线等~相关的知识,希望对你有一定的参考价值。
条件:
x=2.7t
y=67*sin(1.6*t+45)
0<t<28
x=2.7*t;
y=67*sin(1.6*t+45);
dl=sqrt(diff(x).^2+diff(y).^2);%每小段线段长
l=sum(dl); %求总长
disp(l);追问
为什么要对x,y求diff? 然后输出的答案大概是1.8几几几e+003应该怎样解释?
追答因为要求曲线的长度,
所以将曲线分为很多小的直线段
再将每段线段的长度求总和,就可以近似得到曲线轨迹的长度
而每段的长度可以用每段的x坐标增量和y坐标增量得到
dl=sqrt(dx^2+dy^2);
所以用diff求出每段x和y的增量,继而求出每段线段的长度
最后求和就可以了
1.8***e003就是科学记数法,也就是1.8***x10^3
num2str(l,'%f')
ans =
1891.799559
实在看不明白,就格式输出为一般浮点数的表述方法
问题就出在对y=67*sin(1.6*t+45)求diff以后有dy=608*cos((8*t+225)/5)/5这个式子上面。你可以随便代入个t=27.0000进去,结果dy=3.8195然后代入t=27.0028 dy=3.8100。我明白你的思路是正确的,可是dy出来以后真的不再是y的增量了。最终计算出来L的结果比真实值大了1700+啊。。。
我用别的方法做出来了~谢谢你哈~(/≧▽≦)/~分数给你吧~
追答这里直接是数据差分,不是求导数
如果是函数求导,那么求出的导数还要乘以dt才是长度
所以值就大了很多倍
以上是关于用matlab求如下轨迹长度,求算法及过程~在线等~的主要内容,如果未能解决你的问题,请参考以下文章
基于Matlab和高斯-赛德尔迭代应用有限差分法求电势及电场分布