fituica mncpd

3
Runge Kuta 1 function yd=ord2zd(t,y) global kp tp zeta u yd(1)=y(2); yd(2)=(kp*u-2*zeta*tp*y(2)-y(1))/tp^2; principal echo off; global kp,tp,zeta,u; t(1)=t0; y(1,1)=y10;y(1,2)=y20; tc=t0; yc=[y10 y20]; for k=2:(tf-t0)/q for j=1:q/h k0=h*ord2zd(t(k-1),y(k-1,:)); k1=h*ord2zd(t(k-1)+h/2,y(k- 1,:)+k0/2); k2=h*ord2zd(t(k-1)+h/2,y(k- 1,:)+k1/2); yc=yc+(k0+2*k1+2*k2)/6; yc=yc+h*ord2zd(tc,yc); tc=tc+h; end; t(k)=tc; y(k,1)=yc(1); y(k,2)=yc(2); end; clf; subplot(211); plot(t,y(:,1),'-r'); title('raspuns sis ord2') grid; subplot (212); plot (t,y(:,2),'-b'); title('derivata raspuns'); grid; Ode23 function yd=ord2(t,y) global kp tp zeta u yd(1)=y(2); yd(2)=(kp*u-2*zeta*tp*y(2)-y(1))/tp^2; yd=yd'; principal global kp tp zeta u [t,y]=ode23('ord2',[t0 tf],[y10 y20]) plot(t,y(:,1),'-b') Ode23pz function yd=ord2pz(t,y) global kp t1 t2 t3 u yd(1)=kp*u-y(2)/(t2*t3); yd(2)=(kp*t1*u-(t2*t3)*y(2))/(t2*t3)+y(1); yd=yd'; principal global kp t1 t2 t3 u [t,y]=ode23('ord2pz',[t0 tf],[y10 y20]) plot(t,y(:,1),'-r') STEP ORD1 ord1 function yd=ord1(t,y); global kp tp u; yd=(kp*u-y)/tp; princstep1 global kp tp u num=kp dem=[tp 1] step(num,dem) STEP ORD 2 Ord2 function yd=ord2(t,y) global kp tp zeta u yd(1)=y(2); yd(2)=(kp*u-2*zeta*tp*y(2)-y(1))/tp^2; yd=yd'; princstep2 global kp tp zeta u num=kp dem=[tp^2 2*zeta*tp 1] impulse(num,dem) Lsin ord2pz Princlsim num=1; dem=[18 9 1] t=0:0.1:20 for i=1:length(t) u(i)=2; end; y=lsim(num,dem,u,t) plot(t,y,'-m') AM III function yd=ord1sin(t,y); global kp tp a omega ord22p1z function yd=ord22p1z(t,y); global kp t1 t2 t3 u yd(1)=(-y(2)+kp*u)/(t2*t3); yd(2)=(-(t2+t3)*y(2)+kp*t1*u)/(t2*t3)+y(1); princ22p1z clf; echo off; global kp t1 t2 t3 u; t(1)=t0; y(1,1)=y10; y(1,2)=y20; tc=t0; yc3=[y10 y20]; k0=h*ord22p1z(tc,yc3);y k1=h*ord22p1z(tc+h/2,yc3+k0/2); k2=h+ord22p1z(tc+h,yc3+2*k1-k0); yc2=yc3+(k0+4*k1+k2)/6; tc=tc+h; k0=h*ord22p1z(tc,yc2); k1=h*ord22p1z(tc+h/2,yc2+k0/2); k2=h+ord22p1z(tc+h,yc2+2*k1-k0); yc1=yc2+(k0+4*k1+k2)/6; tc=tc+h; for i=3:q/h; k0=h*ord22p1z(tc,yc1); k1=h*ord22p1z(tc+h/2,yc1+k0/2); k2=h*ord22p1z(tc+h,yc1+2*k1-k0); yc=yc1+(k0+4*k1+k2)/6; yc=yc1+h*(9*ord22p1z(tc+h,yc) +19*ord22p1z(tc,yc1)- 5*ord22p1z(tc-h,yc2)+ord22p1z(tc-2*h,yc3))/24; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc; end; t(2)=t(1); y(2,1)=yc(1); y(2,2)=yc(2); for k=3:(tf-t0)/q+1 for i=1:q/h; k0=h*ord22p1z(tc,yc); k1=h*ord22p1z(tc+h/2,yc1+k0/2); k2=h*ord22p1z(tc+h,yc1+2*k1-k0); yc=yc1+(k0+4*k1+k2)/6; yc=yc1+h*(9*ord22p1z(tc+h,yc) +19*ord22p1z(tc,yc1)- 5*ord22p1z(tc-h,yc2)+ord22p1z(tc-2*h,yc3))/24; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc; end; t(k)=tc; y(k,1)=yc(1); y(k,2)=yc(2); end; plot(t,y(:,2),'-r'); grid; title('raspuns sistem'); Metoda bisectiunilor successive Bissuc function [x,nrit]=bissuc(a,b,prec) if(f(a)*f(b))<=0; if f(a)==0; x=a; elseif f(b)==0; x=b; else nrit=0; while abs(a-b)>prec; c=(a+b)/2; if f(c)==0; x=c; elseif f(a)*f(c)<0; b=c; else a=c; end; x=(a+b)/2; nrit=nrit+1; end; end; else s=sprintf('In [%6.3f;%6.3f] nu e o singura solutie.',a,b); disp(s); x=20000; nrit=0; end; f function [y]=f(x) y=exp(x)-5*x; %cum se apeleaza %[sol,nrit]=bissuc(0,1,1e-6) Metoda Newton f function [y]=f(x) y=exp(x)-5*x; fder function [y]=fder(x) y=exp(x)-5; met_tang function [x,nrit]=met_tang(nume_f,nume_fd,x0,prec) x1=x0+2*prec; nrit=0; while abs(x1-x0)>prec; x1=x0; x0=x1-feval(nume_f,x1)/feval(nume_fd,x1); nrit=nrit+1; end; x=x0; PC II fct grad 1 Ord1sin function yd=ord1sin(t,y); global kp tp a omega yd=(kp*a*sin(omega*t)-y)/tp; PrincPc2sin clf; echo off; global kp tp a omega t(1)=t0; y(1)=y0; tc=t0; yc3=y0; k0=h*ord1sin(tc,yc3);y k1=h*ord1sin(tc+h/2,yc3+k0/2); k2=h+ord1sin(tc+h,yc3+2*k1-k0); yc2=yc3+(k0+4*k1+k2)/6; tc=tc+h; k0=h*ord1sin(tc,yc2); k1=h*ord1sin(tc+h/2,yc2+k0/2); k2=h+ord1sin(tc+h,yc2+2*k1-k0); yc1=yc2+(k0+4*k1+k2)/6; tc=tc+h; for i=3:q/h; yca=yc1+h*(23*ord1sin(tc,yc1)- 16*ord1sin(tc-h,yc2)+5*ord1sin(tc-2*h,yc3))/12; yc=yc1+h*(5*ord1sin(tc+h,yca)+ 8*ord1sin(tc,yc1)-ord1sin(tc-h,yc2))/12; while abs(yc-yca)>prec yca=yc; yc=yc1+h*(5*ord1sin(tc+h,yca)+ 8*ord1sin(tc,yc1)-ord1sin(tc-h,yc2))/12; end; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc; end; t(2)=tc; y(2)=yc; for k=3:(tf-t0)/q+1 for i=1:q/h; yca=yc1+h*(23*ord1sin(tc,yc1)- 16*ord1sin(tc-h,yc2)+5*ord1sin(tc-2*h,yc3))/12; yc=yc1+h*(5*ord1sin(tc+h,yc)+ 8*ord1sin(tc,yc1)-ord1sin(tc-h,yc2))/12; while abs(yc-yca)>prec yca=yc; yc=yc1+h*(5*ord1sin(tc+h,yc)+ 8*ord1sin(tc,yc1)-ord1sin(tc-h,yc2))/12; end; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc; end; t(k)=tc; y(k)=yc; end; plot(t,y,'-r'); grid; title('raspuns sistem');

