给出具体数值一次到位,你还得修改。
A=rand(1,2)
B=rand(1,2)
C=rand(1,2)
r1=rand(1,1),r2=rand(1,1),r3=rand(1,1)
t=0:pi/100:2pi;
x1=A(1)+r1cos(t);y1=A(2)+r1sin(t);
x2=B(1)+r2cos(t);y2=B(2)+r2sin(t);
x3=C(1)+r3cos(t);y3=C(2)+r3sin(t);
plot([x1 x2 x3],[y1 y2 y3],'')
axis equal
如何用matlab求解二阶微分方程,对于一般的微分方程(组)可以用dsolve()函数求得其解析解或数值解,对于较复杂的微分方程(组)可以用ode45()函数求得其数值解。
例如:微分方程,用dsolve和ode45计算t=01,02时y的值。
y = dsolve('D2y+05Dy+2y =0','Dy(0)=0,y(0)=1')
t=01; y1=eval(y)
t=02; y2=eval(y)
==============================================================
t0=[1;0];tspan=[0,20];
[t1,y1]=ode45(@ ode_fun,tspan,t0);
disp('t y dy')
for i=1:3
t=double(t1(i));y=double(y1(i,1));dy=double(y1(i,2));
disp([num2str(t),' ',num2str(y),' ',num2str(dy)])
end
function f = ode_fun(t,y) %自定义的微分方程函数,文件名,ode_funm
f=[y(2);-05y(2)-2y(1)];
end
==============================================================
运行结果
听起来这个像是内存泄露。。。在matlab里面比较少见,这种现象一般由于打开的句柄没有关闭,又重新打开新的句柄,导致这些内存垃圾没有回收机制而让程序无法继续运行。通常在window开发员中讨论这个讨论的比较多,或许因为微软的编译器具有比较好的垃圾回收机制。matlab相对差一点。死循环的可能性不是没有,但是可能性很小。死循环的结果是程序没有响应,而有句柄没有关闭的情况下可能导致同时打开的句柄数达到上限之类的限制。猜测。。。
以上就是关于想用matlab编个简单的程序全部的内容,包括:想用matlab编个简单的程序、如何用matlab求解二阶微分方程,以及程序实例、求大神解释一下下面的MATLAB目标跟踪程序,是matlab自带的例子等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)