summaryrefslogtreecommitdiff
path: root/2048/CH9/EX9.8
diff options
context:
space:
mode:
authorpriyanka2015-06-24 15:03:17 +0530
committerpriyanka2015-06-24 15:03:17 +0530
commitb1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b (patch)
treeab291cffc65280e58ac82470ba63fbcca7805165 /2048/CH9/EX9.8
downloadScilab-TBC-Uploads-b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b.tar.gz
Scilab-TBC-Uploads-b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b.tar.bz2
Scilab-TBC-Uploads-b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b.zip
initial commit / add all books
Diffstat (limited to '2048/CH9/EX9.8')
-rwxr-xr-x2048/CH9/EX9.8/pp_im.sci25
1 files changed, 25 insertions, 0 deletions
diff --git a/2048/CH9/EX9.8/pp_im.sci b/2048/CH9/EX9.8/pp_im.sci
new file mode 100755
index 000000000..f1a512fea
--- /dev/null
+++ b/2048/CH9/EX9.8/pp_im.sci
@@ -0,0 +1,25 @@
+// Pole placement controller using internal model principle, as discussed in Sec. 9.4.
+// 9.8
+
+// function [Rc,Sc,Tc,gamma,phit] = pp_im(B,A,k,phi,Delta)
+// Calculates 2-DOF pole placement controller.
+
+function [Rc,Sc,Tc,gamm] = pp_im(B,A,k,phi,Delta)
+
+// Setting up and solving Aryabhatta identity
+[Ag,Ab] = polsplit3(A); dAb = length(Ab) - 1;
+[Bg,Bb] = polsplit3(B); dBb = length(Bb) - 1;
+
+[zk,dzk] = zpowk(k);
+
+[N,dN] = polmul(Bb,dBb,zk,dzk);
+dDelta = length(Delta)-1;
+[D,dD] = polmul(Ab,dAb,Delta,dDelta);
+dphi = length(phi)-1;
+
+[S1,dS1,R1,dR1] = xdync(N,dN,D,dD,phi,dphi);
+
+// Determination of control law
+Rc = convol(Bg,convol(R1,Delta)); Sc = convol(Ag,S1);
+Tc = Ag; gamm = sum(phi)/sum(Bb);
+endfunction;