2007年4月27日

4/25-第七次作業

作業七 廖婉婷 B94611040


*本人(4/19)有上課*


7-1

本題使用之函式:
function linkshape(A,B,dd)
% 繪出連桿外形
% 輸入參數為起始點A 終點B 連桿寬度dd
if nargin==2,dd=1;end;
d=abs(dd);
AB=(B(1)+j*B(2))-(A(1)+j*A(2));
D=abs(AB);th=angle(AB);
t=linspace(pi/2,2.5*pi,20);
Cout=max(d/2,0.2)*exp(j*t');Cin=Cout/2;
if dd>0,
P=[0;Cin;Cout(1:10);D+Cout(11:20);D+Cin;D+Cout(20);Cout(1)];
else
P=[Cin;0;D;D+Cin];
end
xx=real(P);yy=imag(P);
x=xx*cos(th)-yy*sin(th)+A(1);
y=xx*sin(th)+yy*cos(th)+A(2);
line(x,y)
axis equal


function [vec,dyadata] = dyad(rho,theta,td,tdd)
%由輸入參數:長度rho,起始角度theta,角速度td,角加速度tdd
%算出之vec為位置,速度及加速度之絕對值
theta=theta(:);rho=rho(:);
n=length(rho);
if nargin<4,
tdd=zeros(size(rho));
if nargin==2,
td=ones(size(rho));
end;
end;
if length(td)==1,td=ones(size(rho))*td;end;
if length(tdd)==1,tdd=ones(size(rho))*tdd;end;
td=td(:);tdd=tdd(:);
d2g=pi/180;
tt=exp(i*theta*d2g);
pp=rho.*tt;vv=i*td.*pp;aa=-pp.*td.^2+i*pp.*tdd;
dyadata=[pp vv aa];
vec=[abs(sum(dyadata));angle(sum(dyadata))/d2g];





function dyad_draw(rho,theta,td,tdd)
%經function dyad算出速度/加速度對應值後
%以下為繪出各節速度/加速度之對應方位
clf;
[vec,data] = dyad(rho,theta,td,tdd);
x=[0;cumsum(real(data(:,1)))];y=[0;cumsum(imag(data(:,1)))];
for i=1:length(x)-1
linkshape([x(i) y(i)],[x(i+1) y(i+1)],1);
end
for k=1:length(rho)
x0=x(k+1);y0=y(k+1);
vx=x0+real(data(k,2));vy=y0+imag(data(k,2));
ax=x0+real(data(k,3));ay=y0+imag(data(k,3));
line([x0 vx],[y0 vy],'marker','s','linewidth',2);
line([x0 ax],[y0 ay],'marker','s','color','r','linewidth',3)
end
sdata=sum(data);
ss=[real(sdata(1)) imag(sdata(1))];
vv=[real(sdata(2)) imag(sdata(2))];
aa=[real(sdata(3)) imag(sdata(3))];
line([0 ss(1)],[0 ss(2)],'linestyle',':','linewidth',2)
axis equal;grid on
%繪出之圖紅色為各桿之加速度,藍色為速度,綠色為合速度



題目要求各桿之對應長度rho=[a, a+5, a-5]cm,a=(學號末一碼)+10;
對應起始角度theta=[0, 0, 0]度;
對應角速度為td=[0.2, 0.5, 0 .3]rad/s;
對應角加速度為tdd=[0, 0.1, 0.2]rad/s^2;

因此取a = 0+10 = 10
rho=[10,15,5]


以下為當t=[1 2 3 4 5]秒時,此端桿之對應方位
以迴圈跑時間t=1~5
並計算出隨時間變化之位置/速度/加速度變化量以表示其相對位置
也就是將位置,速度,加速度表示成時間函數
clear; clf;
% clean up environment before starting
a = 0+10;
LENGTH = [a, a+5, a-5];
ANGLE = [0 0 0];
VELOCITY = [0.2, 0.5, 0.3];
ACCEL = [0 0.1 0.2];

% initial state
dyad_draw(LENGTH, ANGLE, VELOCITY, ACCEL);
axis([-1 35 -1 30]);
text(3, 27, 'INITIAL STATE');
pause(1);

% start moving from 1s to 5s
for t = 1:5,
% redraw the graph each time
clf;
dyad_draw(LENGTH, ANGLE + (VELOCITY.*t) + (ACCEL.*0.5.*t^2), VELOCITY + (ACCEL.*t), ACCEL);
axis([-1 35 -1 30]);
text(3, 27, ['AFTER ' num2str(t) ' SECONDS']);
pause(1);
end;



<圖一>最初端桿之對應方位(點圖可看原圖)






<圖二>t=1s時端桿之對應方位(點圖可看原圖)






<圖三>t=2s時端桿之對應方位(點圖可看原圖)






<圖四>t=3s時端桿之對應方位(點圖可看原圖)






<圖五>t=4s時端桿之對應方位(點圖可看原圖)






<圖六>t=5s時端桿之對應方位(點圖可看原圖)





7-2

function ANS = angle_velocity(INITIAL, ACCEL, TIME)
for i = 1:length(TIME),
ANS(i,:) = INITIAL + (ACCEL .* TIME(i));
end;


clear; clf;
VELOCITY = [0.2, 0.5, 0.3];
ACCEL = [0 0.1 0.2];
for i = 1:3,
T(i,:) = 0:0.1:5;
end;

% v-t graph
VELOCITY_POINT = angle_velocity(VELOCITY, ACCEL, 0:0.1:5);
subplot(2,1,1), plot(T',VELOCITY_POINT);
axis([0 5 0 1.5]);
title('速度與時間關係');
xlabel('time');
ylabel('velocity');
legend('10cm', '15cm', '5cm', 'Location', 'Best');

% a-t graph
subplot(2,1,2), plot([0 0 0; 5 5 5], [0 0.1 0.2; 0 0.1 0.2]);
axis([0 5 -0.3 0.3]);
title('加速度與時間關係');
xlabel('time');
ylabel('acceleration');
legend('10cm', '15cm', '5cm', 'Location', 'Best');



速度/加速度與時間t之關係圖(點圖可看原圖):




7-3

沒有留言: