Matlab 曲线到定点距离最短问题

已知x(t)=5t-10,y(t)=25t^2-120t+144.t在[0,4]之间,求曲线到(0,0)的最短距离。... 已知x(t)=5t-10, y(t)=25t^2-120t+144.
t在[0, 4]之间,求曲线到(0, 0)的最短距离。
展开
 我来答
水千柳CZ
推荐于2017-11-02 · TA获得超过351个赞
知道答主
回答量:86
采纳率:0%
帮助的人:159万
展开全部

You can use Matlab's symbolic package to get the minimum distance, you might need to use a little bit calculus

t = sym('t','real') % define a real symbol variable

x=5*t-10;  

y=25*t.^2-120*t+144;

d = (x^2+y^2)^.5;  % distance function

d1 = diff(d); % the differentiation

t1s = solve(d1); % let the differentiation equal to 0 to get the maxmin point

t1v = eval(t1s); % get the numerical evaluation

min_d = subs(d,t,t1v)

min_d =

    1.3577

You can use the following code to generate a figure of illustrating the curve and the distance:

t = [0:0.001:4]; 

x=5*t-10;

y=25*t.^2-120*t+144;

figure(1);

hold on;

plot(x,y,'b');

axis([0 4 0 4],'square');

x=5*t-10;

d=(x.^2+y.^2).^.5;

figure(1);

hold on;

plot(x,d,'g');

t=t1v;

x=5*t-10;

y=25*t.^2-120*t+144;

plot(x,y,'r.');

plot([0 x],[0 y],'r');

plot([x x],[0 4],'--');

追问
And one more question, how to determine x, y at which the curve is the closest to the origin(0,0)? Thank you~
追答
when you have the parameter t, you can simply substitute it into the formula to obtain x and y, in my code:
t=t1v;
x=5*t-10;
y=25*t.^2-120*t+144;

And the point is a red point on the figure.
火丰科技
2024-11-13 广告
致力于从事惯性测量、卫星导航等产品的研发、生产的高新技术企业。公司旗下投资多条自动化生产线分别分布于西安、深圳、珠海等地,其中包括光纤陀螺、MEMS惯导、石英加速度计、电子对抗通信产品生产线,拥有中国先进的惯性导航产品及电子对抗产品生产条件... 点击进入详情页
本回答由火丰科技提供
我行我素850915
2017-11-02 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1706万
展开全部
可这样:
t=0:0.01:4;x=5*t-10;y=25*t.^2-120*t+144;plot(x,y)
figure
plot(x,y)
hold on
syms x(t) y(t)
x=5*t-10;
y=25*t.^2-120*t+144;
kf=-diff(x)/diff(y);%法线的斜率
%设曲线上(x,y)点及(0,0)在法线上,则法线的斜率也等于下式
kk=(y-0)/(x-0);
%解方程求交点的t值
t1=solve(kf==kk,'MaxDegree',3,'Real',true);
t2=double(t1);
x1=double(subs(x,t,t2));
y1=double(subs(y,t,t2));
d=hypot(x1,y1);
fprintf('原点到曲线的最短距离是 %f\n',d)
plot(x1,y1,'r*')
plot(0,0,'r*')
plot([0,x1],[0,y1])
hold off
axis equal
axis([-1,+5,-1,10])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鸡血键盘手
2011-10-10 · 超过12用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:15.2万
展开全部
最容易懂的就自己编程把;
matlab有个直接求两点间的距离的函数;你在循环比较;
或者你把他看成线性规划问题,你应该懂得;
再则 用lingo 也行;实在不懂的话就写c语言把 干脆点也行 。具体函数还是你自己来熟练操作把
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式