Open in the MATLAB editor: d02nu_example
function d02nu_example fprintf('d02nu example results\n\n'); % Initialize variables and arrays for setup routine n = int64(3); ord = int64(5); sdy = int64(ord + 1); petzld = false; con = zeros(6); tcrit = 0; hmin = 1.0e-10; hmax = 10; h0 = 0; maxstp = int64(200); mxhnil = int64(5); lrwork = 50 + 4*n; rwork = zeros(lrwork); % Setup integration method using d02nv. [const, rwork, ifail] = d02nv(... n, sdy, ord, 'Newton', petzld, con, tcrit, ... hmin, hmax, h0, maxstp, mxhnil, 'Average-L2', ... rwork); % Setup for sparse Jacbian using d02nu nwkjac = int64(100); njcpvt = int64(150); ia = int64(0); ja = int64(0); sens = 0; u = 0.1; eta = 1.0e-4; lblock = true; jacpvt = zeros(njcpvt, 1); [jacpvt, rwork, ifail] = d02nu(... n, n, 'Numerical', nwkjac, ia, ja, njcpvt, ... sens, u, eta, lblock, rwork); % Initialize variables and arrays for integration t = 0; tout = 10; y = [1; 0; 0]; rtol = [0.0001]; atol = [1e-07]; itol = int64(1); inform = zeros(23, 1, 'int64'); ysave = zeros(n, sdy); wkjac = zeros(nwkjac, 1); itask = int64(1); itrace = int64(0); % Integrate ODE from t=0 to t=tout, no monitoring, using d02nd [t, y, ydot, rwork, inform, ysave, wkjac, jacpvt, ifail] = ... d02nd(t, tout, y, rwork, rtol, atol, itol, inform, @fcn, ysave, @jac, ... wkjac, jacpvt, 'd02nby', itask, itrace); fprintf('Solution y and derivative y'' at t = %7.4f is:\n',t); fprintf('\n %10s %10s\n','y','y'''); for i=1:n fprintf(' %10.4f %10.4f\n',y(i),ydot(i)); end function [f, ires] = fcn(neq, t, y, ires) % Evaluate derivative vector. f = zeros(3,1); f(1) = -0.04d0*y(1) + 1.0d4*y(2)*y(3); f(2) = 0.04d0*y(1) - 1.0d4*y(2)*y(3) - 3.0d7*y(2)*y(2); f(3) = 3.0d7*y(2)*y(2);
d02nu example results Solution y and derivative y' at t = 10.0000 is: y y' 0.8414 -0.0075 0.0000 -0.0000 0.1586 0.0075