Upload: alexandru-florin

Post on 02-Feb-2016

6 views

Category:

Documents


0 download

DESCRIPTION

fituica mncpd

TRANSCRIPT

Page 1: fituica mncpd

Runge Kuta 1 function yd=ord2zd(t,y)global kp tp zeta uyd(1)=y(2);yd(2)=(kp*u-2*zeta*tp*y(2)-y(1))/tp^2;principalecho off;global kp,tp,zeta,u;t(1)=t0; y(1,1)=y10;y(1,2)=y20;tc=t0;yc=[y10 y20];for k=2:(tf-t0)/q for j=1:q/h k0=h*ord2zd(t(k-1),y(k-1,:)); k1=h*ord2zd(t(k-1)+h/2,y(k-1,:)+k0/2); k2=h*ord2zd(t(k-1)+h/2,y(k-1,:)+k1/2); yc=yc+(k0+2*k1+2*k2)/6; yc=yc+h*ord2zd(tc,yc); tc=tc+h; end; t(k)=tc; y(k,1)=yc(1); y(k,2)=yc(2);end;clf;subplot(211);plot(t,y(:,1),'-r');title('raspuns sis ord2')grid;subplot (212);plot (t,y(:,2),'-b');title('derivata raspuns');grid;

Ode23function yd=ord2(t,y)global kp tp zeta uyd(1)=y(2);yd(2)=(kp*u-2*zeta*tp*y(2)-y(1))/tp^2;yd=yd';principalglobal kp tp zeta u[t,y]=ode23('ord2',[t0 tf],[y10 y20])plot(t,y(:,1),'-b')

