clear;
M=0.024;
a=1/1.5;
b=1;
alpha=0;
beta=0;
maxiter=100;
for i=1:3
C=1;
if i==1
C=C-10^-3;
elseif i==2
C=C+10^-3;
elseif i==3
C=C
end
aa=0
epsilon=1e-3;
x0=0;
h=(b-a)/maxiter
t0=a
s(1)=(beta-alpha)/(b-a);
t=zeros(maxiter+1,1);
t=a:h:b;
x1(1)=0
x2(1)=s(1)
z1(1)=0
z2(1)=1
for ii=1:maxiter
H=0.25;
m=1.2;
Y=x1(ii);
Y1=x2(ii);
tt=t(ii);
sigmay=((Y/tt)^2-Y*Y1/tt+(Y1)^2)^0.5;
if sigmay>1
aa=(sigmay.^m-1)/(H*sigmay)
elseif sigmay<=1
aa=0
end
f=@(t,x1,x2)x2 %f代表y
g=@(t,x1,x2)1/(t*(1+aa))*C+1/(t.^2)*x1-1/t.*x2 %g代表y'
F=@(t,z1,z2)z2;%F代表z
G=@(t,z1,z2)1/(t.^2)*z1-1/t*z2;%G代表z'
f0=x1(ii);
g0=x2(ii);
F0=z1(ii);
G0=z2(ii);
f1=f(t0,f0,g0)
g1=g(t0,f0,g0)
F1=F(t0,F0,G0)
G1=G(t0,F0,G0)
f2=f(t0+h/2,f0+h/2*f1,g0+h/2*g1)
g2=g(t0+h/2,f0+h/2*f1,g0+h/2*g1)
F2=F(t0+h/2,F0+h/2*F1,G0+h/2*G1)
G2=G(t0+h/2,F0+h/2*F1,G0+h/2*G1)
f3=f(t0+h/2,f0+h/2*f2,g0+h/2*g2)
g3=g(t0+h/2,f0+h/2*f2,g0+h/2*g2)
F3=F(t0+h/2,F0+h/2*F2,G0+h/2*G2)
G3=G(t0+h/2,F0+h/2*F2,G0+h/2*G2)
f4=f(t0+h,f0+h*f3,g0+h*g3)
g4=g(t0+h,f0+h*f3,g0+h*g3)
F4=F(t0+h,F0+h*F3,G0+h*G3)
G4=G(t0+h,F0+h*F3,G0+h*G3)
x1(ii+1)=x1(ii)+h/6*(f1+2*f2+2*f3+f4)
x2(ii+1)=x2(ii)+h/6*(g1+2*g2+2*g3+g4) %龙格库塔法迭代
z1(ii+1)=z1(ii)+h/6*(F1+2*F2+2*F3+F4)
z2(ii+1)=z2(ii)+h/6*(G1+2*G2+2*G3+G4)
end
% iterations:
%
flag=0;
n=length(x1(1,:));
diff=abs(x1(1,n)-beta);
if diff
flag=1;
end
k=1;
while flag==0,
s(k+1)=s(k)+(beta-x1(1,n))/z1(1,n);
clear t;
clear x1;
clear x2;
x1(1)=0
x2(1)=s(k+1)
z1(1)=0
z2(1)=1
t=zeros(maxiter+1,1);
t=a:h:b;
for ii=1:maxiter
H=0.25;
m=1.2;
Y=x1(ii);
Y1=x2(ii);
tt=t(ii);
sigmay=((Y/tt)^2-Y*Y1/tt+(Y1)^2)^0.5;
if sigmay>1
aa=(sigmay.^m-1)/(H*sigmay)
elseif sigmay<=1
aa=0
end
f=@(t,x1,x2)x2 %f代表y
g=@(t,x1,x2)1/(t*(1+aa))*C+1/(t.^2)*x1-1/t.*x2 %g代表y'
F=@(t,z1,z2)z2;
G=@(t,z1,z2)1/(t.^2)*z1-1/t*z2;
f0=x1(ii);
g0=x2(ii);
F0=z1(ii);
G0=z2(ii);
f1=f(t0,f0,g0)
g1=g(t0,f0,g0)
F1=F(t0,F0,G0)
G1=G(t0,F0,G0)
f2=f(t0+h/2,f0+h/2*f1,g0+h/2*g1)
g2=g(t0+h/2,f0+h/2*f1,g0+h/2*g1)
F2=F(t0+h/2,F0+h/2*F1,G0+h/2*G1)
G2=G(t0+h/2,F0+h/2*F1,G0+h/2*G1)
f3=f(t0+h/2,f0+h/2*f2,g0+h/2*g2)
g3=g(t0+h/2,f0+h/2*f2,g0+h/2*g2)
F3=F(t0+h/2,F0+h/2*F2,G0+h/2*G2)
G3=G(t0+h/2,F0+h/2*F2,G0+h/2*G2)
f4=f(t0+h,f0+h*f3,g0+h*g3)
g4=g(t0+h,f0+h*f3,g0+h*g3)
F4=F(t0+h,F0+h*F3,G0+h*G3)
G4=G(t0+h,F0+h*F3,G0+h*G3)
x1(ii+1)=x1(ii)+h/6*(f1+2*f2+2*f3+f4)
x2(ii+1)=x2(ii)+h/6*(g1+2*g2+2*g3+g4) %龙格库塔法迭代
z1(ii+1)=z1(ii)+h/6*(F1+2*F2+2*F3+F4)
z2(ii+1)=z2(ii)+h/6*(G1+2*G2+2*G3+G4)
end
n=length(x1(1,:));
diff=abs(x1(1,n)-beta);
if diff
flag=1;
end
k=k+1;
end
n=length(x1(1,:));
for iii =1:n
cc(1,iii)=x2(1,iii).*t(1,iii);
end
ff(i)=trapz(t,cc)+M;
end
while abs(ff(3))>0.001
CC=C-2*10^-3*ff(3)/(ff(2)-ff(1));
for i=1:3
if i==1
C=CC-10^-3;
elseif i==2
C=CC+10^-3;
elseif i==3
C=CC;
end
for ii=1:maxiter
H=0.25;
m=1.2;
Y=x1(ii);
Y1=x2(ii);
tt=t(ii);
sigmay=((Y/tt)^2-Y*Y1/tt+(Y1)^2)^0.5;
if sigmay>1
aa=(sigmay.^m-1)/(H*sigmay)
elseif sigmay<=1
aa=0
end
f=@(t,x1,x2)x2 %f代表y
g=@(t,x1,x2)1/(t*(1+aa))*C+1/(t.^2)*x1-1/t.*x2 %g代表y'
F=@(t,z1,z2)z2;
G=@(t,z1,z2)1/(t.^2)*z1-1/t*z2;
f0=x1(ii);
g0=x2(ii);
F0=z1(ii);
G0=z2(ii);
f1=f(t0,f0,g0)
g1=g(t0,f0,g0)
F1=F(t0,F0,G0)
G1=G(t0,F0,G0)
f2=f(t0+h/2,f0+h/2*f1,g0+h/2*g1)
g2=g(t0+h/2,f0+h/2*f1,g0+h/2*g1)
F2=F(t0+h/2,F0+h/2*F1,G0+h/2*G1)
G2=G(t0+h/2,F0+h/2*F1,G0+h/2*G1)
f3=f(t0+h/2,f0+h/2*f2,g0+h/2*g2)
g3=g(t0+h/2,f0+h/2*f2,g0+h/2*g2)
F3=F(t0+h/2,F0+h/2*F2,G0+h/2*G2)
G3=G(t0+h/2,F0+h/2*F2,G0+h/2*G2)
f4=f(t0+h,f0+h*f3,g0+h*g3)
g4=g(t0+h,f0+h*f3,g0+h*g3)
F4=F(t0+h,F0+h*F3,G0+h*G3)
G4=G(t0+h,F0+h*F3,G0+h*G3)
x1(ii+1)=x1(ii)+h/6*(f1+2*f2+2*f3+f4)
x2(ii+1)=x2(ii)+h/6*(g1+2*g2+2*g3+g4) %龙格库塔法迭代
z1(ii+1)=z1(ii)+h/6*(F1+2*F2+2*F3+F4)
z2(ii+1)=z2(ii)+h/6*(G1+2*G2+2*G3+G4)
end
% iterations:
%
flag=0;
n=length(x1(1,:));
diff=abs(x1(1,n)-beta);
if diff
flag=1;
end
k=1;
while flag==0,
s(k+1)=s(k)+(beta-x1(1,n))/z1(1,n);
clear t;
clear x1;
clear x2;
x1(1)=0
x2(1)=s(k+1)
z1(1)=0
z2(1)=1
t=zeros(maxiter+1,1);
t=a:h:b;
for ii=1:maxiter
H=0.25;
m=1.2;
Y=x1(ii);
Y1=x2(ii);
tt=t(ii);
sigmay=((Y/tt)^2-Y*Y1/tt+(Y1)^2)^0.5;
if sigmay>1
aa=(sigmay.^m-1)/(H*sigmay)
elseif sigmay<=1
aa=0
end
f=@(t,x1,x2)x2 %f代表y
g=@(t,x1,x2)1/(t*(1+aa))*C+1/(t.^2)*x1-1/t.*x2 %g代表y'
F=@(t,z1,z2)z2;
G=@(t,z1,z2)1/(t.^2)*z1-1/t*z2;
f0=x1(ii);
g0=x2(ii);
F0=z1(ii);
G0=z2(ii);
f1=f(t0,f0,g0)
g1=g(t0,f0,g0)
F1=F(t0,F0,G0)
G1=G(t0,F0,G0)
f2=f(t0+h/2,f0+h/2*f1,g0+h/2*g1)
g2=g(t0+h/2,f0+h/2*f1,g0+h/2*g1)
F2=F(t0+h/2,F0+h/2*F1,G0+h/2*G1)
G2=G(t0+h/2,F0+h/2*F1,G0+h/2*G1)
f3=f(t0+h/2,f0+h/2*f2,g0+h/2*g2)
g3=g(t0+h/2,f0+h/2*f2,g0+h/2*g2)
F3=F(t0+h/2,F0+h/2*F2,G0+h/2*G2)
G3=G(t0+h/2,F0+h/2*F2,G0+h/2*G2)
f4=f(t0+h,f0+h*f3,g0+h*g3)
g4=g(t0+h,f0+h*f3,g0+h*g3)
F4=F(t0+h,F0+h*F3,G0+h*G3)
G4=G(t0+h,F0+h*F3,G0+h*G3)
x1(ii+1)=x1(ii)+h/6*(f1+2*f2+2*f3+f4)
x2(ii+1)=x2(ii)+h/6*(g1+2*g2+2*g3+g4) %龙格库塔法迭代
z1(ii+1)=z1(ii)+h/6*(F1+2*F2+2*F3+F4)
z2(ii+1)=z2(ii)+h/6*(G1+2*G2+2*G3+G4)
end
n=length(x1(1,:));
diff=abs(x1(1,n)-beta);
if diff
flag=1;
end
k=k+1;
end
n=length(x1(1,:));
for iiii =1:n
cc(1,iiii)=x2(1,iiii).*t(1,iiii);
end
ff(i)=trapz(t,cc)+M;
end
end
for iiiii=1:n
T(1,iiiii)=x1(1,iiiii)/t(1,iiiii);
end
plot(t/a,T,t/a,x2)