请教高手,matlab7.1程序调试?

2025-04-25 10:19:48
推荐回答(4个)
回答1:

function F = thbfun(t,u,flag,l,k,m,g)
F = [u(2);
u(1)*u(4)^2 + g*cos(u(3)) - k/m*(u(1) - l + m*g/k);
u(4);
-2*u(2)*u(4)/u(1) - g*sin(u(3))/u(1)];
-------------------------------------------------------------
theta0=pi/10 %\fs

m = 1; k = 80; ; g = 9.8;
L0 = 1; L = L0 + m*g/k; %\fs
[t,u1] = ode45('thbfun',[0 : 0.005 : 15],[L0 0 theta0 0],[],L,k,m,g);
[y1,x1] = pol2cart(u1(:,3),u1(:,1)); y1 = -y1;%\fs

ymax = max(abs(y1));
axis([-1.2 1.2 -1.2*ymax 0.2]);%\fs
axis off
title('弹簧摆','fontsize',14)
hold on;

R =0.055 ; %\fs
yy = -L0 : 0.01 : 0;
xx = R*sin(yy./L0*30*pi);%\fs
[a,r] = cart2pol(xx,yy); %\fs
a = a + theta0;
[xx,yy] = pol2cart(a,r);%\fs

line([-1 1],[0 0],'color','r','linewidth',2)%\fs
ball = line(xx(1),yy(1),'color','r','marker','.',...
'markersize',70,'erasemode','xor');
ball2 = line(xx(1),yy(1),'color',[0.5 0.51 0.6],'linestyle','-',...
'linewidth',1.3,'erasemode','none');
spring = line(xx,yy,'color','r','linewidth',2,'erasemode', 'xor');
pause(0.5)

for i = 1 : length(t) %\fs
yy = -u1(i,1) : 0.01 : 0;
xx = R*sin(yy./u1(i,1)*30*pi);
[a,r] = cart2pol(xx,yy);
a = a + u1(i,3);

[xx,yy] = pol2cart(a,r);
set(ball,'XData',x1(i),'YData',y1(i));
set(ball2,'XData',x1(i),'YData',y1(i));
set(spring,'XData',xx,'YData',yy);
drawnow;
end

回答2:

报错的信息是: 指令或者函数 "mycon" 没有被定义,是一个未知的参数
Matlab程序中是不允许出现未定义参数的,即使是函数程序,那么在这个函数程序中每个参数也是需要预定义的,不然无法进行计算

回答3:

你不能在同一个文件中定义两个函数吧。

回答4:

一项工程甲已两队合作6天完成5/6如果单独做甲完成1/3与乙完成1/2所需的时间相等单独做甲乙各需几天