Ode23pzfunction yd=ord2pz(t,y)global kp t1 t2 t3 uyd(1)=kp*u-y(2)/(t2*t3);yd(2)=(kp*t1*u-(t2*t3)*y(2))/(t2*t3)+y(1);yd=yd';principalglobal kp t1 t2 t3 u[t,y]=ode23('ord2pz',[t0 tf],[y10 y20])plot(t,y(:,1),'-r')

STEP ORD1ord1function yd=ord1(t,y);global kp tp u;yd=(kp*u-y)/tp;princstep1global kp tp unum=kpdem=[tp 1]step(num,dem)

STEP ORD 2Ord2function yd=ord2(t,y)global kp tp zeta uyd(1)=y(2);yd(2)=(kp*u-2*zeta*tp*y(2)-y(1))/tp^2;yd=yd';princstep2global kp tp zeta unum=kpdem=[tp^2 2*zeta*tp 1]impulse(num,dem)

Lsin ord2pzPrinclsimnum=1;dem=[18 9 1]t=0:0.1:20for i=1:length(t)u(i)=2;end;y=lsim(num,dem,u,t)plot(t,y,'-m')

Metoda aproxsuccesivefunction [x,nrit]=aproxsuc(nume_f,x0,prec)x1=x2+2*prec;nrit=0;while abs(x1-x0)>prec; x1=x0; x0=feval(nume_f,x1)+x1; nrit=nrit+1;end; x=x0;

AM IIIfunction yd=ord1sin(t,y);global kp tp a omega

