1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
| function ch3ex6 | % CH3EX6 example 3.5.6 of book Solving ODEs with Matlab | <p>global R<br /> | color = [ 'k', 'r', 'b' ];<br /> | options = bvpset('FJacobian',@Jac,'BCJacobian',@BCJac,...<br /> | 'Vectorized','on');<br /> | R = 100;<br /> | sol = bvpinit(linspace(0,1,10),ones(7,1),1);<br /> | hold on<br /> | for i = 1:3<br /> | sol = bvp4c(@ode,@bc,sol,options);<br /> | fprintf('For R = %5i, A = %4.2f.\n',R,sol.parameters);<br /> | plot(sol.x,sol.y(2,:),color(i));<br /> | axis([-0.1 1.1 0 1.7]);<br /> | drawnow<br /> | R = 10<em>R;<br /> | end<br /> | legend('R = 100','R = 1000','R = 10000');<br /> | hold off<br /> | %================================================================<br /> | function dydx = ode(x,y,A);<br /> | global R<br /> | P = 0.7</em>R;<br /> | dydx = [ y(2,:); y(3,:); R<em>(y(2,:).^2- y(1,:).</em>y(3,:)-A);...<br /> | y(5,:); -R<em>y(1,:).</em>y(5,:)-1; y(7,:); -P<em>y(1,:).</em>y(7,:) ];<br /> | function [dFdy,dFdA] = Jac(x,y,A)<br /> | global R</p> | <p>dFdy = [ 0, 1, 0, 0, 0, 0, 0<br /> | 0, 0, 1, 0, 0, 0, 0<br /> | -R<em>y(3), 2</em>R<em>y(2), -R</em>y(1), 0, 0, 0, 0<br /> | 0, 0, 0, 0, 1, 0, 0<br /> | -R<em>y(5), 0, 0, 0, -R</em>y(1), 0, 0<br /> | 0, 0, 0, 0, 0, 0, 1<br /> | -7/10<em>R</em>y(7), 0, 0, 0, 0, 0, -7/10<em>R</em>y(1) ];<br /> | dFdA=[0;0;-R;0;0;0;0];<br /> | function res = bc(ya,yb,A)<br /> | res = [ ya(1); ya(2); yb(1)-1; yb(2);...<br /> | ya(4); yb(4); ya(6); yb(6)-1 ];<br /> | function [dBCdya,dBCdyb,dBCdA] = BCJac(ya,yb,A)<br /> | dBCdya=[1,0,0,0,0,0,0<br /> | 0, 1, 0, 0, 0, 0, 0<br /> | 0, 0, 0, 0, 0, 0, 0<br /> | 0, 0, 0, 0, 0, 0, 0<br /> | 0, 0, 0, 1, 0, 0, 0<br /> | 0, 0, 0, 0, 0, 0, 0<br /> | 0, 0, 0, 0, 0, 1, 0<br /> | 0, 0, 0, 0, 0, 0, 0 ];<br /> | dBCdyb=[0,0,0,0,0,0,0<br /> | 0, 0, 0, 0, 0, 0, 0<br /> | 1, 0, 0, 0, 0, 0, 0<br /> | 0, 1, 0, 0, 0, 0, 0<br /> | 0, 0, 0, 0, 0, 0, 0<br /> | 0, 0, 0, 1, 0, 0, 0<br /> | 0, 0, 0, 0, 0, 0, 0<br /> | 0, 0, 0, 0, 0, 1, 0 ];<br /> | dBCdA = zeros(8,1);</p> |
|