| 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> |
|