ord22p1zfunction yd=ord22p1z(t,y);global kp t1 t2 t3 uyd(1)=(-y(2)+kp*u)/(t2*t3);yd(2)=(-(t2+t3)*y(2)+kp*t1*u)/(t2*t3)+y(1);princ22p1zclf;echo off;global kp t1 t2 t3 u;t(1)=t0; y(1,1)=y10; y(1,2)=y20;tc=t0; yc3=[y10 y20];k0=h*ord22p1z(tc,yc3);yk1=h*ord22p1z(tc+h/2,yc3+k0/2);k2=h+ord22p1z(tc+h,yc3+2*k1-k0);yc2=yc3+(k0+4*k1+k2)/6;tc=tc+h;k0=h*ord22p1z(tc,yc2);k1=h*ord22p1z(tc+h/2,yc2+k0/2);k2=h+ord22p1z(tc+h,yc2+2*k1-k0);yc1=yc2+(k0+4*k1+k2)/6;tc=tc+h;for i=3:q/h; k0=h*ord22p1z(tc,yc1); k1=h*ord22p1z(tc+h/2,yc1+k0/2); k2=h*ord22p1z(tc+h,yc1+2*k1-k0); yc=yc1+(k0+4*k1+k2)/6; yc=yc1+h*(9*ord22p1z(tc+h,yc)+19*ord22p1z(tc,yc1)-5*ord22p1z(tc-h,yc2)+ord22p1z(tc-2*h,yc3))/24; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc;end;t(2)=t(1); y(2,1)=yc(1); y(2,2)=yc(2);for k=3:(tf-t0)/q+1 for i=1:q/h; k0=h*ord22p1z(tc,yc); k1=h*ord22p1z(tc+h/2,yc1+k0/2); k2=h*ord22p1z(tc+h,yc1+2*k1-k0); yc=yc1+(k0+4*k1+k2)/6; yc=yc1+h*(9*ord22p1z(tc+h,yc)+19*ord22p1z(tc,yc1)-5*ord22p1z(tc-h,yc2)+ord22p1z(tc-2*h,yc3))/24; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc; end; t(k)=tc; y(k,1)=yc(1); y(k,2)=yc(2);end;plot(t,y(:,2),'-r');grid;title('raspuns sistem');

Metoda bisectiunilor successiveBissucfunction [x,nrit]=bissuc(a,b,prec)if(f(a)*f(b))<=0; if f(a)==0; x=a; elseif f(b)==0; x=b; else nrit=0; while abs(a-b)>prec; c=(a+b)/2; if f(c)==0; x=c; elseif f(a)*f(c)<0; b=c; else a=c; end; x=(a+b)/2; nrit=nrit+1; end; end;else s=sprintf('In [%6.3f;%6.3f] nu e o singura solutie.',a,b); disp(s); x=20000; nrit=0;end;ffunction [y]=f(x)y=exp(x)-5*x;

%cum se apeleaza%[sol,nrit]=bissuc(0,1,1e-6)

