BÀI GIẢNG MATLAB - Trang 206

204

2

2

,

,

mx

cvx

my

mg

cvy

v

x

y

= −
= −

=

+

ɺɺ

ɺ

ɺɺ

ɺ

ɺ

ɺ

Biết rằng vận tốc của viên ñạn khi thoát khỏi miệng là nòng

0

v

. Hãy xác ñịnh góc

nghiêng

θ ñể viên ñạn ñạt mục tiêu ở khoảng cách 8 km. Sử dụng các số liệu

20 kg,

m

=

4

3.2 10 kg/m

c

=

×

,

0

500 m/s

v

=

, và

2

9.80665 m/s

g

=

.

Phương pháp giải bài toán như sau, trước hết ta bắn thử với góc bắn

θ nào ñó giải

phương trình vi phân chuyển ñộng ta nhận ñược ñiểm tiếp ñất với tầm xa

( )

L

L

θ

=

, so sánh ñiểm rơi này mục tiêu ta ñược một sai lệch

( )

( )

mt

r

L

L

θ

θ

=

Từ phương trình sai số này cho ta xác ñịnh ñược góc bắn cần thiết.

Trong matlab ta cần xây dựng các m-file sau:

function F = dEqs(t,y) % First-order differential equations.
m = 20; c = 3.2e-4; g = 9.80665;
x_ = y(1); vx = y(2); y_ = y(3); vy = y(4);
v = sqrt(vx^2+vy^2);
xdot = vx; vxdot = 1/m*(-c*v*vx);
ydot = vy; vydot = 1/m*(-m*g-c*v*vy);

F = [xdot, vxdot, ydot, vydot]';

function y = inCond(v0, theta)
y = [0 v0*cosd(theta) 0 v0*sind(theta)]';

function r = residual(theta)
global tSTART tSTOP h k v0
k=k+1
[tSol,ySol] = ode45(@dEqs,[tSTART:h:tSTOP],inCond(v0, theta));
% tim thoi gian chuyen dong
for j = 50:length(tSol)
if ySol(j,3)>=0 && ySol(j+1,3)<0
t_ground(j) = tSol(j); ki = j+1;
end
end
% Tam xa L(theta)
tamxa = ySol(ki, 1); r = tamxa-8000;

function root = newtonRaphson2(func,x,tol)
if nargin == 2; tol = 1.0e-8; end
if size(x,1) == 1; x = x'; end % x must be column vector
for i = 1:30
[jac,f0] = jacobian(func,x);
if sqrt(dot(f0,f0)/length(x)) < tol root = x; return end

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.