10/10/2006

PROBLEM #3.2:抛物線運動

在抛物運動中,設初值分別為速度ν及仰角θ,試其投射之最高高度、最遠距離。已知ν= [ 10 15 20 25 ] m/s,其對應θ=[30 40 50 60]度。
1. 試撰寫一函數,並繪出其投射之軌跡。
2. 同上題,若發射點高於平面100m時,求其對應之狀況。
3. 同上題,求物體自發射後,其著地之時間。




註:請同學針對本題目直接回應(COMMENT),請勿採用EMAIL方式提交。

5 則留言:

Eric Wu 提到...

function trajectory_plot(v,d,p)
% v is the initial velocity(m/s)
% d is the angle of elevation(degree)
% p is the number of point to plot
s=size(v);
for i=1:s(1,2)
R=v(1,i).^2.*sind(2.*d(1,i))./9.8;
x_i=linspace(0,R,p); % How many point to draw a plot
y_i=tand(d(1,i)).*x_i-x_i.^2.*9.8./(2.*v(1,i).^2.*cosd(d(1,i)).^2); %trajectory formation
subplot(s(1,2)/2,2,i); % draw a plot in one figure (for M x 2 plot)
plot(x_i,y_i)
xlabel('distance(M)');
ylabel('height(M)');
axis([0,80,0,25]);
end

將v=[10 15 20 25];d=[30 40 50 60]帶入以p=100點得到的答案為

軌跡

Eric Wu 提到...

function [t]=trajectory_plot_h(v,d,h)
% v is the initial velocity(m/s)
% d is the angle of elevation(degree)
% h is the initial height
% t is the total time
s=size(v);
for i=1:s(1,2)
p=[(-1/2*9.8) v(1,i).*sind(d(1,i)) h];
[time l]=max(roots(p)); % total time
t_i=time;
R=v(1,i).*cosd(d(1,i)).*t_i;
x=linspace(0,R); % How many point to draw a plot
y=tand(d(1,i)).*x-x.^2.*9.8./(2.*v(1,i).^2.*cosd(d(1,i)).^2)+h; %trajectory formation
subplot(s(1,2)/2,2,i); % draw a plot in one figure (for M x 2 plot)
plot(x,y)
xlabel('distance(M)');
ylabel('height(M)');
axis([0,100,0,130]);
t(1,i)=t_i;
end

將v=[10 15 20 25];d=[30 40 50 60]帶入以p=100點得到的答案為
軌跡圖
以及
ans =

5.0565 5.6073 6.3438 7.2381

黃世榮 提到...

程式中 是固定了行列之一的作法
s(1.2) d(1,i)
當然老師的是VECTOR形式 所以沒這困擾

啥困擾呢?
我問個很無聊的問題,小的不才
今天假設讀進來的數據是MATRIX形式
雖然你所寫的已經是MATRIX形式

但在處理大量數據時 難免有像我這樣的懶人
在輸入資料時 是換行的
也就是資料不限於一維時

我自己是只有想到使用reshape
再配合length or 程式中所使用的size
去應對

如果我問的很傻 我說聲抱歉@@

不留白老人 提到...

Eric 的部分:
size(v)改為使用length(v)會更佳,即
for i=1:length(v)

另外圖可以同時繪在一張,只要在畫第一個圖之後加上hold on就行。

ncbee 提到...

我這是老師所說hold on所呈現的圖
http://r95631002.blogspot.com/2006/10/problem_19.html