Re: Manipulate a complex expression

*To*: mathgroup at smc.vnet.net*Subject*: [mg77886] Re: Manipulate a complex expression*From*: dh <dh at metrohm.ch>*Date*: Tue, 19 Jun 2007 06:35:06 -0400 (EDT)*References*: <f505ip$qug$1@smc.vnet.net> <f5332a$3lb$1@smc.vnet.net>

Hi Daniele, if you redefine epsilonCyt to: epsilonCyt:=(Print[{conductivityCyt}];complexEps[permittivityCyt,conductivityCyt,omega]); you will see that conductivityCyt is never replaced by a numerical value. Therefore, we must conclude that Manipulate localizes conductivityCyt before the Evaluate is done. To prevent this, you must give conductivityCyt as an argument: epsilonCyt[conductivityCyt_] := Im[complexEps[permittivityCyt, conductivityCyt, omega]]; the the following will work: Manipulate[Plot[epsilonCyt[conductivityCyt],{f,1 10^5,1 10^10}],{conductivityCyt,0.1,0.5}] hope this helps, Daniel Daniele wrote: > Hello, > as a follow up to my previous post, I think I can clarify my question > with a simpler example. > > Once I define the following: > > complexEps[permittivity_, conductivity_, omega_] := permittivity - (I > conductivity/omega); > epsilonCyt := complexEps[permittivityCyt, conductivityCyt, omega]; > omega := 2 Pi f > permittivityCyt := 50; > > Why does this work: > > Manipulate[Plot[Im[Evaluate[complexEps[permittivityCyt, > conductivityCyt, omega]]], {f, 1 10^5,1 10^10}], {conductivityCyt, > 0.1, 0.5}] > > While this doesn't: > > Manipulate[Plot[Im[Evaluate[epsilonCyt]], {f, 1 10^5, 1 10^10}], > {conductivityCyt, 0.1, 0.5}] > > I would think that the two 'Manipulate' expressions would be > equivalent, but obviously I'd be wrong.... > > thanks. > > On 16 Jun, 09:04, Daniele <d.mal... at gmail.com> wrote: >> Hello, >> I'm trying to use the new Manipulate function to evaluate a complex >> expression. I'm getting a headache, as I'm not familiar with the >> Mathematica notation (I do most of my work, numerically, with another system). >> Maybe somebody here can help debug these few lines? >> >> The expression I want to 'manipulate' is the following: >> >> MeasuredCMF := VolumeFraction ( EpsilonCell - EpsilonMedium)/ >> ( EpsilonCell + 2 EpsilonMedium) >> >> Where VolumeFraction is a parameter, and the other variables are >> complex and a function of 'f'. >> They are defined below. >> >> omega := 2 Pi f >> EpsilonCyt := PermittivityCyt - ( ConductivityCyt/omega) I >> EpsilonMembrane := PermittivityMembrane - (ConductivityMembrane/omega) >> I >> EpsilonMedium := PermittivityMedium - (ConductivityMedium/omega) I >> >> CMFCell := ( EpsilonCyt - EpsilonMembrane)/( EpsilonCyt + 2 >> EpsilonMembrane) >> v := CellRadius/(CellRadius - MembraneThickness) >> EpsilonCell := EpsilonMembrane *(v^3 + 2 CMFCell)/(v^3 - CMFCell) >> >> Epsilon0 = 8.85 10^-12; >> PermittivityCyt = 120 Epsilon0; >> PermittivityMembrane = 6 Epsilon0; >> PermittivityMedium = 80 Epsilon0; >> ConductivityCyt = 0.15; >> ConductivityMedium = 0.15; >> ConductivityMembrane = 1 10^-9; >> CellRadius = 10 10^-6; >> MembraneThickness = 9 10^-9; >> >> if I define VolumeFraction (eg. VolumeFraction=0.1) and plot >> Re[MeasuredCMF] vs. f, I have no problem. >> But I am unable to successfully do the following (I get a blank plot) >> >> Manipulate[ >> LogLinearPlot[ >> Evaluate[Re[MeasuredCMF]], {f, 1 10^5, 1 10^9}], {{VolumeFraction, >> 0.2}, 0.1, 0.5}] >> >> Can somebody help? I suspect I'm not using the assignment syntax >> correctly. >> Thanks >> >> Daniele Malleo > > >