Re: Re: Manipulate a complex expression
- To: mathgroup at smc.vnet.net
- Subject: [mg77836] Re: [mg77807] Re: Manipulate a complex expression
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Mon, 18 Jun 2007 06:52:45 -0400 (EDT)
- References: <f505ip$qug$1@smc.vnet.net> <14464692.1182091779273.JavaMail.root@m35>
- Reply-to: drmajorbob at bigfoot.com
Manipulate needs to "see" the dependency on f and VolumeFraction, but otherwise, Set is faster than SetDelayed, and most of the functions don't have to be functions: (* formulas *) Clear["Global`*"] 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); EpsilonCell = EpsilonMembrane*((v^3 + 2*CMFCell)/(v^3 - CMFCell)); MeasuredCMF[vfrac_][f_] = Simplify[vfrac*((EpsilonCell - EpsilonMedium)/(EpsilonCell + 2*EpsilonMedium))]; v = CellRadius/(CellRadius - MembraneThickness); (* constants (sort of) *) 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; LogLinearPlot[Evaluate[Re[MeasuredCMF[0.1][f]]], {f, 1*10^5, 1*10^9}] Manipulate[ LogLinearPlot[ Evaluate[Re[MeasuredCMF[VolumeFraction][f]]], {f, 1*10^5, 1*10^9}], {{VolumeFraction, 0.2}, 0.1, 0.5}] The chart changes only in its scale, since MeasuredCMF[vfrac][f] // Simplify ((-0.0000608595 - (0.+ 4.64758*10^-12 \[ImaginaryI]) f - 2.14458*10^-18 f^2) vfrac)/(0.00012172+ (0.+ 4.60111*10^-10 \[ImaginaryI]) f - 1.57672*10^-17 f^2) is vfrac * (a function of the other variables and constants). Bobby On Sun, 17 Jun 2007 05:06:25 -0500, Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com> wrote: > Daniele 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 > > Hi Daniele, > > Your function definitions are missing the name of one or more variables. > I have made some modification in your code and and now it should work as > expected. > > MeasuredCMF[vfrac_][f_] := > vfrac*((EpsilonCell[f] - EpsilonMedium[f])/ > (EpsilonCell[f] + 2*EpsilonMedium[f])) > > omega[f_] := 2*Pi*f > > EpsilonCyt[f_] := PermittivityCyt - (ConductivityCyt/omega[f])*I > > EpsilonMembrane[f_] := PermittivityMembrane - > (ConductivityMembrane/omega[f])*I > > EpsilonMedium[f_] := > PermittivityMedium - (ConductivityMedium/omega[f])*I > > CMFCell[f_] := (EpsilonCyt[f] - EpsilonMembrane[f])/ > (EpsilonCyt[f] + 2*EpsilonMembrane[f]) > > v := CellRadius/(CellRadius - MembraneThickness) > > EpsilonCell[f_] := EpsilonMembrane[f]*((v^3 + 2*CMFCell[f])/ > (v^3 - CMFCell[f])) > > 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; > > LogLinearPlot[Evaluate[Re[MeasuredCMF[0.1][f]]], {f, 1*10^5, 1*10^9}] > > Manipulate[ > LogLinearPlot[Evaluate[Re[MeasuredCMF[VolumeFraction][f]]], > {f, 1*10^5, 1*10^9}], {{VolumeFraction, 0.2}, 0.1, 0.5}] > > Regards, > Jean-Marc > > -- DrMajorBob at bigfoot.com