MNCPD

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 1

SUB 1

echo off;
global t0 tf y01 y02 q h prec;
t(1)=t0;
tc=t0;
y(1,1)=y01;
y(1,2)=y02;
yc2=[y01 y02];
yc1=yc2+h*testfun(tc,yc2);
tc=tc+h;
for j=2:q/h,
yca=yc1+h*(3*testfun(tc,yc1)testfun(tc-h,yc2))/2;
yc=yc1+h*(testfun(tc+h,yca)
+testfun(tc,yc1))/2;
while (sqrt((yc(1)-yca(1))^2+(yc(2)yca(2))^2)>prec)
yca=yc;
yc=yc1+h*(testfun(tc+h,yca)
+testfun(tc,yc1))/2;
end;
tc=tc+h;
yc2=yc1;
yc1=yc;
end;
t(2)=tc;
y(2,1)=yc(1);
y(2,2)=yc(2);
for k=3:(tf-t0)/q+1,
for j=1:q/h,
yca=yc1+h*(3*testfun(tc,yc1)testfun(tc-h,yc2))/2;
yc=yc1+h*(testfun(tc+h,yca)
+testfun(tc,yc1))/2;
while (sqrt((yc(1)-yca(1))^2+
(yc(2)-yca(2))^2)>prec)
yca=yc;
yc=yc1+h*(testfun(tc+h,yca)
+testfun(tc,yc1))/2;
end;
tc=tc+h;
yc2=yc1;
yc1=yc;
end;
t(k)=tc;
y(k,1)=yc(1);
y(k,2)=yc(2);
end;
clf;
plot(t,y(:,2),'-b');
title('raspuns');
echo off;
global t0 tf y01 y02 q h;
[t,y]=ode23('testfun',[t0 tf],[y01 y02]);
clf;
plot(t,y(:,2),'-b');
title('raspuns');
echo off;
global t0 tf y01 y02 q h;
t(1)=t0;
tc=t0;
y(1,1)=y01;
y(1,2)=y02;
yc=[y01 y02];
for k=2:(tf-t0)/q+1
for j=1:q/h
yc=yc+h*testfun(tc,yc);
tc=tc+h;
end;
t(k)=tc;
y(k,1)=yc(1);
y(k,2)=yc(2);
end;
clf;
plot(t,y(:,2),'-b');
title('raspuns');

function yd=testfun(t,y);
global kp u t1 t2;
yd(1)=(kp*u - y(2))/(t1*t2);
yd(2)=-(t1+t2)*y(2)/(t1*t2) + y(1);

SUB 2
function y=f2(x);

y(1)=x(1)^3 - 2*x(1)*x(2)^2 + 3*x(2)^3 +


5*(x(1)+x(2));
y(2)=x(1)^2*x(2) + x(2)^2*x(1) + 3*x(2);
y=y';
function J=df2(x);
J=[3*x(1)^2-2*x(2)^2+5
-4*x(1)*x(2)+9*x(2)+5;...
2*x(1)*x(2)+x(2)^2
x(1)^2+2*x(1)*x(2)+3];
function
[sol,iter]=newtraph(nume_f,nume_df,x0,prec,
itermax)
n=length(x0);
dx=2*prec*ones(n,1);
x_c=x0;
iter=0;
while (norm(dx)>prec && iter<itermax)
J=feval(nume_df,x_c);
dx=-inv(J)*feval(nume_f,x_c);
x_c=x_c+dx;
iter=iter+1;
end;
sol=x_c;
ex
[sol,iter] = newtraph('f2','df2',
[1.1;0.5],1e-5,10)

SUB 3
[m,n]=size(a);
a1=a;
u=eye(m); v=eye(n);
kc=min(m-1,n); kl=min(m,n-2);
for k=1:max(kc,kl)
if k<=kc
sig=sign(a(k,k))*sqrt(a(k:m,k)'*a(k:m,k));
for i=1:m
if i<=k-1
t(i)=0;
elseif i==k
t(i)=sig+a(k,k);
else
t(i)=a(i,k);
end;
end;
beta=sig*(sig+a(k,k));
u1=eye(m)-(t'*t)/beta;
a=u1*a; u=u1*u;
end;
clear t;
if k<=kl
sig=sign(a(k,k+1))*sqrt(a(k,k+1:n)*a(k,k+1:
n)');
for i=1:n
if i<=k
t(i)=0;
elseif i==k+1
t(i)=sig+a(k,k+1);
else
t(i)=a(k,i);
end;
end;
beta=sig*(sig+a(k,k+1));
v1=eye(n)-(t'*t)/beta;
a=a*v1; v=v*v1;
end;
clear t;
end;

You might also like