📄 sumcurve.m
字号:
function [P,P2,ph,id]=sumcurve(bx,u,vi,chois)
% sum frame elements on each Ui of curve manifold Mx
% u - integral scope; bx - efficients of curve functions
% p,p2,ph,ph - integral results; id - cross indicator
% All rights Reserved, Feb. 2006. Kaijun WANG
if chois=='each'
[nl,nc,nx]=size(bx);
if length(nx)==0 nx=1; end
[nr,nc]=size(vi);
v=length(u);
S=(1:(v-1):nl*(v-1))-1;
% sum on Ui by quadrature of curve f(u)=a*u^2+b*u+c is
% F(u)=1/3*a*u^3+1/2*b*u^2+c*u, and the one of f(u)*g(u)
for i=1:nx
a=bx(:,1,i);
b=bx(:,2,i);
c=bx(:,3,i);
% p(i)=[F(t)-F(s)]
for k=1:v-1
s=u(k);
t=u(k+1);
R=S+k;
P(R,i)=a*(t^3-s^3)/3+b*(t^2-s^2)/2+c*(t-s);
end
% [p(i)p(i)]=F(t)-F(s)
for k=1:v-1
s=u(k);
t=u(k+1);
R=S+k;
Q=a.^2*(t^5-s^5)/5+a.*b*(t^4-s^4)/2+(2*a.*c+b.^2)*(t^3-s^3)/3;
P2(R,i)=Q+b.*c*(t^2-s^2)+c.^2*(t-s);
end
% quadrature in starting points of curve
for j=1:nr
U=(vi(j,1)-1):vi(j,2);
for k=1:v-1
s=U(k);
t=U(k+1);
R=S(j)+k;
P(R,i)=a(j)*(t^3-s^3)/3+b(j)*(t^2-s^2)/2+c(j)*(t-s);
Q=a(j)^2*(t^5-s^5)/5+a(j)*b(j)*(t^4-s^4)/2+(2*a(j)*c(j)+b(j)^2)*(t^3-s^3)/3;
P2(R,i)=Q+b(j)*c(j)*(t^2-s^2)+c(j)^2*(t-s);
end
end
end
ks=0;
for i=1:nx
for j=i+1:nx
ks=ks+1;
id(i,j)=ks;
id(j,i)=ks;
a= bx(:,1,i).*bx(:,1,j)/5;
b=(bx(:,1,i).*bx(:,2,j)+bx(:,1,j).*bx(:,2,i))/4;
c=(bx(:,1,i).*bx(:,3,j)+bx(:,1,j).*bx(:,3,i)+bx(:,2,i).*bx(:,2,j))/3;
d=(bx(:,2,i).*bx(:,3,j)+bx(:,2,j).*bx(:,3,i))/2;
e= bx(:,3,i).*bx(:,3,j);
% [p(i)h(j)]=F(t)-F(s)
for k=1:v-1
s=u(k);
t=u(k+1);
R=S+k;
ph(R,ks)=a*(t^5-s^5)+b*(t^4-s^4)+c*(t^3-s^3)+d*(t^2-s^2)+e*(t-s);
end
for m=1:nr
U=(vi(m,1)-1):vi(m,2);
for k=1:v-1
s=U(k);
t=U(k+1);
R=S(m)+k;
ph(R,ks)=a(m)*(t^5-s^5)+b(m)*(t^4-s^4)+c(m)*(t^3-s^3)+d(m)*(t^2-s^2)+e(m)*(t-s);
end
end
end
end
else % old sumcurve
nx=size(bx,3);
if length(nx)==0 nx=1; end
[nr,nc]=size(vi);
v=length(u);
% Ui=(s,t]
s=u(1);
t=u(v);
% sum on Ui by quadrature of curve f(u)=a*u^2+b*u+c is
% F(u)=1/3*a*u^3+1/2*b*u^2+c*u, and the one of f(u)*g(u)
for i=1:nx
a=bx(:,1,i);
b=bx(:,2,i);
c=bx(:,3,i);
% p(i)=[F(t)-F(s)]
P(:,i)=a*(t^3-s^3)/3+b*(t^2-s^2)/2+c*(t-s);
% [p(i)p(i)]=F(t)-F(s)
Q=a.^2*(t^5-s^5)/5+a.*b*(t^4-s^4)/2+(2*a.*c+b.^2)*(t^3-s^3)/3;
P2(:,i)=Q+b.*c*(t^2-s^2)+c.^2*(t-s);
% U1=(u,v], U2=(u,v]
for j=1:nr
u=vi(j,1)-1;
v=vi(j,2);
P(j,i)=a(j)*(v^3-u^3)/3+b(j)*(v^2-u^2)/2+c(j)*(v-u);
Q=a(j)^2*(v^5-u^5)/5+a(j)*b(j)*(v^4-u^4)/2+(2*a(j)*c(j)+b(j)^2)*(v^3-u^3)/3;
P2(j,i)=Q+b(j)*c(j)*(v^2-u^2)+c(j)^2*(v-u);
end
end
k=0;
for i=1:nx
for j=i+1:nx
k=k+1;
id(i,j)=k;
id(j,i)=k;
a= bx(:,1,i).*bx(:,1,j)/5;
b=(bx(:,1,i).*bx(:,2,j)+bx(:,1,j).*bx(:,2,i))/4;
c=(bx(:,1,i).*bx(:,3,j)+bx(:,1,j).*bx(:,3,i)+bx(:,2,i).*bx(:,2,j))/3;
d=(bx(:,2,i).*bx(:,3,j)+bx(:,2,j).*bx(:,3,i))/2;
e= bx(:,3,i).*bx(:,3,j);
% [p(i)h(j)]=F(t)-F(s)
ph(:,k)=a*(t^5-s^5)+b*(t^4-s^4)+c*(t^3-s^3)+d*(t^2-s^2)+e*(t-s);
for m=1:nr
u=vi(m,1)-1;
v=vi(m,2);
ph(m,k)=a(m)*(v^5-u^5)+b(m)*(v^4-u^4)+c(m)*(v^3-u^3)+d(m)*(v^2-u^2)+e(m)*(v-u);
end
end
end
end % end choise if
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -