Books in black and white
 Books Biology Business Chemistry Computers Culture Economics Fiction Games Guide History Management Mathematical Medicine Mental Fitnes Physics Psychology Scince Sport Technics

# 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
Previous << 1 .. 76 77 78 79 80 81 < 82 > 83 84 .. 85 >> Next

bk := subvector(B, 1..Q, k): bk := scalarmul(bk, -1):
# Determine the x.resp (or X.resp) vector if (caltype = 'numf) then
x.resp map(evalc, multiply(AI, bk)) elif (caltype = 'algf') then x.resp := multiplv(AI# bk) else
X.resp := multiply(AI, bk)
fi od:
# Now all first order x.resp vectors are determined
# Calculate all higher order x.resp vectors for no from sm+1 to Sm do
# Determine the order of the given response order := op(l, op(l, S.smCuo])):
# Determine where to put the response, x.resp resp := op(2, op(l, N.smCno])):
# Define N list.NL
SL op(2, N.sm[noj):
# Determine the frequency at which the x.resp vector is to he determined
nn/racn Тттч-ЧГт-п^')'
# Update the global inverted A matrix, AI Alcal(psi):
Е.2. Program listing for vtf source code
283
# Determine the u vector for q to Q do
# Determine number of controlling variables for nonlinear element q,
# NoCgVar
NoCgVar := nops(op(q, jL}):
# Set element q in the u vector initially equal to 0, urssult uresult := 0:
for con to M.NoCgVar.m.orderlQj do
# Define Mm list, MmL
MraL := M.NoCgVar.m.order [con]:
# Determine order of contribution number con, ord ord := op(op(l, MmL)):
# Determine MptL, NptL and psiGL lists MptL := op(4, MmL):
NptL := [seq(op(i, ML), i=op(MptL))j : psiGL := [seq(op(i, ImdFrqL), i=op(NptL))]:
# Initialize subresult for uresult, usubresult usubresult := G.q(op(2, MmL), psiGL):
if usubresult <> 0 then
# Determine x multiplication factors for i to ord do
# Determine response number, p p := op(i, NptL):
# Determine the number of the controlling variable, r
for r yhile (i > convert([op(l..r, op(2, MmL))], ' + ')) do od:
# Update usubresult
usubresult := usubresult*x.pCop(r, op(q, iL))] od:
uresult := uresult + op(op(3, MraL))^usubresult
f i od:
u[q] := uresult od:
# Determine the x.resp (or X.resp) vector if (caltype = 'num') then
x.resp := map(evalc, multiply(AI, u)) elif (caltype = 'algf') then x.resp := multiply(AI, u)
284
E. Determination of Volterra transfer functions using Maple
else
X.resp := multiply(AI, u)
fi od:
# Now all higher order x.resp vectors are determined
# Determine the Volterra transfer function, first order if sm=l then
# Determine the -frequency psil+. . .+psiX psi := op(Sm, ImdFrqL):
# Determine к
к := op(portL):
# Update the a and b vectors acal(psi):
bcal(psi):
# Calculate the first order Volterra transfer function if (caltype = ‘пинг) or (caltype = ‘algf‘) then
result := dotprod(a, xl, 'orthogonal’) + Ъ[к] else
result := [seq(xl[no]=X1[no], no=l..R),
H=dotprod(a, xl, 'orthogonal,)+b[k]]
f i fi:
# Determine the Volterra transfer function, second and higher order if (sm > 1) then
# Determine the frequency psil+...+psiK pci := op(Sm, ImdFrqL):
# Calculate the multi factorial coefficient, ml! * ... * mK!
cf ak : = 1:
for i in mL do cfak := cfak*i! od:
# Update the a vector acal(psi) :
# Calculate the second and higher order Volterra transfer function if (caltype = ‘г.иш') or (caltype = folgff) then
result := dot pr od v a, x.Sm, ’ orthogonal. ’ j / cf ak else
result : = [seq(seq(x.resp [no]=X.resp[no], no=l..R), resp=l..Sm), H=dotprod(a, x.Sm, ’orthogonal’)/cfak]
f i fi:
Е.З. Program listing for example 1
■285
result end: # vtf
E.3 Program listing for example 1
# example 1 - Test of vtf procedure ft##############################################*##############*#*####*#####
# Ref.; J. J. Bussgang, L. Ehrman and J. W. Graham: "Analysis of Nonlinear
# Systems with Multiple Inputs", Proc. IEEE, Vol. 62, No. 8, August 1974,
# pp. 1038-1119.
# О Note: Error in (3.19), -1/3 should be -2/3, and in (3.20), —1/3 should
# be +2/3.)
Я################*#####
#########################*######*####*########*#;##########*########£#######
# Alcal - calculate the A inverse matrix
Alcal := proc(f) global AI:
AI [1,1] := -H(f) # H(f)=l/(gl + I*2*?i*f*C)
end: # Alcal
# Beal - calculate the В matrix #########################################
Beal := proc(f) global B:
BCl.l] := 1 end: # Beal
################^# #################*=*###########:*#####*####\$#####*####\$£##
3 acal - calculat3 the a vector
3 ii •?###?*#
acal := proc(l) global a:
Cl l_ i J . - i
end: # acal
################################*########*#################################
‘286
E. Determination of Volterra transfer functions using Maple
# bcal - calculate the b vector ########################################################################### bcal : •= proc(f) global b: bill : = 0 end: # bcal
###########################################################################
# GI - nonlinear Volterra transfer function for nonlinear element i ########################################################################### GI := proc(crdL, psiL) local order, result: order := convert (ordL, ' + *’): result := 0:
if order = 2 then result := g2 fi:
result
end: # GI
################################################################a##########
Previous << 1 .. 76 77 78 79 80 81 < 82 > 83 84 .. 85 >> Next