facto QR m mm ca n continuare end; end; beta=sig*(sig + a(k,k)); q1=eye(m)-(v'*v)/beta; a=q1*a; q=q*q1; end;

Metoda Newtonffunction [y]=f(x)y=exp(x)-5*x;fderfunction [y]=fder(x)y=exp(x)-5;met_tangfunction [x,nrit]=met_tang(nume_f,nume_fd,x0,prec)x1=x0+2*prec;nrit=0;while abs(x1-x0)>prec; x1=x0; x0=x1-feval(nume_f,x1)/feval(nume_fd,x1); nrit=nrit+1;end;x=x0;

PC II fct grad 1Ord1sinfunction yd=ord1sin(t,y);global kp tp a omegayd=(kp*a*sin(omega*t)-y)/tp;

PrincPc2sinclf;echo off;global kp tp a omegat(1)=t0; y(1)=y0; tc=t0; yc3=y0;k0=h*ord1sin(tc,yc3);yk1=h*ord1sin(tc+h/2,yc3+k0/2);k2=h+ord1sin(tc+h,yc3+2*k1-k0);yc2=yc3+(k0+4*k1+k2)/6;tc=tc+h;k0=h*ord1sin(tc,yc2);k1=h*ord1sin(tc+h/2,yc2+k0/2);k2=h+ord1sin(tc+h,yc2+2*k1-k0);yc1=yc2+(k0+4*k1+k2)/6;tc=tc+h;for i=3:q/h; yca=yc1+h*(23*ord1sin(tc,yc1)-16*ord1sin(tc-h,yc2)+5*ord1sin(tc-2*h,yc3))/12; yc=yc1+h*(5*ord1sin(tc+h,yca)+8*ord1sin(tc,yc1)-ord1sin(tc-h,yc2))/12; while abs(yc-yca)>prec yca=yc; yc=yc1+h*(5*ord1sin(tc+h,yca)+8*ord1sin(tc,yc1)-ord1sin(tc-h,yc2))/12; end; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc;end;t(2)=tc; y(2)=yc; for k=3:(tf-t0)/q+1 for i=1:q/h; yca=yc1+h*(23*ord1sin(tc,yc1)-16*ord1sin(tc-h,yc2)+5*ord1sin(tc-2*h,yc3))/12; yc=yc1+h*(5*ord1sin(tc+h,yc)+8*ord1sin(tc,yc1)-ord1sin(tc-h,yc2))/12; while abs(yc-yca)>prec yca=yc; yc=yc1+h*(5*ord1sin(tc+h,yc)+8*ord1sin(tc,yc1)-ord1sin(tc-h,yc2))/12; end; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc; end; t(k)=tc; y(k)=yc;end;plot(t,y,'-r');grid;title('raspuns sistem');

Page 2: fituica mncpd

PC II fct grad 2Ord2PC2function yd=ord2PC2(t,y);global kp t1 t2 t3 uyd(1)=(-y(2)+kp*u)/(t2*t3);yd(2)=(-(t2+t3)*y(2)+kp*t1*u)/(t2*t3)+y(1);clf;echo off;global kp tp t1 t2 t3 ut(1)=t0; y(1,:)=[y10 y20]; tc=t0; yc3=[y10 y20];k0=h*ord2PC2(tc,yc3);k1=h*ord2PC2(tc+h/2,yc3+k0/2);k2=h+ord2PC2(tc+h,yc3+2*k1-k0);yc2=yc3+(k0+4*k1+k2)/6;tc=tc+h;k0=h*ord2PC2(tc,yc2);k1=h*ord2PC2(tc+h/2,yc2+k0/2);k2=h+ord2PC2(tc+h,yc2+2*k1-k0);yc1=yc2+(k0+4*k1+k2)/6;tc=tc+h;for i=3:q/h; yca=yc1+h*(23*ord2PC2(tc,yc1)-16*ord2PC2(tc-h,yc2)+5*ord2PC2(tc-2*h,yc3))/12;yc=yc1+h*(5*ord2PC2(tc+h,yca)+8*ord2PC2(tc,yc1)-ord2PC2(tc-h,yc2))/12; while abs(yc-yca)>prec yca=yc;yc=yc1+h*(5*ord2PC2(tc+h,yca)+8*ord2PC2(tc,yc1)-ord2PC2(tc-h,yc2))/12; end; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc;end;t(2)=tc; y(2,:)=yc; for k=3:(tf-t0)/q+1 for i=1:q/h; yca=yc1+h*(23*ord2PC2(tc,yc1)-16*ord2PC2(tc-h,yc2)+5*ord2PC2(tc-2*h,yc3))/12; yc=yc1+h*(5*ord2PC2(tc+h,yc)+8*ord2PC2(tc,yc1)-ord2PC2(tc-h,yc2))/12; while abs(yc-yca)>prec yca=yc; yc=yc1+h*(5*ord2PC2(tc+h,yc)+8*ord2PC2(tc,yc1)-ord2PC2(tc-h,yc2))/12; end; tc=tc+h; yc3=yc2; yc2=yc1; yc1=yc; end; t(k)=tc; y(k,:)=yc;end;plot(t,y(:,1),'-r');grid;title('raspuns sistem');

Factorizarea QR m mai mare ca n echo off[m,n]=size(a);a1=a;q=eye(m);for k=1:n sig=0; for i=k:m sig=sig+a(i,k)^2; end; sig=sign(a(k,k))*sqrt(sig); for i=1:m if i<=k-1 v(i)=0; elseif i==k v(i)=sig + a(k,k); else v(i)=a(i,k); end; end; beta=sig*(sig + a(k,k)); q1=eye(m)-(v'*v)/beta; a=q1*a; q=q*q1; end;

Factorizarea QR m mai mic ca necho off[m,n]=size(a);a1=a;q=eye(m);for k=1:n-1 sig=0; for i=k:m sig=sig+a(i,k)^2; end; sig=sign(a(k,k))*sqrt(sig); for i=1:m if i<=k-1 v(i)=0; elseif i==k v(i)=sig + a(k,k); else v(i)=a(i,k);

Factorizarea QR patraticaecho offn=size(a);a1=a;q=eye(n);for k=1:n-1 sig=0; for i=k:n sig=sig+a(i,k)^2; end; sig=sign(a(k,k))*sqrt(sig); for i=1:n if i<=k-1 v(i)=0; elseif i==k v(i)=sig + a(k,k); else v(i)=a(i,k); end; end; beta=sig*(sig + a(k,k)); q1=eye(n)-(v'*v)/beta; a=q1*a; q=q*q1; end;

Factorizarea QR precizieecho off;[m,n]=size(a);a1=a;q=eye(m);p=eye(n);ind=1;k=1;for j=1:n norm(j)=0; for i=1:m norm(j)=norm(j)+a(i,j)^2; end; end;while(ind==1)&(k<=n) l=k; for j=k+1:n if norm(j)>norm(l) l=j; end; end; if norm(l)==0 ind=0 else if l~=k p1=eye(n) p1(k,k)=0; p1(l,l)=0; p1(k,l)=1; p1(l,k)=1; a=a*p1; p=p*p1; end; sig=0; for i=k:m sig=sig+a(i,k)^2; end; sig=sign(a(k,k))*sqrt(sig); for i=1:m if i<=k-1 v(i)=0 elseif i==k v(i)=sig+a(k,k); else v(i)=a(i,k); end; end; beta=sig*(sig+a(k,k)); q1=eye(m)-(v'*v)/beta; a=q1*a; q=q*q1; k=k+1; for j=k:n norm(j)=0 for i=k:m norm(j)=norm(j)+a(i,k)^2; end; end; end; end; v=0 while abs(a(v+1,v+1))>prec v=v+1; end;

alg inversei Ax=B, m mai mare decat na=[1 2 3;6 42 2;5 3 9;6 7 8;4 2 2];b=[3;8;1;4;6];a1=a;b1=b;[m,n]=size(a);for k=1:n sigma=0; for i=k:m sigma=sigma+a(i,k)^2; end sigma=sign(a(k,k))*sqrt(sigma); for i=1:m if i<k v(i)=0; else if i==k v(i)=sigma+a(k,k); else v(i)=a(i,k); end end end beta=sigma*(sigma+a(k,k)); q1=eye(m)-(v'*v)/beta; a=q1*a; b=q1*b;endb(n)=b(n)/a(n,n);for i=n-1:-1:1 s=0; for j=i+1:n s=s+a(i,j)*b(j); end b(i)=(b(i)-s)/a(i,i); end

inversa in-situ A(nxn) pe fact QRa=[1 2 3 4;6 3 42 2;7 5 3 9;5 6 7 8];a1=a;[m,n]=size(a);q=eye(n);for k=1:n-1 sigma=0; for i=k:n sigma=sigma+a(i,k)^2; end; sigma=sign(a(k,k))*sqrt(sigma); for i=1:n if i<k v(i)=0; else if i==k v(i)=sigma+a(k,k); else v(i)=a(i,k); end end end beta=sigma*(sigma+a(k,k)); q1=eye(n)-(v'*v)/beta; q=q1*q; a=q1*a;endfor k=n:-1:1 a(k,k)=1/a(k,k); for i=k-1:-1:1 s=0; for j=i+1:k s=s+a(i,j)*a(j,k); end a(i,k)=-s/a(i,i); endenda=a*q;

Page 3: fituica mncpd