205
dx = jac\(-f0);
x = x + dx;
if sqrt(dot(dx,dx)/length(x)) < tol*max(abs(x),1.0)
root = x; return
end
end
error('Too many iterations')
function [jac,f0] = jacobian(func,x)
% Returns the Jacobian matrix and f(x).
h = 1.0e-4; n = length(x);
jac = zeros(n); f0 = feval(func,x);
for i =1:n
temp = x(i);
x(i) = temp + h;
f1 = feval(func,x);
x(i) = temp;
jac(:,i) = (f1 - f0)/h;
end
function main
global tSTART tSTOP h k v0
k=0; %so lan ban thu
tSTART = 0; tSTOP = 150;
h = 0.01; v0 = 500;
theta = 40; % thu ban voi theta = 40 do
theta = newtonRaphson2(@residual,theta);
[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)
tSTOP = tSol(ki)
[t,y] = ode45(@dEqs,[tSTART:h:tSTOP],inCond(v0, theta));
plot(y(:,1), y(:,3), 'k-', 'Linewidth', 2), grid on
xlabel('x'), ylabel('y')
disp('Goc ban can tim (do)')
theta
Kết quả thu ñược góc bắn cần thiết ñể ñạt mục tiêu là
77.8777
o
θ
=
. Thời gian bay
của viên ñạn là 91.35 giây. Quĩ ñạo chuyển ñộng của viên ñạn như trên hình 9-17.