[讨论] matlab 不知道哪个地方写错

楼主: sangy79692 (瞇瞇眼看世界)   2017-09-30 16:16:41
请教各位大神
Q: 问题描述:伞兵问题,(1)求第十秒的速度,(2)依time stop=0.5 和 time stop=
1 ,绘出0到16秒到时间vs速度图
以下是小弟的程式,不知道那里错,拜托帮忙指导
function value = veiocity3(dt,ti,tf,tv,vi,m,cd)
to(1)=0;vo(1)=0;
g=9.81; t=ti; v=vi;
n=(tf-ti)/dt;
for i=2:n+1
dvdt=deriv(v,m,cd);
t=t+dt;
to(i,1)=t;
vo(i,1)=v;
if t ==tv, value=v; end
end
vexact=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*to);
plot(to,vo,’b*-‘,to(:,1),vexact,’r-‘)
title(‘comparision of exact and numerical solution.’)
xlabel(‘values of time’)
ylabel(‘values of velocity’)
legend(strcat(‘dt=‘,num2str(dt)),’exact solution’)
function dv=deriv(v,m,cd)
g=9.81;
dv=g-(cd/m)*v^2;
作者: sppmg (sppmg)   2017-10-03 01:03:00
乍看之下感觉错很多.... 你要不要细写想法、算式、变量代号if t ==tv 这也是明显有问题。切记用 >= 比较,尤其是浮点数很难有绝对的 == 。然后看结构,感觉你应该还要在if 内加 break 中断 for loop
作者: sunev (Veritas)   2017-10-03 01:57:00
你算出dvdt结果没用到不觉得奇怪吗?
楼主: sangy79692 (瞇瞇眼看世界)   2017-10-03 08:43:00
有一小部分是人家教的... 问他也问不出个所以然QQ

Links booklink

Contact Us: admin [ a t ] ucptt.com