谁能帮我用MATLAB做一道数学题啊?很有挑战性的

题目:在正方形的四个顶点各有一个人,在某一时刻,四个人同时出发以匀速按顺时针方向追赶下一个人,如果他们始终保持对准目标,试确定每个人的行进路线... 题目:在正方形的四个顶点各有一个人,在某一时刻,四个人同时出发以匀速按顺时针方向追赶下一个人,如果他们始终保持对准目标,试确定每个人的行进路线 展开
wacs5
2011-03-17 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2752万
展开全部
我做过这题。
我找找,用偏微分方程组。
ode45求解。
追问
这个我们要求用MATLAB做,帮帮忙吧
追答
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%Author :wacs5
%Date :20110317(YYYYMMDD)
%针对:http://zhidao.baidu.com/question/238873128.html#here
%问题提出:
%在正方形的四个顶点各有一个人,在某一时刻,四个人同时出发以匀速按顺时针方向追赶下一个人,如果他们始终保持对准目标,试确定每个人的行进路线
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

第1步:描述偏微分方程
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dxdt=square(t,xx)
global v
x=xx([1:2:7,1]); %四个点的横坐标,方便循环再加第一个点横坐标
y=xx([2:2:8,2]); %四个点的纵坐标
for i=1:4
dx=x(i+1)-x(i);
dy=y(i+1)-y(i);
r=sqrt(dx*dx+dy*dy);
dxdt(i+i-1)=v*dx/r;
dxdt(i+i )=v*dy/r;
end
dxdt=dxdt(:);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

第2步:描述何时迭代终止
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [value,isterminal,direction]=square_events(t,xx)
global dr;
x=xx([1:2:7,1]); %四个点的横坐标,方便循环再加第一个点横坐标
y=xx([2:2:8,2]); %四个点的纵坐标
for i=1:4
dx=x(i+1)-x(i);
dy=y(i+1)-y(i);
r(i)=sqrt(dx*dx+dy*dy);
end
value=min(r)-dr;
isterminal=1;
direction=0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

第3步.求解
在Matlab下面输入:
clear
clc
global v
global dr
v=0.5; %速度
dr=0.01; %多近的时候,停止迭代
x0=[0,0,0,1,1,1,1,0]; %从原点开始顺时针
options = odeset('Events',@square_events);
[t,xy,te,ye,ie]=ode45(@square,[0,10],x0,options);

%成图
hold on
axis equal
axis([0,1,0,1])
xlabel('x')
ylabel('y')
x=xy(:,1:2:end);
y=xy(:,2:2:end);
for i=1:(size(x,1)-1)
plot([x(i,:);x(i+1,:)],[y(i,:);y(i+1,:)])
pause(0.1);
end
t(end) %何时终止
百度网友0e75824
2011-03-17 · TA获得超过683个赞
知道小有建树答主
回答量:474
采纳率:0%
帮助的人:364万
展开全部
都走的y=exp(x)的路径吧,没编程,直接手算的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式