LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
map_pntquad.m
1function [Pnt,S]=map_pntquad(MAP,na,t)
2D0=MAP{1};
3D1=MAP{2};
4Ki=length(MAP{1});
5P0=zeros(Ki^2*(na+1),1);
6P0(1:Ki^2)=reshape(eye(Ki),1,Ki^2);
7for n=1:na
8 P0(n*Ki^2+1:(n+1)*Ki^2)=0*eye(Ki);
9end
10options = odeset('RelTol',1e-10,'MaxStep',1e-3,'AbsTol',1e-10,'NonNegative',1:length(P0),'Refine',10);
11[t,P]=ode45(@pnt_ode,[0 t],P0,options);
12P=P(end,:);
13Pnt=[];
14S=zeros(Ki);
15for n=0:na
16 Pnt{n+1}=reshape(P(n*Ki^2+1:(n+1)*Ki^2),Ki,Ki);
17 S=S+Pnt{n+1};
18end
19Pnt=Pnt{end};
20 function dP = pnt_ode(t,P)
21 na=round(length(P)/Ki^2)-1;
22 dP(1:Ki^2,1)=reshape(reshape(P(1:Ki^2),Ki,Ki)*D0,Ki^2,1);
23 for n=1:na
24 Pn_1t=reshape(P(((n-1)*Ki^2+1):n*Ki^2),Ki,Ki);
25 Pnt=reshape(P((n*Ki^2+1):(n+1)*Ki^2),Ki,Ki);
26 dP((n*Ki^2+1):(n+1)*Ki^2,1)=reshape(Pnt*D0+Pn_1t*D1,Ki^2,1);
27 end
28 end
29end