Books
in black and white
Main menu
Share a book About us Home
Books
Biology Business Chemistry Computers Culture Economics Fiction Games Guide History Management Mathematical Medicine Mental Fitnes Physics Psychology Scince Sport Technics
Ads

Theory of Linear and nonlinear circuits - Engberg J.

Engberg J. Theory of Linear and nonlinear circuits - Wiley & sons , 1995. - 154 p.
ISBN 0-47-94825
Download (direct link): noisetheoryoflinearandnonlinear1995.pdf
Previous << 1 .. 74 75 76 77 78 79 < 80 > 81 82 83 84 .. 85 >> Next

QN=RN*(CABS(C))**2/YR A=YR**2-(CABS(YG))**2-GN/RN B=(CABS(C))**2 C=CMPLX(A,2.*YR*EG)
RO=C/B
RETURN
END
С
cc *** *** *** *** *** *** *** *** *** *** ***
с
SUBROUTINE SYTRAN (Sll,S12,S21,S22,qs,F0,RO,Y11,Y12,Y21.Y22,RH,GN, 1YG)
CC TRANSFORMS SIGNAL AND NOISE PARAMETERS FROM S FORM WITH F, Q AND
CC GAMMA TO Y FORM. REFERENCE FOR S PARAMETERS IS SO OHM.
COMPLEX S11,S12,521,S22,RC,Y11,Y12,Y21,Y22,YG,YA,YB,YC,YN YR=1./50.
YA=1.+S11
YB=1.+S22
YC=S12*S21
YN=(YA*YB-YC)/YR
Y11=((1.-S11)*YB+YC)/YH
Y22=((1.-S22)*YA+YC)/YN
Y12=-2.+S12/YN
Y2i=-2.*521/YB
A=F0-1.
3=qN*(l.-(CABS(R0))**2)
C=qS*(CABS(R0+l.))**2 GN=YR*A+(B-A)/C RN=C/(4.1‘YR)
YG=(CMPLX(2 .*4-3,2. *Q?I* (AI3!AG(R0)))) *YR/C
RETURN
E:fD
Е
Determination of Volterra transfer functions using Maple
The present appendix contains program listings for a Maple V Release 3 program to determine algebraic expressions for volterra transfer functions. Also the Maple V source code for the examples in chapter 0 are included. The two functions listgen and vtf must be in the same file called volfun. Before the functions can be used the user must read the volfun tile into a Maple V session, and then run the command: volfun [listgen] (4) :. This generates some tables that are used by the volfun program.
E.l Program listing for listgen source code
##£#####################################£########£#########################
# listgen - listgen procedure for generating o-, rn-, and n-tables
Si listgen(MAXORDER)
#
# MAXQRDER: Maximum order for the table generation
volfun[listgen] := proc(MAXORDER)
local i, il, 12, i3, i4, iS, i6, i7, 13, i3, ilO, 121L, j, k, mL, Lambda, Im, M, ML, Number, n, nl, n2, no, np, o, ord, order, ordL, pt, ptl, pt2, R, Sm, si3, si4, si5, si6, si7, si8, si9, sm, sn, so3, so4, so5, so6, зо7, so8, so9, T2, T3, T4, IS, T5, T7, TS, T9, T10, V, vl, v2:
### TEST FOR VALID INPUT DATA #;?$;?##£##########*#*#######*######*########## if (nargs - l) then
« 4 ("u* vnnnut) ^ ~ ~— l' U * vnnnrn ^ О \ /u>vnnnrn ЧЛ \ j— 1- — ——
11 Iiuu liVycviinAUlVL/biV, uuaxilb; V'‘"AUUUU1V 4. J W1 V il HAUnUDi; 1U; blieit
‘275
276
E. Determination of Volterra, transfer functions using Maple
E?.HGR(‘Invalid argument')
fi els 9
EE.RQR(' Invalid number of arguments * )
fi:
lyx ii.iL С ' working
### INITIALIZATION ##################£#####################################
# Read in combinat package
with(combinat, choose, numbcomb, numbperm, permute):
### Qlistgen ##############################################################
# Number of elements in 121L list, Sra Sm := 2~MAX0RDER-1:
# Determine i21L and ordL lists i21L := array(1..Sm):
ordL := array(0..Sm, C(0)=0]): for ni to Sm do ordL[m] := 1 od:
for M to MAXQRDER do
for m from 2~(H-1) to 2*M-1 do 1m := m - 2**(H-1): mL := [ 1 ] :
for i from M-l by -1 to 1 do if (1m >= 2‘(i-l)) then lm := lm - 2~(i-l): mL := Cl, op(mL)3: ordL[m] := ordL [m] + 1 else
mL - CO, op(mL)]
fi od:
i21L[m] := mL
od
od:
3## Mlistgen
# Local procedure 11 to determine lower limits for i variables
11 := procfino. n> iprpv)
if (ino > n) then 0 eiif (mo < n) then iprev+i else i fi end:
# Local procedure ul to determine upper limits for i variables
E.l. Program //sting forlistgen source code
277
ul := proc(ino, n, Sm, inimb, si)
if (ino > n) then 0 else (Sm-inumb~si)/ino ii
end:
# Calculate all Mlm.sm lists for sip, from 2 to MAXORDER do T.sm := array(1..sm, C(1)=0]) od:
iV axrayCl..10):
for sm from 2 to MAXDRDER do Sm : = 2' sra-1: no := 0:
for n from 2 to sm do
for iV[lQ] from 11(10, n, 0) to ul(l0, n, Sm, 45, 0) do
for iV[9] from 11(9, n, iV[l0]) to ul(9, n, Sm, 36, iV[l0]) do
si9 ;= iV[l0] + iV[9]: so9 := ordL[iV[l0]] + ordLliV[9]]: if (so9 > sm) then next fi:
for iV[8] from 11(8, n, iV[9]) to ul(8, n, Sm, 28, si9) do
si8 := si9 + iV[8] : зо8 := sg9 + ordL[iV[3]j: if (so8 > sm) then next fi:
for iV[7] from 11(7, n, iV[8]) to ul(7, n, Sm, 21, si8) do
si7 := si8 + iV[7]: so7 := so8 + ordL[iV[7]]: if (so7 > sm) then next fi:
for iV[6] from 11(6, n, iV[7]) to ul(6, n, Sm, 15, si7) do
si6 := si7 + iV[6]: so6 so7 + ordL[iV[6]]: if (so6 > sm) then next fi:
for iV[5] from 11(5, n, iV[6]) to ul(5, n, Sm, 10, si6) do
si5 : = si6 + iV[5]: so5 := so6+ordL[iV[5j] : if (so5 > sm) then next fi:
for iV[4] from 11(4, n, iV[5]) to ul(4, n, 5m, 6, si5) do
si4 := si5 + iV [4]: so4 := so5 -!■ ordL [iV [4] ] : if (so4 > sm) than next fi:
for iV[3] from 11(3, г., i”[4j) to -а1(3, n, Sm, 3, si4) do
s 13 ; = з i4 +• i'v l3 j : so3 := so4 + ordLCiy[3]]: if (so3 > sm) then next fi;
for i V [ 2 j from 11(2, n, iV [3]) to ul(2, n, Sm, 1, si3)
do
iV[l] := Sm - si3 - iV[2] :
if (so3+ordL[iV[2]j+ordL[iV[ 1]] = sm) then
278
E. Determination of Volterra transfer functions using Maple
no := no + 1:
Mlm.sm[no] := [[n], [n] , [n!], [seqCiV[n-k], k=0..n-1)]]
od
od
od
od
od
od
od
od
od:
T.sm[n] := no
od:
Mlm.sra[0] := no:
od:
# Calculate all M2m.sra lists for sm from 2 to MAXORDER do pt := 0:
Previous << 1 .. 74 75 76 77 78 79 < 80 > 81 82 83 84 .. 85 >> Next