fituica mncpd
DESCRIPTION
fituica mncpdTRANSCRIPT
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');
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;