diff --git a/Gemfile b/Gemfile index e8a7006386e7ce6b8920b6d6e4283d0d833455d8..c99d6dd1146f031725734b03b147dcc37043f790 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,3 @@ -source 'https://rubygems.org' +source "https://rubygems.org" -gem 'jekyll' +gem "jekyll" diff --git a/Gemfile.lock b/Gemfile.lock index 44b8aa1236e1598bc9705d8928048105c521533f..1e4cef54867a7064dc04c15510ab927f147da64a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,7 +4,7 @@ GEM addressable (2.6.0) public_suffix (>= 2.0.2, < 4.0) colorator (1.1.0) - concurrent-ruby (1.1.4) + concurrent-ruby (1.1.5) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) @@ -29,10 +29,10 @@ GEM safe_yaml (~> 1.0) jekyll-sass-converter (1.5.2) sass (~> 3.4) - jekyll-watch (2.1.2) + jekyll-watch (2.2.1) listen (~> 3.0) kramdown (1.17.0) - liquid (4.0.1) + liquid (4.0.3) listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) @@ -46,8 +46,8 @@ GEM ffi (~> 1.0) rouge (3.3.0) ruby_dep (1.5.0) - safe_yaml (1.0.4) - sass (3.7.3) + safe_yaml (1.0.5) + sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) diff --git a/_notes/fourier_examples.md b/_notes/fourier_examples.md new file mode 100644 index 0000000000000000000000000000000000000000..853bf6ea262a892cfc91bc6de715537b208faee6 --- /dev/null +++ b/_notes/fourier_examples.md @@ -0,0 +1,9 @@ +--- +title: Fourier Examples +--- + +Working these out by hand helped me debug my CT algorithms. + + + + diff --git a/_notes/fourier_series.md b/_notes/fourier_series.md new file mode 100644 index 0000000000000000000000000000000000000000..e735f693a4a559d4a1b10e918309f7dca2c33ece --- /dev/null +++ b/_notes/fourier_series.md @@ -0,0 +1,164 @@ +--- +title: Fourier Series +--- + +## Definition + +Let $$f: \mathbb{R} \rightarrow \mathbb{C}$$ be a reasonably well behaved $$L$$-periodic function +(i.e. $$f(x) = f(x + L)$$ for all $$x$$). Then $$f$$ can be expressed as an infinite series + +$$ +f(x) = \sum_{n \in \mathbb{Z}} A_n e^{2 \pi i n x / L} +$$ + +The values of the coefficients $$A_n$$ can be found using the orthogonality of basic exponential +sinusoids. For any $$m \in \mathbb{Z}$$, + +$$ +\begin{align*} +\int_{-L/2}^{L/2} f(x) e^{-2 \pi i m x / L} dx +&= \int_{-L/2}^{L/2} \sum_{n \in \mathbb{Z}} A_n e^{2 \pi i n x / L} e^{-2 \pi i m x / L} dx \\ +&= \sum_{n \in \mathbb{Z}} A_n \int_{-L/2}^{L/2} e^{2 \pi i (n - m) x / L} dx \\ +&= \sum_{n \in \mathbb{Z}} A_n L \delta_{nm} \\ +&= L A_m +\end{align*} +$$ + +where the second to last line uses [Kronecker delta](https://en.wikipedia.org/wiki/Kronecker_delta) +notation. Thus by the periodicity of $$f$$ and the exponential function + +$$ +\begin{align*} +A_n &= \frac{1}{L} \int_{-L/2}^{L/2} f(x) e^{-2 \pi i n x / L} dx \\ +&= \frac{1}{L} \int_{0}^{L} f(x) e^{-2 \pi i n x / L} dx +\end{align*} +$$ + + +## Relation to the Fourier Transform + +Now suppose we have a function $$f: \mathbb{R} \rightarrow \mathbb{C}$$, and we construct an +$$L$$-periodic version + +$$ +f_L(x) = \sum_{n \in \mathbb{Z}} f(x + nL) +$$ + +The coefficients of the Fourier Series of $$f_L$$ are + +$$ +\begin{align*} +L A_n &= \int_0^L \sum_{m \in \mathbb{Z}} f(x + mL) e^{-2 \pi i n x / L} dx \\ +&= \sum_{m \in \mathbb{Z}} \int_0^L f(x + mL) e^{-2 \pi i n x / L} dx \\ +&= \sum_{m \in \mathbb{Z}} \int_{mL}^{(m + 1)L} f(x) e^{-2 \pi i n (x - mL) / L} dx \\ +&= e^{-2 \pi i n m} \sum_{m \in \mathbb{Z}} \int_{mL}^{(m + 1)L} f(x) e^{-2 \pi i x n / L} dx \\ +&= \int_\mathbb{R} f(x) e^{-2 \pi i x n / L} dx \\ +&= \hat{f}(n/L) +\end{align*} +$$ + +so + +$$ +f_L(x) = \frac{1}{L} \sum_{n \in \mathbb{Z}} \hat{f}(n / L) e^{2 \pi i n x / L} +$$ + +Thus the periodic summation of $$f$$ is completely determined by discrete samples of $$\hat{f}$$. +This is remarkable in that an uncountable set of numbers (all the values taken by $$f_L$$ over one +period) can be determined by a countable one (the samples of $$\hat{f}$$). Even more incredible, if +$$f$$ has finite bandwidth then only a finite number of the samples will be nonzero. So the +uncountable set of numbers is determined by a finite one. + + +As an aside, by taking $$x = 0$$ we can derive the +[Poisson summation formula](https://en.wikipedia.org/wiki/Poisson_summation_formula): + +$$ +\sum_{n \in \mathbb{Z}} f(nL) = \frac{1}{L} \sum_{n \in \mathbb{Z}} \hat{f}(n / L) +$$ + + +## Derivation of the Discrete Time Fourier Transform + +We can apply the above results to $$\hat{f}$$ as well. Recall that the Fourier transform of +$$\hat{f}$$ is $$f(-x)$$. Thus the periodic summation of $$\hat{f}$$ is + +$$ +\begin{align*} +\hat{f}_L(x) &= \frac{1}{L} \sum_{n \in \mathbb{Z}} f(-n / L) e^{2 \pi i n x / L} \\ +&= \frac{1}{L} \sum_{n \in \mathbb{Z}} f(n / L) e^{-2 \pi i n x / L} +\end{align*} +$$ + +This is precisely the definition of the discrete time Fourier transform. + +If $$f$$ is time-limited, then we'll have only a finite number of nonzero samples. But then +$$\hat{f}$$ is necessarily not bandwidth limited, so the tails of $$\hat{f}$$ will overlap in the +periodic summation. On the other hand, if $$f$$ is bandwidth limited, for sufficiently large $$L$$ +we can recover $$\hat{f}$$. To do so perfectly requires an infinite number of samples, but in +practice reasonably bandwidth limited signals can still be recovered quite well from a finite number +of samples. + + +## Interpretation of the Discrete Fourier Transform + +### Forward DFT + +Suppose we take samples of a function $$f$$ at integer multiples of a time $$T$$ (or distance, +etc.). As we saw above, + +$$ +\hat{f}_{1/T}(x) = T \sum_{n \in \mathbb{Z}} f(n T) e^{-2 \pi i n x T} +$$ + +So when $$f$$ is time limited such that only the $$N$$ samples $$f(0)$$, $$\ldots$$, +$$f((N - 1) T)$$ are nonzero, + +$$ +\hat{f}_{1/T}(x) = T \sum_{n = 0}^{N - 1} f(n T) e^{-2 \pi i n x T} +$$ + +In this case the discrete Fourier transform gives us $$N$$ evenly spaced samples from one period of +$$\hat{f}_{1/T}$$. Namely, for $$0 \leq k < N$$, + +$$ +\hat{f}_{1/T}(k / NT) = T \sum_{n = 0}^{N - 1} f(n T) e^{-2 \pi i n k / N} +$$ + +### Backward DFT + +Similarly, + +$$ +f_{NT}(x) = \frac{1}{NT} \sum_{n \in \mathbb{Z}} \hat{f}(n / NT) e^{2 \pi i n x / (NT)} +$$ + +So when $$f$$ is bandwidth limited such that only the $$N$$ samples $$\hat{f}(0)$$, $$\ldots$$, +$$\hat{f}((N - 1) / NT)$$ are nonzero, + +$$ +f_{NT}(x) = \frac{1}{NT} \sum_{n = 0}^{N - 1} \hat{f}(n / NT) e^{2 \pi i n x / (NT)} +$$ + +And in this case the inverse discrete Fourier transform gives us $$N$$ evenly spaced samples from +one period of $$f_{NT}$$. Namely, for $$0 \leq k < N$$, + +$$ +f_{NT}(kT) = \frac{1}{NT} \sum_{n = 0}^{N - 1} \hat{f}(n / NT) e^{2 \pi i n k / N} +$$ + +### Commentary + +If $$f$$ were both time and bandwidth limited as discussed above, then $$f_{NT} = f$$ and +$$\hat{f}_{1/T} = \hat{f}$$. So the samples of $$\hat{f}$$ we get from the forward DFT could be fed +into the backward DFT to exactly recover our original samples of $$f$$. Unfortunately no such +functions exist, but in practice it works pretty well for signals that strike a balance between time +and bandwidth limits. The penalty for the imprecision is some aliasing caused by overlapping tails +in the periodic summations. So make sure $$1/T$$ is large enough to avoid significant aliasing in +the frequency domain, and $$NT$$ is large enough to avoid significant aliasing in the time (or +space, etc. domain). + +We also see why the frequency spectra obtained from the DFT is periodic: we're not getting samples +of $$\hat{f}$$, but of its periodic summation. If $$\hat{f}$$ is localized near the origin, it +can be more instructive to view half the samples of $$\hat{f}_{1/T}$$ provided by the DFT as +representing positive frequencies, and the other half as negative frequencies. diff --git a/_notes/fourier_transform.md b/_notes/fourier_transform.md index b6ac0dd08d3f0b2261a9c58bb7557b3f534a03d5..6a569e2c46a9b1ec530d8bb5b421303667ad9dde 100644 --- a/_notes/fourier_transform.md +++ b/_notes/fourier_transform.md @@ -2,34 +2,52 @@ title: Fourier Transforms --- -To really make sense of chapter 2 I needed to review the properties of Fourier Transforms. These -notes are based on my prior knowledge and some helpful websites: -- [Properties of Fourier Transform](http://fourier.eng.hmc.edu/e101/lectures/handout3/node2.html) -- [symmetry.pdf](https://www.cs.unm.edu/~williams/cs530/symmetry.pdf) +## Definition -Note: I'm sloppy with the proofs here since all physical functions will have the nice properties -that make the relevant operations valid, but I don't always call of these properties out when they -are used. +For a suitable function $$f : \mathbb{R} \rightarrow \mathbb{C}$$, the Fourier transform and inverse +Fourier transform are defined to be +$$ +\begin{align*} +(\mathcal{F} f)(\xi) &= \int_\mathbb{R} f(x) e^{-2 \pi i x \xi} \mathrm{d} x \\ +(\mathcal{F}^{-1} f)(x) &= \int_\mathbb{R} f(\xi) e^{2 \pi i \xi x} \mathrm{d} \xi +\end{align*} +$$ -## Basics +The Fourier transform of $$f$$ is frequently written as $$\hat{f}(\xi) = (\mathcal{F} f)(\xi)$$. -For a function $$f : \mathbb{R} \rightarrow \mathbb{C}$$, I use the definitions +Every function in [$$L^1$$](https://en.wikipedia.org/wiki/Lp_space#Lp_spaces) has a Fourier +transform and inverse Fourier transform, since $$ -(\mathcal{F} f)(x) = \int_\mathbb{R} f(x') e^{-2 \pi i x' x} \mathrm{d} x' +\begin{align*} +\left \vert \hat{f}(\xi) \right \vert +&\leq \int_\mathbb{R} \left \vert f(x) e^{-2 \pi i x \xi} \right \vert \mathrm{d} x \\ +&= \int_\mathbb{R} \left \vert f(x) \right \vert \mathrm{d} x +\end{align*} $$ -$$ -(\mathcal{F}^{-1} f)(x) = \int_\mathbb{R} f(x') e^{2 \pi i x' x} \mathrm{d} x' -$$ +Furthermore when $$f$$ is in $$L^1$$, then $$\hat{f}(\xi)$$ is a uniformly continuous function that +tends to zero as $$|\xi|$$ approaches infinity. However $$\hat{f}$$ need not be in $$L^1$$, and not +every continuous function that tends to zero is the Fourier transform of a function in $$L^1$$ +(indeed describing $$\mathcal{F}(L^1)$$ is an open problem). As such it can be helpful to restrict +the definition to the [Schwartz space](https://en.wikipedia.org/wiki/Schwartz_space) over +$$\mathbb{R}$$, where the Fourier transform is an +[automorphism](https://en.wikipedia.org/wiki/Automorphism). + +On the other hand, we'll also want to talk about the Fourier transforms of functions that aren't +absolutely integrable, or objects that aren't functions at all (like the [delta +function](https://en.wikipedia.org/wiki/Dirac_delta_function)). So I will tend to be very liberal +with my application of the transform. + + +## Basic Properties -The Fourier Inversion Theorem states that $$\mathcal{F} \mathcal{F}^{-1} = \mathcal{F}^{-1} -\mathcal{F} = \mathcal{I}$$ (where $$\mathcal{I}$$ is the identity operator). This holds for the space -of functions whose Fourier transforms exist and for which both the function and the transform are -absolutely integrable and continuous. All claims I make about functions should be interpreted to -apply only to functions in this space. +The [Fourier Inversion Theorem](https://en.wikipedia.org/wiki/Fourier_inversion_theorem) states that +$$\mathcal{F} \mathcal{F}^{-1} = \mathcal{F}^{-1} \mathcal{F} = \mathcal{I}$$ (where $$\mathcal{I}$$ +is the identity operator). This is strictly true for functions in $$L^1$$ whose transforms are also +in $$L^1$$, but can also be extended to more general spaces as well. The Fourier transform is linear: @@ -38,24 +56,45 @@ $$ $$ If you shift everything in the original basis (usually the time or space domain), you pick up a -phase shift in the transformed (i.e. frequency) basis. This follows from a simple change of -variables. +phase shift in the transformed (i.e. frequency) basis. This follows from a change of variables. + +$$ +\begin{align*} +(\mathcal{F} f(x + x_0))(\xi) +&= \int_\mathbb{R} f(x + x_0) e^{-2 \pi i x \xi} \mathrm{d} x \\ +&= \int_\mathbb{R} f(x) e^{-2 \pi i (x - x_0) \xi} \mathrm{d} x \\ +&= e^{2 \pi i x_0 \xi} \int_\mathbb{R} f(x) e^{-2 \pi i x \xi} \mathrm{d} x \\ +&= e^{2 \pi i x_0 \xi} \hat{f}(\xi) +\end{align*} +$$ + +The reverse is also true (with a sign difference): + +$$ +\begin{align*} +\mathcal{F}(e^{2 \pi i x \xi_0} f(x))(\xi) +&= \int_\mathbb{R} e^{2 \pi i x \xi_0} f(x) e^{-2 \pi i x \xi} \mathrm{d} x \\ +&= \int_\mathbb{R} f(x) e^{-2 \pi i x (\xi - \xi_0)} \mathrm{d} x \\ +&= \hat{f}(\xi - \xi_0) +\end{align*} +$$ + +If you expand $$f$$ horizontally, you contract $$\hat{f}$$ both horizontally and vertically. $$ \begin{align*} -(\mathcal{F} f(x' + x_0))(x) -&= \int_\mathbb{R} f(x' + x_0) e^{-2 \pi i x' x} \mathrm{d} x' \\ -&= \int_\mathbb{R} f(x') e^{-2 \pi i (x' - x_0) x} \mathrm{d} x' \\ -&= e^{2 \pi i x_0 x} \int_\mathbb{R} f(x') e^{-2 \pi i x' x} \mathrm{d} x' \\ -&= e^{2 \pi i x_0 x} (\mathcal{F} f(x'))(x) +\mathcal{F}(f(a x))(\xi) +&= \int_\mathbb{R} f(a x) e^{-2 \pi i x \xi} \mathrm{d} x \\ +&= \frac{1}{|a|} \int_\mathbb{R} f(x) e^{-2 \pi i x \xi / a} \mathrm{d} x \\ +&= \frac{1}{|a|} \hat{f} \left( \frac{\xi}{a} \right) \end{align*} $$ ## Fourier Flips -The Fourier transform has a number of interesting properties related to the flip operator -$$(\mathcal{R} f)(x) = f(-x)$$. By definition +The Fourier transform has a number of interesting properties related to the flip (or reversal) +operator $$(\mathcal{R} f)(x) = f(-x)$$. By definition $$ (\mathcal{F}^{-1} f)(x) = \int_\mathbb{R} f(x') e^{2 \pi i x' x} \mathrm{d} x' @@ -73,7 +112,8 @@ $$ \end{align*} $$ -Thus $$\mathcal{F}^{-1} = \mathcal{F} \mathcal{R} = \mathcal{R} \mathcal{F}$$. This means that +Thus $$\mathcal{F}^{-1} = \mathcal{F} \mathcal{R} = \mathcal{R} \mathcal{F}$$. (You can also derive +this using the expansion/contraction formula discussed above). This means that $$ \mathcal{I} @@ -175,9 +215,9 @@ when we're dealing with a real function and only care about the magnitude of the for spectral power analysis). -## Transforms of Gaussians +## The Transform of a Gaussian -A Fourier Transform that comes up frequently is that of a Gaussian. It can be calculated by +A Fourier transform that comes up frequently is that of a Gaussian. It can be calculated by completing a square. $$ @@ -214,5 +254,5 @@ $$ \end{align*} $$ -This depends on the variance, which is inverted by the Fourier Transform. So since the power is +This depends on the variance, which is inverted by the Fourier transform. So since the power is invariant, the normalization cannot in general be conserved. diff --git a/_psets/1.md b/_psets/01.md similarity index 100% rename from _psets/1.md rename to _psets/01.md diff --git a/_psets/2.md b/_psets/02.md similarity index 100% rename from _psets/2.md rename to _psets/02.md diff --git a/_psets/3.md b/_psets/03.md similarity index 100% rename from _psets/3.md rename to _psets/03.md diff --git a/_psets/4.md b/_psets/04.md similarity index 97% rename from _psets/4.md rename to _psets/04.md index a9fc33c6fbfa0d1335d90cf802527e19aafd9f15..ea8216bc15b22138cdb837114cd3500706797414 100644 --- a/_psets/4.md +++ b/_psets/04.md @@ -199,11 +199,11 @@ equal to $$\num{2e-7}$$ newton per metre of length." Show that that current at that distance produces that force. First let's find the magnetic field of an infinitely long straight conductor. Let's use a -cylindrical coordinate system along this axis. Considering the Biot-Savart Law and the symmetry of -this problem, the magnetic field must be oriented along $$\hat{\mathrm{d} \theta}$$, with a -magnitude that depends only on $$r$$. Consider then a circle of radius $$r$$ centered on the wire. -Ampère's Law tells us that the magnitude of the field at any point on this circle is $$I / (2 -\pi r)$$. +cylindrical coordinate system along this axis. Considering the [Biot-Savart +Law](https://en.wikipedia.org/wiki/Biot%E2%80%93Savart_law) and the symmetry of this problem, the +magnetic field must be oriented along $$\hat{\mathrm{d} \theta}$$, with a magnitude that depends +only on $$r$$. Consider then a circle of radius $$r$$ centered on the wire. Ampère's Law +tells us that the magnitude of the field at any point on this circle is $$I / (2 \pi r)$$. The differential force exerted by this field on a differential piece of current is $$dF = I (dl \times B)$$. In this case the direction of the current and the magnetic field are perpendicular, so diff --git a/_psets/5.md b/_psets/05.md similarity index 100% rename from _psets/5.md rename to _psets/05.md diff --git a/_psets/6.md b/_psets/06.md similarity index 100% rename from _psets/6.md rename to _psets/06.md diff --git a/_psets/7.md b/_psets/07.md similarity index 100% rename from _psets/7.md rename to _psets/07.md diff --git a/_psets/08.md b/_psets/08.md new file mode 100644 index 0000000000000000000000000000000000000000..f9a1fc33280054e32daeb18dd31c6b6faba6c13d --- /dev/null +++ b/_psets/08.md @@ -0,0 +1,47 @@ +--- +title: Problem Set 8 +--- + + + + + +## (11.1) + +### (a) + +{:.question} +Derive equation (11.28) by taking the integral and limit of equation (11.27). + +### (b) + +{:.question} +Show that equation (11.29) follows. + +## (11.2) + +{:.question} +What is the expected occupancy of a state at the conduction band edge for Ge, Si, and diamond at +room temperature (300 K)? + +## (11.3) + +{:.question} +Consider Si doped with 1017 As atoms/cm3. + +### (a) + +{:.question} +What is the equilibrium hole concentration at 300 K? + +### (b) + +{:.question} +How much does this move EF relative to its intrinsic value? + +## (11.4) + +{:.question} +Design a tristate CMOS inverter by adding a control input to a conventional inverter that can force +the output to a high impedance (disconnected) state. These are useful for allowing multiple gates to +share a single wire. diff --git a/_psets/09.md b/_psets/09.md new file mode 100644 index 0000000000000000000000000000000000000000..68051bd722df561b9854466f377fe9b7a05fc548 --- /dev/null +++ b/_psets/09.md @@ -0,0 +1,130 @@ +--- +title: Problem Set 9 +--- + + + + + + + + +## (9.6) + +{:.question} +Solve the periodically forced Lorentz model for the dielectric constant as a function of frequency, +and plot the real and imaginary parts. + +The periodically forced Lorentz model is + +$$ +m \left( \ddot{x}(t) + \gamma \dot{x}(t) + \omega_0^2 x(t) \right) = -e E(t) +$$ + +It models the motion of a particle of mass $$m$$ and charge $$-e$$ subjected to a time-varying +electric field $$E(t)$$. Assuming a bulk material composed of such particles, we can use this model +to find a relation between the dielectric constant and frequency of incoming radiation. + +To start, the [polarization density](https://en.wikipedia.org/wiki/Polarization_density) can be +expressed in terms of the number of particles per unit volume, their charge, and their displacement: + +$$ +P = -N e x +$$ + +But it can also be expressed using the electric field and dielectric constant: + +$$ +P = \epsilon_0 E(\epsilon_r - 1) +$$ + +Thus the dielectric constant for this material is + +$$ +\epsilon_r = \frac{-N e x}{\epsilon_0 E} + 1 +$$ + +So now let's solve the model. Let's assume a simple sinusoidal solution. + +$$ +\begin{align*} +x(t) &= A e^{i \omega t} \\ +\dot{x}(t) &= i \omega A e^{i \omega t} \\ +\ddot{x}(t) &= - \omega^2 A e^{i \omega t} +\end{align*} +$$ + +Then the Lorentz model reduces to + +$$ +m A e^{i \omega t} \left( - \omega^2 + i \omega \gamma + \omega_0^2 \right) = -e E(t) +$$ + +or + +$$ +\frac{x(t)}{E(t)} = \frac{-e}{m \left( \omega_0^2 - \omega^2 + i \omega \gamma \right)} +$$ + +So this solution is valid for a sinusoidally varying electric field. + +Finally we just plug this in to find + +$$ +\epsilon_r = \frac{N e^2}{\epsilon_0 m \left( \omega_0^2 - \omega^2 + i \omega \gamma \right)} + 1 +$$ + + +## (12.1) + +### (a) + +{:.question} +How many watts of power are contained in the light from a 1000 lumen video projector? + +### (b) + +{:.question} +What spatial resolution is needed for the printing of a page in a book to match the eye’s limit? + + +## (12.2) + +### (a) + +{:.question} +What is the peak wavelength for black-body radiation from a person? From the cosmic background +radiation at 2.74 K? + +### (b) + +{:.question} +Approximately how hot is a material if it is “red-hot”? + +### (c) + +{:.question} +Estimate the total power thermally radiated by a person. + + +## (12.3) + +### (a) + +{:.question} +Find a thickness and an orientation for a birefringent material that rotates a linearly polarized +wave by $$90^\circ$$. What is that thickness for calcite with visible light ($$\lambda \approx 600 +\si{nm}$$)? + +### (b) + +{:.question} +Find a thickness and an orientation that converts linearly polarized light to circularly polarized +light, and evaluate the thickness for calcite. + +### (c) + +{:.question} +Consider two linear polarizers oriented along the same direction, and a birefringent material +placed between them. What is the transmitted intensity as a function of the orientation of the +birefringent material relative to the axis of the polarizers? diff --git a/_psets/10.md b/_psets/10.md new file mode 100644 index 0000000000000000000000000000000000000000..bda36db639146a3ca98e1018ce1a7f0e0e926368 --- /dev/null +++ b/_psets/10.md @@ -0,0 +1,196 @@ +--- +title: Problem Set 10 +--- + + + + +## (13.1) + +### (a) + +{:.question} +Estimate the diamagnetic susceptibility of a typical solid. + +Starting from equation 12.15, + +$$ +\begin{align*} +\chi_m &= -\mu_0 \frac{q^2 Z r^2}{4 m_e V} \\ +&= -\num{1.26e-6} \si{N/A^2} \frac{(\num{1.6e-19} \si{C})^2 \cdot 1 \cdot (10^{-10} \si{m})^2} + {4 \cdot \num{9.1e-31} \si{kg} \cdot (10^{-10} \si{m})^3} \\ +&= \num{-8.9e-5} +\end{align*} +$$ + +### (b) + +{:.question} +Using this, estimate the field strength needed to levitate a frog, assuming a gradient that drops to +zero across the frog. Express your answer in teslas. + +From 12.7, + +$$ +F = -V \mu_0 \chi_m H \frac{d H}{d z} +$$ + +I'll assume the frog is 0.1 meters tall, has a mass of 0.1 kg, and a volume of $$10^{-4} \si{m^3}$$ +(this is consistent with the frog being mostly water). I'll also assume the magnetic field gradient +is constant, so $$dH/dz = H / 0.1$$. Solving for $$H$$, + +$$ +\begin{align*} +H &= \sqrt{-\frac{F z}{V \mu_0 \chi_m}} \\ +&= \sqrt{-\frac{0.1 \si{kg} \cdot 9.8 \si{m/s^2} \cdot 0.1 \si{m}} + {10^{-4} \si{m^3} \cdot \num{1.26e-6} \si{N/A^2} \cdot \num{-8.9e-5}}} \\ +&= \num{3e6} \si{A/m} \\ +\end{align*} +$$ + +Thus the magnetic field is + +$$ +\begin{align*} +B &= \mu_0 H \\ +&= \num{1.26e-6} \si{N/A^2} \cdot \num{3e6} \si{A/m} \\ +&= 3.7 \si{T} +\end{align*} +$$ + + +## (13.2) + +{:.question} +Estimate the size of the direct magnetic interaction energy between two adjacent free electrons in a +solid, and compare this to the size of their electrostatic interaction energy. Remember that the +field of a magnetic dipole $$\vec{m}$$ is + +$$ +\vec{B} = \frac{\mu_0}{4 \pi} + \left[ \frac{3 \hat{x} (\vec{m} \cdot \hat{x}) - \vec{m}}{|\vec{x}|^3} \right] +$$ + +The force between two magnetic dipoles $$m_1$$ and $$m_2$$ (with associated fields $$B_1$$ and +$$B_2$$) is $$F = -\nabla (m_1 \cdot B_2)$$, and the characteristic interaction energy is $$m_1 +\cdot B_2$$. This will be maximized when $$m_1$$ and $$B_2$$ are parallel. From the equation above, +we can see that the field strength will be maximized when $$\hat{x}$$ is antiparallel to $$\vec{m}$$. +Assuming a separation of 1 angstrom, the total energy is thus + +$$ +\begin{align*} +E_m &= m \cdot \frac{\mu_0}{4 \pi} \left( \frac{4 m}{r^3} \right) \\ +&= \frac{\mu_0 m^2}{\pi r^3} \\ +&= \frac{\num{1.26e-6} \si{N/A^2} (\num{-9.28e-24} \si{J/T})^2}{\pi (10^{-10} \si{m})^3} \\ +&= \num{3.5e-23} \si{J} +\end{align*} +$$ + +Meanwhile their electrostatic potential is + +$$ +\begin{align*} +E_e &= q E \\ +&= q \frac{q}{4 \pi \epsilon_0 r} \\ +&= \frac{q^2}{4 \pi \epsilon_0 r} \\ +&= \frac{(\num{1.6e-19} \si{C})^2}{4 \pi \cdot \num{8.85e-12} \si{F/m} \cdot 10^{-10} \si{m}} \\ +&= \num{2.3e-18} \si{J} +\end{align*} +$$ + + +## (13.3) + +{:.question} +Using the equation for the energy in a magnetic field, describe why: + +### (a) + +{:.question} +A permanent magnet is attracted to an unmagnetized ferromagnet. + +The equation of interest for energy density is + +$$ +U = \frac{1}{2} (E \cdot D + B \cdot H) +$$ + +For this problem I assume the electric field is zero, so the total energy is + +$$ +U = \frac{1}{2 \mu} \int B^2 \mathrm{d} V +$$ + +An unmagnetized ferromagnet has a very high $$\mu$$, so $$U$$ is reduced by packing more field lines +into its extent. The permanent magnet's field lines are densest closest to its body, so the gradient +of the energy describes an attractive force. + +### (b) + +{:.question} +The opposite poles of permanent magnets attract each other. + +We know that $$B = \mu (H + M)$$, so + +$$ +\begin{align*} +U &= \frac{1}{2 \mu} \int \mu (H + M) \cdot H \mathrm{d} V \\ +&= \frac{1}{2} \int (H^2 + M \cdot H) \mathrm{d} V \\ +\end{align*} +$$ + +This is reduced when $$H$$ and $$M$$ are anti-aligned. + + +## (13.4) + +{:.question} +Estimate the saturation magnetization for iron at 0 K. + +I looked up the density, molar mass, and number of valence electrons of iron. My answer also uses +the proton mass and electron magnetic moment. + +$$ +\begin{align*} +7,874 \si{kg/m^3} +&\cdot \frac{1 \text{ nucleon}}{\num{1.67e-27} \si{kg}} +\cdot \frac{1 \text{ atom}}{55.845 \text{ nucleons}} \\ +&\cdot \frac{2 \text{ electrons}}{1 \text{ atom}} +\cdot \frac{\num{9.28e-24} \si{J/T}}{1 \text{ electron}} \\ +&= \num{1.6e6} \si{A/m} +\end{align*} +$$ + +## (13.5) + +### (a) + +{:.question} +Show that the area enclosed in a hysteresis loop in the $$(B,H)$$ plane is equal to the energy +dissipated in going around the loop. + +### (b) + +{:.question} +Estimate the power dissipated if 1 kg of iron is cycled through a hysteresis loop at 60 Hz; the +coercivity of iron is $$\num{4e3} \si{A/m}$$. + + +## (13.6) + +{:.question} +Approximately what current would be required in a straight wire to be able to erase a $$\gamma +\text{-} Fe_2 O_3$$ recording at a distance of 1 cm? + +As found in problem 6.4 in [problem set 4](04.html), the magnitude of the magnetic field a distance +$$r$$ away from an infinitely long and thin conductor carrying a current $$I$$ is $$I/(2 \pi r)$$. +To erase information stored on $$Fe_2 O_3$$ we need this field to be about as strong as the +coercivity $$H_C = 300 \si{Oe}$$. Thus the current needed is + +$$ +\begin{align*} +I &= 2 \pi r H_C \\ +&= 2 \pi \cdot 10^{-2} \si{m} \cdot 300 \si{Oe} \cdot \frac{79.6 \si{A/m}}{1 \si{Oe}} \\ +&= 1500 \si{A} +\end{align*} +$$ diff --git a/_psets/11.md b/_psets/11.md new file mode 100644 index 0000000000000000000000000000000000000000..b567cd88f1c9759d015d2cd6c6f2802043a2e19a --- /dev/null +++ b/_psets/11.md @@ -0,0 +1,391 @@ +--- +title: Problem Set 11 +--- + + +## (14.1) + +{:.question} +Do a Taylor expansion of equation (14.6) around V = 0. + +Equation 14.6 states + +$$ +E \approx 2 E_F - 2 E_C e^{-2/(N_F V)} +$$ + +The Taylor expansion of $$e^x$$ about zero is + +$$ +e^x = \sum_{n = 0}^\infty \frac{x^n}{n!} +$$ + +so + +$$ +E \approx 2 E_F - 2 E_C \sum_{n = 0}^\infty \frac{1}{n!} \left( \frac{-2}{N_F V} \right)^n +$$ + +But this is an expansion around $$V = \infty$$. + +If you really want an expansion about $$V = 0$$, note that + +$$ +\frac{d}{dx} e^{x^{-1}} = -x^{-2} e^{x^{-1}} +$$ + +As we keep taking higher derivatives we'll get more and more negative powers of $$x$$, but we'll +never get rid of the $$e^{1/x}$$. So at $$x = 0$$ the latter term dominates, meaning the function +and all its derivatives are zero. Thus the Taylor expansion about zero is identically zero. + +Plugging this into equation 14.6 gives us the rather uninteresting + +$$ +E \approx 2 E_F +$$ + + +## (14.2) + +{:.question} +Problem 6.5 showed that for a Kibble balance the current I measured in the dynamic phase and the +voltage V measured in the static phase are related to the mass m, gravitational constant g, and +velocity v by $$IV = mgv$$. Using the inverse AC Josephson effect (equation 14.25) to determine the +voltage, and the quantum Hall effect (equation 13.41) along with the inverse AC Josephson effect to +determine the current, relate the measurement to fundamental constant(s). + +In problem 6.5 in [problem set 4](04.html) we found that + +$$ +m = -\frac{I V}{g v} +$$ + +The AC Josephson effect gives us a relation between voltage and frequency that only depends on +fundamental constants (and n, a positive integer). + +$$ +V = n \frac{h}{2 e} f +$$ + +The quantum Hall effect can give us a resistance that only depends on fundamental constants (and i, +a positive integer). + +$$ +R_H = \frac{h}{i e^2} +$$ + +By Ohm's Law $$IV = V^2/R$$, so the Kibble balance equation can be written as + +$$ +mgv = -\frac{V^2}{R} +$$ + +Plugging in the values above we find + +$$ +4mgv = -h i n^2 f^2 +$$ + + +## (14.3) + +{:.question} +If a SQUID with an area of $$A = 1 cm^2$$ can detect 1 flux quantum, how far away can it sense the +field from a wire carrying 1 A? + +As found in problem 6.4 in [problem set 4](04.html), the magnitude of the magnetic field a distance +$$r$$ away from an infinitely long and thin conductor carrying a current $$I$$ is $$I/(2 \pi r)$$. +One flux quantum is $$\num{2.07e-7} \si{G \cdot cm^2}$$ i.e. $$\num{2.07e-11} \si{T \cdot cm^2}$$. +So to get one flux quantum over $$1 \si{cm^2}$$, we need a magnetic field of $$\num{2.07e-11} +\si{T}$$. Thus a one amp current can be detected at a distance of + +$$ +\begin{align*} +r &= \frac{\mu_o I}{2 \pi B} \\ +&= \frac{\num{1.26e-6} \si{T m / A} \cdot 1 \si{A}}{2 \pi \cdot \num{2.07e-11} \si{T}} \\ +&= \num{9.66e3} \si{m} +\end{align*} +$$ + + +## (14.4) + +{:.question} +Typical parameters for a quartz resonator are $$C_e = 5 \si{pF}$$, $$C_m = 20 \si{fF}$$, $$L_m = 3 +\si{mH}$$, $$R_m = 6 \si{\ohm}$$. Plot, and explain, the dependence of the reactance (imaginary part +of the impedance), resistance (real part), and the phase angle of the impedance on the frequency. + +The circuit in question is depicted in figure 14.4. There's a capacitance $$C_e$$ in parallel with +a series RLC circuit ($$R_m$$, $$L_m$$, and $$C_m$$). To solve this it's helpful to know the complex +impedances of the basic electrical components: + +$$ +\begin{align*} +Z_C &= \frac{1}{i \omega C} \\ +Z_L &= i \omega L \\ +Z_R &= R +\end{align*} +$$ + +Then we just combine these, using the sum for series connections, and the inverse of the sum of +inverses for parallel connections. So the total impedance $$Z$$ is + +$$ +\begin{align*} +\frac{1}{Z} &= \frac{1}{Z_{C_e}} + \frac{1}{Z_{C_m} + Z_{L_m} + Z_{R_m}} \\ +&= i \omega C_e + \frac{1}{1/(i \omega C_m) + i \omega L_m + R_m} \\ +&= i \omega C_e + \frac{\omega C_m}{-i + \omega C_m (R_m + i \omega L_m)} \\ +Z &= \frac{1}{i \omega C_e + \frac{\omega C_m}{\omega C_m (R_m + i \omega L_m) - i}} +\end{align*} +$$ + +Let's see what this looks like with the given values plugged in. All the x axes are in radians per +second. + +The resistance (real part) is very small except for a spike near $$\num{4e6} \si{rad/s}$$. + + + +Mathematica tells me the max occurs at + +$$ +\begin{align*} +\omega_\text{max} &= \frac{1}{L_m} \sqrt{\frac{2 C_e L_m + 2 C_m L_m -C_e C_m R_m^2}{2 C_e C_m}} \\ +&\approx \num{4.09e6} \si{rad/s} +\end{align*} +$$ + +But the first term in the numerator is a couple orders of magnitude larger than the others, so we +can approximate $$\omega_\text{max}$$ by dropping them. + +$$ +\begin{align*} +\omega_\text{max} &\approx \frac{1}{L_m} \sqrt{\frac{2 C_e L_m}{2 C_e C_m}} \\ +&= \frac{1}{\sqrt{C_m L_m}} \\ +&\approx \num{4.08e6} \si{rad/s} +\end{align*} +$$ + +The reactance decreases without bound as $$\omega$$ approaches zero, and tends toward 0 as +$$\omega$$ increases. It has a kink in about the same place the resistance has a spike. + + + +Finally the phase is almost always $$-\pi$$, except where it shoots just above one (radian), again +near $$\omega = 1/\sqrt{C_m L_m}$$. + + + +Let's zoom in on those spikes. + + + + + + +## (14.5) + +{:.question} +If a ship traveling on the equator uses one of John Harrison’s chronometers to navigate, what is the +error in its position after one month? What if it uses a cesium beam atomic clock? + +To solve this we need to know how many seconds are in a month. + +$$ +1 \si{month} \cdot \frac{30 \si{days}}{1 \si{month}} \cdot \frac{86400 \si{s}}{1 \si{day}} += \num{2.59e6} \si{s} +$$ + +Harrison's chronometer has a relative error of $$10^{-5}$$. So after a month it will be off by + +$$ +\begin{align*} +\Delta t &= 10^{-5} \cdot \num{2.59e6} \si{s} \\ +&= 25.9 \si{s} +\end{align*} +$$ + +In Harrison's time the only reference available to sailors at sea were the stars. Using a sextant +you can measure the angle between a known astronomical object (say Alpha Andromedae) and the +horizon. This tells you your angle relative to the stars. You want your angle relative to the Earth +(i.e. longitude). So the missing information is the angle of the Earth relative to the stars. This +you can compute if you just know what time it is (and the time of year). + +But if your time measurement is off by $$\Delta t$$, your estimate of the Earth's angle will be off +by $$\Delta t \cdot v$$ where $$v$$ is the speed of the surface of the Earth due to rotation. +Assuming you did take a really accurate measurement of your own angle relative to the stars, this +will be the same error in your estimate of your position relative to the Earth. + +So first let's find $$v$$ (at the equator). + +$$ +\begin{align*} +v &= r \omega \\ +&= r \cdot \frac{1 \si{rotation}}{1 \si{day}} \cdot \frac{2 \pi \si{rad}}{1 \si{rotation}} + \cdot \frac{1 \si{day}}{86400 \si{s}} \\ +&= \frac{2 \pi \cdot \num{6.37e6} \si{m}}{86400 \si{s}} \\ +&= 463.3 \si{m/s} +\end{align*} +$$ + +Then the error in the ship's position measurement is + +$$ +\begin{align*} +\Delta t \cdot v &= 25.9 \si{s} \cdot 463.3 \si{m/s} \\ +&= 12 \si{km} +\end{align*} +$$ + +If we instead use a Cesium clock, with a relative error of $$10^{-12}$$, we'll only be off by + +$$ +10^{-12} \cdot \num{2.59e6} \si{s} \cdot 463.3 \si{m/s} = 1.2 \si{mm} +$$ + + + + +## (14.6) + +{:.question} +GPS satellites orbit at an altitude of 20,180 km. + +### (a) + +{:.question} +How fast do they travel? + +We need a relationship between orbital altitude and velocity. Consider a particle moving in a +circle of radius $$r$$, with angular velocity $$\omega$$. We can model its trajectory as + +$$ +\begin{align*} +x(t) &= r e^{i \omega t} \\ +\dot{x}(t) &= i r \omega e^{i \omega t} \\ +\ddot{x}(t) &= -r \omega^2 e^{i \omega t} +\end{align*} +$$ + +The magnitude of its acceleration is $$r \omega^2$$, so it experiences a force + +$$ +\begin{align*} +F &= ma \\ +&= m r \omega^2 \\ +&= m \frac{v^2}{r} +\end{align*} +$$ + +where the last line follows since $$v = r \omega$$. + +In this case we know $$r$$ (recall that the radius of the Earth is $$\num{6.37e6} \si{m}$$), and we +can assume the only force is gravitational. Thus + +$$ +\begin{align*} +\frac{G M m}{r^2} &= m \frac{v^2}{r} \\ +v &= \sqrt{\frac{GM}{r}} \\ +&= \sqrt{\frac{\num{6.67e-11} \si{m^3 kg^{-1} s^{-2}} \cdot \num{5.97e24} \si{kg}} + {\num{6.37e6} \si{m} + \num{2.02e7} \si{m}}} \\ +&= \num{3.87e3} \si{m/s} +\end{align*} +$$ + +### (b) + +{:.question} +What is their orbital period? + +$$ +\begin{align*} +T &= \frac{2 \pi r}{v} \\ +&= \frac{2 \pi \left( \num{6.37e6} \si{m} + \num{2.02e7} \si{m} \right) }{\num{3.87e3} \si{m/s}} \\ +&= \num{4.31e4} \si{s} \\ +&= \num{11.96} \si{hours} +\end{align*} +$$ + +### (c) + +{:.question} +Estimate the special-relativistic correction over one orbit between a clock on a +GPS satellite and one on the Earth. Which clock goes slower? + +We have already found the velocity of the satellite. As we found in the previous problem, the +velocity of a clock on the surface of the Earth is $$463.3 \si{m/s}$$. Thus the respective [Lorentz +factors](https://en.wikipedia.org/wiki/Lorentz_factor) are + +$$ +\begin{align*} +\gamma_\text{Earth} &= \frac{1}{\sqrt{1 - (463.3 \si{m/s})^2 / (\num{3e8} \si{m/s})^2}} \\ +&= 1 + \num{1.19e-12} \\ +\gamma_\text{orbit} &= \frac{1}{\sqrt{1 - (\num{3.87e3} \si{m/s})^2 / (\num{3e8} \si{m/s})^2}} \\ +&= 1 + \num{8.33e-11} +\end{align*} +$$ + +So one day on the surface of the Earth is longer than one day at the center of the Earth by + +$$ +\begin{align*} +\Delta t &= (\gamma_\text{Earth} - 1) \cdot 1 \si{day} \\ +&= \num{1.19e-12} \cdot 86400 \si{s} \\ +&= \num{1.03e-7} \si{s} +\end{align*} +$$ + +And one day in orbit is longer than one day at the center of the Earth by + +$$ +\begin{align*} +\Delta t &= (\gamma_\text{orbit} - 1) \cdot 1 \si{day} \\ +&= \num{8.33e-11} \cdot 86400 \si{s} \\ +&= \num{7.20e-6} \si{s} +\end{align*} +$$ + +Similarly one orbital period on the surface of the Earth is longer than one orbital period at the +center of the Earth by + +$$ +\begin{align*} +\Delta t &= \num{1.19e-12} \cdot \num{4.31e4} \si{s} \\ +&= \num{5.13e-8} \si{s} +\end{align*} +$$ + +And one orbital period in orbit is longer than one orbital period at the center of the Earth by + +$$ +\begin{align*} +\Delta t &= \num{8.33e-11} \cdot \num{4.31e4} \si{s} \\ +&= \num{3.59e-6} \si{s} +\end{align*} +$$ + +The latter is also a good approximation of the difference between a clock in orbit vs the surface of +the Earth over one orbit. Technically speaking the surface of the Earth isn't an inertial frame of +reference, but relative to orbit it's close. + +### (d) + +{:.question} +What is the general-relativistic correction over one orbit? Which clock goes +slower? + +The general relativistic correction indicates that time passes more quickly in orbit than on Earth +because the Earth's gravitational field is stronger on the surface than in orbit. The difference +over one day is + +$$ +\begin{align*} +\Delta t &= \left(\frac{1 - \frac{GM}{rc^2}}{1 - \frac{GM}{r'c^2}} - 1 \right) \cdot 1 \si{day} \\ +&= \left(\frac{1 - \frac{\num{3.99e14} \si{m^3/s^2}}{(\num{6.37e6} \si{m} + \num{2.02e7} \si{m}) + \cdot (\num{3e8} \si{m/s^2})^2}}{1 - \frac{\num{3.99e14} \si{m^3/s^2}}{\num{6.37e6} \si{m} + \cdot (\num{3e8} \si{m/s^2})^2}} - 1\right) \cdot 86400 \si{s} \\ +&= \num{4.57e-5} \si{s} +\end{align*} +$$ + +Similarly the difference over one orbital period is $$\Delta t = \num{2.28e-5} \si{s}$$. diff --git a/_psets/12.md b/_psets/12.md new file mode 100644 index 0000000000000000000000000000000000000000..c05aeb9f0e1517ff7ea537c71b2bab0ce7c602bd --- /dev/null +++ b/_psets/12.md @@ -0,0 +1,489 @@ +--- +title: Problem Set 12 +--- + +## (15.1) + +### (a) + +{:.question} +Show that the circuits in Figures 15.1 and 15.2 differentiate, integrate, sum, and difference. + +I'll take as given that op amps with negative feedback keep their two input terminals at the same +voltage. I also assume ideal op-amps that draw no current from their inputs. All the proofs follow +from [Kirchhoff's current law](https://en.wikipedia.org/wiki/Kirchhoff%27s_circuit_laws) (aka +conservation of charge). I write $$R_f$$ to refer to the resistor in the feedback path. All +schematics are from Wikimedia Commons. + +#### Integrator + + + +For the integrator, current through the resistor must equal current through the capacitor. + +$$ +\begin{align*} +\frac{V_i}{R} &= - C \frac{dV_o}{dt} \\ +\frac{dV_o}{dt} &= \frac{-V_i}{R C} \\ +V_o &= - \frac{1}{RC} \int V_i \mathrm{d}t +\end{align*} +$$ + +#### Differentiator + + + +For the differentiator, current through the capacitor must equal current through the resistor. + +$$ +\begin{align*} +C \frac{dV_i}{dt} &= \frac{-V_o}{R} \\ +V_o &= -RC \frac{dV_i}{dt} +\end{align*} +$$ + +#### Summing Amplifier + + + +For the summing amplifier, the sum of the currents through the input resistors must equal the +current through the feedback resistor. + +$$ +\begin{align*} +\frac{V_1 + \cdots + V_n}{R_i} &= -\frac{V_o}{R_f} \\ +V_o &= -\frac{R_f}{R_i} (V_1 + \cdots + V_n) +\end{align*} +$$ + +#### Differential Amplifier + + + +For the difference amplifier, neither input terminal is grounded, so we can't assume they're at zero +volts. Call their voltage $$V_i$$. I'll also assume both resistors $$R_1$$ and $$R_2$$ in the above +schematic are the same, which I'll call $$R_i$$. Applying Kirchhoff's current law to the +non-inverting input, + +$$ +\begin{align*} +\frac{V_2 - V_i}{R_i} &= \frac{V_i}{R_f} \\ +\frac{V_2}{R_i} &= V_i \left( \frac{1}{R_i} + \frac{1}{R_f} \right) +\end{align*} +$$ + +Then looking at the inverting input, + +$$ +\begin{align*} +\frac{V_1 - V_i}{R_i} &= \frac{V_i - V_o}{R_f} \\ +\frac{V_1}{R_i} - \frac{V_o}{R_f} &= V_i \left( \frac{1}{R_i} + \frac{1}{R_f} \right) \\ +\frac{V_1}{R_i} - \frac{V_o}{R_f} &= \frac{V_2}{R_i} \\ +V_o &= \frac{R_f}{R_i} (V_2 - V_1) +\end{align*} +$$ + +### (b) + +{:.question} +Design a non-inverting op-amp amplifier. Why are they used less commonly than inverting ones? + + + +Connect the signal you want to amplify to the non-inverting input. Then create a voltage divider, +connected to ground on one end, the inverting input in the middle, and the output on the other end. +I'll call the resistor connected to ground $$R_g$$, and the feedback resistor $$R_f$$ as before. + +$$ +\begin{align*} +\frac{V_o - V_i}{R_f} &= \frac{V_i}{R_g} \\ +\frac{V_o}{R_f} &= V_i \frac{R_f + R_g}{R_f R_g} \\ +V_o &= V_i \left( 1 + \frac{R_f}{R_g} \right) +\end{align*} +$$ + +A potential downside is that the gain must be at least unity. Additionally the nodes aren't tied to +ground, so if the op-amp has imperfect common-mode rejection we'll see it in the output. A potential +upside is that the input impedance is very high. And, of course, the output isn't inverted. + +### (c) + +{:.question} +Design a transimpedance (voltage out proportional to current in) and a transconductance (current out +proportional to voltage in) op-amp circuit. + + + +For a transimpedance amplifier, replace the input resistor in an inverting amplifier with a wire. +Then the current flowing through the feedback resistor is equal to the current at the input. So $$I += V_o / R_f$$, and $$V_o = R_f I$$. + +For a transconductance amplifier, replace the feedback resistor with a wire. Then the current out +is $$I = -V_i / R_i$$. If you want a non-inverting transconductance amplifier, connect the input +straight to the non-inverting terminal and connect the inverting terminal to ground via a resistor +$$R_g$$. Then $$I = V_i / R_g$$. + +### (d) + +{:.question} +Derive equation (15.16). + +The currents flowing through $$R_1$$, $$R_o$$, and $$C$$ must be equal. Call this current $$I$$ +(I'll take left to right to be positive for all currents). Because of the negative feedback, the +inverting input of the op-amp is a virtual ground. Recall that $$Q = CV$$, so $$dQ/dt = I = C +dV/dt$$. Thus we can express $$I$$ three ways: + +$$ +\begin{align*} +I &= \frac{V_{PD}}{R_1} \\ +&= -\frac{V_{RC}}{R_0} \\ +&= C \left( \frac{dV_{RC}}{dt} - \frac{dV_F}{dt} \right) +\end{align*} +$$ + +I'm using $$V_{RC}$$ to denote the voltage at the junction between $$R_O$$ and $$C$$. +Differentiating the first two lines yields + +$$ +\begin{align*} +\frac{dI}{dt} &= \frac{1}{R_1} \frac{dV_{PD}}{dt} \\ +&= -\frac{1}{R_0} \frac{dV_{RC}}{dt} +\end{align*} +$$ + +Thus + +$$ +\frac{dV_{RC}}{dt} = -\frac{R_0}{R_1} \frac{dV_{PD}}{dt} +$$ + +As such we can write the current through the capacitor as + +$$ +I = C \left( -\frac{R_0}{R_1} \frac{dV_{PD}}{dt} - \frac{dV_F}{dt} \right) +$$ + +This can still be equated + +$$ +C \left( -\frac{R_0}{R_1} \frac{dV_{PD}}{dt} - \frac{dV_F}{dt} \right) = \frac{V_{PD}}{R_1} +$$ + +So all that remains is to solve for $$dV_F/dt$$. + +$$ +\frac{dV_F}{dt} = \frac{V_{PD}}{R_1 C} + \frac{R_0}{R_1} \frac{dV_{PD}}{dt} +$$ + +This differs in sign from (15.16) because the book makes the positive current direction right to +left. + + +## (15.2) + +{:.question} +If an op-amp with a gain–bandwidth product of 10 MHz and an open-loop DC gain of 100 dB is +configured as an inverting amplifier, plot the magnitude and phase of the gain as a function of +frequency as $$R_\text{out}/R_\text{in}$$ is varied. + + +## (15.3) + +{:.question} +A lock-in has an oscillator frequency of 100 kHz, a bandpass filter Q of 50 (re- member that the Q +or quality factor is the ratio of the center frequency to the width between the frequencies at which +the power is reduced by a factor of 2), an input detector that has a flat response up to 1 MHz, and +an output filter time constant of 1 s. For simplicity, assume that both filters are flat in their +passbands and have sharp cutoffs. Estimate the amount of noise reduction at each stage for a signal +corrupted by additive uncorrelated white noise. + +## (15.4) + +### (a) + +{:.question} +For an order 4 maximal LFSR work out the bit sequence. + +Table (13.1) indicates that a maximal LFSR of order 4 is $$x_n = x_{n-1} + x_{n-4}$$. The bit +sequence has to repeat in a cycle of length $$2^4 - 1 = 15$$. The bits are 1, 1, 1, 1, 0, 1, 0, 1, +1, 0, 0, 1, 0, 0, 0. + +### (b) + +{:.question} +If an LFSR has a chip rate of 1GHz, how long must it be for the time between repeats to be the age +of the universe? + +The age of the universe is 13.7 billion years, which is about $$\num{43e16}$$ seconds. + +$$ +\begin{align*} +(2^N - 1) \cdot 10^{-9} \si{s} = \num{43e16} \si{s} \\ +(2^N - 1) = \num{43e25} +N = 88.5 +\end{align*} +$$ + +### (c) + +{:.question} +Assuming a flat noise power spectrum, what is the coding gain if the entire sequence is used to send +one bit? + +I think the coding gain works out like the SNR I derive in the next problem... but could be wrong. + +$$ +10 \log_{10} \left( 2^{88.5} \right) = 266 \si{dB} +$$ + + +## (15.5) + +{:.question} +What is the SNR due to quantization noise in an 8-bit A/D? 16-bit? How much must the former be +averaged to match the latter? + +This depends on the characteristics of the signal. Assuming that it uses the full range of the A/D +converter (but no more), and over time is equally likely to be any voltage in that range, then the +SNR in decibels is + +$$ +\text{SNR} = 20 \log_{10}(2^n) +$$ + +where $$n$$ is the number of bits used. + +So we have + +$$ +\begin{align*} +\text{8-bit SNR} &= 20 \log_{10}(2^8) \\ &= 48.2 \si{dB} \\ +\text{16-bit SNR} &= 20 \log_{10}(2^{16}) \\ &= 96.3 \si{dB} +\end{align*} +$$ + +But where does this come from? Recall that the definition of the SNR is the ratio of the power in +the signal to the power in the noise. Let's say we have an analog signal $$f(t)$$ within the range +$$[-A, A]$$. Let its time-averaged distribution be $$p(x)$$. Then the power in the signal is + +$$ +P_\text{signal} = \int_{-A}^A x^2 p(x) \mathrm{d} x +$$ + +Let's assume that the signal is equally likely to take on any value in its range, so $$p(x) = +1/(2A)$$. This is completely true of triangle waves and sawtooth waves, relatively true for sin waves, but not +true at all for square waves. So this approximation may or may not be very accurate. Then its power +is + +$$ +\begin{align*} +P_\text{signal} &= \frac{1}{2A} \int_{-A}^A x^2 \mathrm{d} x \\ +&= \frac{1}{2A} \frac{1}{3} \left[ x^3 \right]_ {-A}^A \\ +&= \frac{1}{2A} \frac{1}{3} 2A^3 \\ +&= \frac{A^2}{3} +\end{align*} +$$ + +When the signal is quantized, each measurement $$f(t)$$ is replaced with a quantized version. The +most significant bit tells us which half of the signal range we're in. In this case that means +whether we're in the range [-A, 0] or [0, A]. Note that each interval is $$A$$ long. The next bit +tells us which half of that half we're in. Each interval is $$A/2$$ long. So finally the least +significant bit will tell us which half of a half etc. we're in, and each interval will be +$$A/2^{n - 1}$$ long (or equivalently $$2A/2^n$$), where $$n$$ is the number of bits. + +The uncertainty we have about the original value is thus plus or minus half the least significant +bit. So the quantization error will be in the range $$[-A/2^n, A/2^n]$$. Since we're assuming our +signal is equally likely to take any value, the quantization error is equally likely to fall +anywhere in this range. Thus the power in the quantization noise is + +$$ +\begin{align*} +P_\text{noise} &= \frac{2^n}{2A} \int_{-A/2^n}^{A/2^n} x^2 \mathrm{d} x \\ +&= \frac{2^n}{2A} \frac{1}{3} \left[ x^3 \right]_ {-A/2^n}^{A/2^n} \\ +&= \frac{2^n}{2A} \frac{1}{3} \frac{2 A^3}{2^{3n}} \\ +&= \frac{A^2}{3} \frac{1}{2^{2n}} +\end{align*} +$$ + +Putting it together, + +$$ +\begin{align*} +\text{SNR} &= 10 \log_{10} \left( \frac{P_\text{signal}}{P_\text{noise}} \right) \\ +&= 10 \log_{10} \left( \frac{A^2}{3} \cdot \frac{3}{A^2} \frac{2^{2n}}{1} \right) \\ +&= 10 \log_{10} \left( 2^{2n} \right) \\ +&= 20 \log_{10} \left( 2^n \right) +\end{align*} +$$ + + +## (15.6) + +{:.question} +The message 00 10 01 11 00 ($$c_1$$, $$c_2$$) was received from a noisy channel. If it was sent by +the convolutional encoder in Figure 15.20, what data were transmitted? + + +## (15.7) + +{:.question} +This problem is harder than the others. + +My code for all sections of this problem is +[here](https://gitlab.cba.mit.edu/erik/compressed_sensing). All the sampling and gradient descent is +done in C++ using [Eigen](http://eigen.tuxfamily.org) for vector and matrix operations. I use Python +and [matplotlib](https://matplotlib.org/) to generate the plots. + +### (a) + +{:.question} +Generate and plot a periodically sampled time series {$$t_j$$} of N points for the sum of two sine +waves at 697 and 1209 Hz, which is the DTMF tone for the number 1 key. + +Here's a plot of 250 samples taken over one tenth of a second. + + + +### (b) + +{:.question} +Calculate and plot the Discrete Cosine Transform (DCT) coefficients {$$f_i$$} for these data, +defined by their multiplication by the matrix $$f_i = \sum_{j = 0}^{N - 1} D_{ij} t_j$$, where + +$$ +\begin{align*} +D_{ij} = +\begin{cases} +\sqrt{\frac{1}{N}} &(i = 0)\\ +\sqrt{\frac{2}{N}} \cos \left( \frac{\pi (2j + 1) i}{2 N} \right) &(1 \leq i \leq N - 1) +\end{cases} +\end{align*} +$$ + + + +### (c) + +{:.question} +Plot the inverse transform of the {$$f_i$$} by multiplying them by the inverse of the DCT matrix +(which is equal to its transpose) and verify that it matches the time series. + +The original samples are recovered. + + + +### (d) + +{:.question} +Randomly sample and plot a subset of M points {$$t^\prime_k$$} of the {$$t_j$$}; you’ll later +investigate the dependence on the sample size. + +Here I've selected 100 samples from the original 250. The plot is recognizable but very distorted. + + + +### (e) + +{:.question} +Starting with a random guess for the DCT coefficients {$$f^\prime_i$$}, use gradient descent to +minimize the error at the sample points + +$$ +\min_{\{f^\prime_i\}} \sum_{k = 0}^{M - 1} +\left( t^\prime_k - \sum_{j = 0}^{N - 1} D_{ij} f^\prime_i \right)^2 +$$ + +{:.question} +and plot the resulting estimated coefficients. + +Gradient descent very quickly drives the loss function to zero. However it's not reconstructing the +true DCT coefficients. + + + +To make sure I don't have a bug in my code, I plotted the samples we get by performing the inverse +DCT on the estimated coefficients. + + + +Sure enough all samples in the subset are matched exactly. But the others are way off the mark. +We've added a lot of high frequency content, and are obviously overfitting. + +### (f) + +{:.question} +The preceding minimization is under-constrained; it becomes well-posed if a norm of the DCT +coefficients is minimized subject to a constraint of agreeing with the sampled points. One of the +simplest (but not best [Gershenfeld, 1999]) ways to do this is by adding a penalty term to the +minimization. Repeat the gradient descent minimization using the L2 norm: + +$$ +\min_{\{f^\prime_i\}} \sum_{k = 0}^{M - 1} +\left( t^\prime_k - \sum_{j = 0}^{N - 1} D_{ij} f^\prime_i \right)^2 ++ \sum_{i = 0}^{N - 1} f^{\prime 2}_i +$$ + +{:.question} +and plot the resulting estimated coefficients. + +With L2 regularization, we remove some of the high frequency content. This makes the real peaks a +little more prominent. + + + +However it comes at a cost: gradient descent no longer drive the loss to zero. As such the loss +itself isn't a good termination condition. In its place I terminate when the squared norm of the +gradient is less than $$\num{1e-6}$$. The final loss for the coefficients in the plot above is +around 50. + +You can easily see that the loss is nonzero from the reconstructed samples. + + + +### (g) + +{:.question} +Repeat the gradient descent minimization using the L1 norm: + +$$ +\min_{\{f^\prime_i\}} \sum_{k = 0}^{M - 1} +\left( t^\prime_k - \sum_{j = 0}^{N - 1} D_{ij} f^\prime_i \right)^2 ++ \sum_{i = 0}^{N - 1} \vert f^{\prime}_i \vert +$$ + +{:.question} +Plot the resulting estimated coefficients, compare to the L2 norm estimate, and compare the +dependence of the results on M to the Nyquist sampling limit of twice the highest frequency. + +With L1 regularization the DCT coefficients are recovered pretty well. There is no added high +frequency noise. + + + +It still can't drive the loss to zero. Additionally it's hard to drive the squared norm of the +gradient to zero, since the gradient of the absolute values shows up as 1 or -1. (Though to help +prevent oscillation I actually drop this contribution if the absolute value of the coefficient in +question is less than $$\num{1e-3}$$.) So here I terminate when the relative change in the loss +falls below $$\num{1e-9}$$. I also decay the learning rate during optimization. It starts at 0.1 and +is multiplied by 0.99 every 64 iterations. + +The final loss is around 40, so better than we found with L2 regularization. However it did take +longer to converge: this version stopped after 21,060 iterations, as opposed to 44 (for L2) or 42 +(for unregularized). If I stop it after 50 samples it's a bit worse than the L2 version (loss of 55 +instead of 50). It's not until roughly 2500 iterations that it's unequivocally pulled ahead. I +played with learning rates and decay schedules a bit, but there might be more room for improvement. + +The recovered samples are also much more visually recognizable. The amplitude of our waveform seems +overall a bit diminished, but unlike our previous attempts it looks similar to the original. + + + +This technique can recover the signal substantially below the Nyquist limit. The highest frequency +signal is 1209 Hz, so with traditional techniques we'd have to sample at 2418 Hz or faster to avoid +artifacts. Since I'm only plotting over one hundreth of a second, I thus need at least 242 samples. +So my original 250 is (not coicidentally) near here. But even with a subset of only 50 samples, the +L1 regularized gradient descent does an admirable job at recovering the DCT coefficients and +samples: + + + diff --git a/_sass/main.scss b/_sass/main.scss index 504e66300de0fda0793e34104310bce0dc6dc471..0dc99a8e1f09154553fa02853567d020a832cb2d 100644 --- a/_sass/main.scss +++ b/_sass/main.scss @@ -46,3 +46,7 @@ table, th, td { th, td { padding: 5px 10px; } + +img { + width: 100%; +} diff --git a/assets/img/notes_ft_examples_1.jpg b/assets/img/notes_ft_examples_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..616909573b09b55ad770b0a1503af8c7bb0f4825 Binary files /dev/null and b/assets/img/notes_ft_examples_1.jpg differ diff --git a/assets/img/notes_ft_examples_2.jpg b/assets/img/notes_ft_examples_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b74ef8cf7cc13a0f16a9039332cc27391bc898f3 Binary files /dev/null and b/assets/img/notes_ft_examples_2.jpg differ diff --git a/assets/img/notes_ft_examples_3.jpg b/assets/img/notes_ft_examples_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa2662ec4f95abee1355ac98fdfda41634ba6bd4 Binary files /dev/null and b/assets/img/notes_ft_examples_3.jpg differ diff --git a/assets/img/project_3d_print.jpg b/assets/img/project_3d_print.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f5cae2e7e898736e3221100ec1d480a964b44b4 Binary files /dev/null and b/assets/img/project_3d_print.jpg differ diff --git a/assets/img/project_3d_print_reconstruction.jpg b/assets/img/project_3d_print_reconstruction.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f63cb2779c9a5716cffbe713281ea3fa9644994a Binary files /dev/null and b/assets/img/project_3d_print_reconstruction.jpg differ diff --git a/assets/img/project_brain.png b/assets/img/project_brain.png new file mode 100644 index 0000000000000000000000000000000000000000..59eb3c3e87e7e77150e248f7de3f31ee488638ac Binary files /dev/null and b/assets/img/project_brain.png differ diff --git a/assets/img/project_cool_1.png b/assets/img/project_cool_1.png new file mode 100644 index 0000000000000000000000000000000000000000..87b7c7e79f84469ecee36a650fa653c59f9d1d82 Binary files /dev/null and b/assets/img/project_cool_1.png differ diff --git a/assets/img/project_cool_2.png b/assets/img/project_cool_2.png new file mode 100644 index 0000000000000000000000000000000000000000..335b7627d3db77a5461784b04917c715571b3fea Binary files /dev/null and b/assets/img/project_cool_2.png differ diff --git a/assets/img/project_cool_3.png b/assets/img/project_cool_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c6c4d7a37daf7f76539987d934e04953bf793468 Binary files /dev/null and b/assets/img/project_cool_3.png differ diff --git a/assets/img/project_cool_4.png b/assets/img/project_cool_4.png new file mode 100644 index 0000000000000000000000000000000000000000..103c646b5768dff20da12808feeb49adec204fcd Binary files /dev/null and b/assets/img/project_cool_4.png differ diff --git a/assets/img/project_fbp_reconstruction.png b/assets/img/project_fbp_reconstruction.png new file mode 100644 index 0000000000000000000000000000000000000000..d444e9f0a2d89243030a803ea5ff91cd55b3bbfe Binary files /dev/null and b/assets/img/project_fbp_reconstruction.png differ diff --git a/assets/img/project_fourier_reconstruction.png b/assets/img/project_fourier_reconstruction.png new file mode 100644 index 0000000000000000000000000000000000000000..059d29c5b63cbce3f8f8b768d7320d7f5d45f07d Binary files /dev/null and b/assets/img/project_fourier_reconstruction.png differ diff --git a/assets/img/project_matrix_dft_im.png b/assets/img/project_matrix_dft_im.png new file mode 100644 index 0000000000000000000000000000000000000000..af5034f54d07b2fafdbf9a3fe5002c2c37518b37 Binary files /dev/null and b/assets/img/project_matrix_dft_im.png differ diff --git a/assets/img/project_matrix_dft_re.png b/assets/img/project_matrix_dft_re.png new file mode 100644 index 0000000000000000000000000000000000000000..ed86e8e69dba31cd49e76aa0249f12aa5a0c5b2e Binary files /dev/null and b/assets/img/project_matrix_dft_re.png differ diff --git a/assets/img/project_matrix_polar_im.png b/assets/img/project_matrix_polar_im.png new file mode 100644 index 0000000000000000000000000000000000000000..0c414fdc8bb3dfd6cf08d2367fa7655ea8d02fc1 Binary files /dev/null and b/assets/img/project_matrix_polar_im.png differ diff --git a/assets/img/project_matrix_polar_re.png b/assets/img/project_matrix_polar_re.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0df4ee39bd79bb743c9f3e4040d22beaee1e37 Binary files /dev/null and b/assets/img/project_matrix_polar_re.png differ diff --git a/assets/img/project_matrix_sinogram.png b/assets/img/project_matrix_sinogram.png new file mode 100644 index 0000000000000000000000000000000000000000..99e6f2783cae54a063db65b94d56f8816145b7f6 Binary files /dev/null and b/assets/img/project_matrix_sinogram.png differ diff --git a/assets/img/project_sinogram.png b/assets/img/project_sinogram.png new file mode 100644 index 0000000000000000000000000000000000000000..906b7c28f3ca9e29c4e9346039bca951e7dff82c Binary files /dev/null and b/assets/img/project_sinogram.png differ diff --git a/assets/img/project_tiny_brain.png b/assets/img/project_tiny_brain.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf2e9a230271c2a29e37f556201c5bbac1b2bf5 Binary files /dev/null and b/assets/img/project_tiny_brain.png differ diff --git a/assets/img/project_transform_im.png b/assets/img/project_transform_im.png new file mode 100644 index 0000000000000000000000000000000000000000..f4dfd5da216d46f229bdfdb76be231a500e9b9ef Binary files /dev/null and b/assets/img/project_transform_im.png differ diff --git a/assets/img/project_transform_re.png b/assets/img/project_transform_re.png new file mode 100644 index 0000000000000000000000000000000000000000..0c342169e4dfc7be4505e9ccfce4d320a00d280e Binary files /dev/null and b/assets/img/project_transform_re.png differ diff --git a/assets/img/project_transform_swapped_im.png b/assets/img/project_transform_swapped_im.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ceb4bf439e1f142a9d3c70d5b9db743cc70172 Binary files /dev/null and b/assets/img/project_transform_swapped_im.png differ diff --git a/assets/img/project_transform_swapped_re.png b/assets/img/project_transform_swapped_re.png new file mode 100644 index 0000000000000000000000000000000000000000..912edca951bfb541519250f54f755dedba8dbcd2 Binary files /dev/null and b/assets/img/project_transform_swapped_re.png differ diff --git a/assets/img/pset10_1.jpg b/assets/img/pset10_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f699efe7f5fb220a0f26442bc7282a86fef397d3 Binary files /dev/null and b/assets/img/pset10_1.jpg differ diff --git a/assets/img/pset10_2.jpg b/assets/img/pset10_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5874f6bf9be1fcf63c4ccd507ce2b91ecd18e512 Binary files /dev/null and b/assets/img/pset10_2.jpg differ diff --git a/assets/img/pset11_im_full.jpg b/assets/img/pset11_im_full.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dbbb893241a92bee71ab0cedd9f8edfc850eb434 Binary files /dev/null and b/assets/img/pset11_im_full.jpg differ diff --git a/assets/img/pset11_im_zoom.jpg b/assets/img/pset11_im_zoom.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8fb821716faa778ff9435230646647de006d6970 Binary files /dev/null and b/assets/img/pset11_im_zoom.jpg differ diff --git a/assets/img/pset11_phase_full.jpg b/assets/img/pset11_phase_full.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74604b027c2e43bd53efa98927d2678826c8f17e Binary files /dev/null and b/assets/img/pset11_phase_full.jpg differ diff --git a/assets/img/pset11_phase_zoom.jpg b/assets/img/pset11_phase_zoom.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72c975a5011a6c452c040f037b6fe93082ae95dc Binary files /dev/null and b/assets/img/pset11_phase_zoom.jpg differ diff --git a/assets/img/pset11_re_full.jpg b/assets/img/pset11_re_full.jpg new file mode 100644 index 0000000000000000000000000000000000000000..305d9874a8a3afce63f74e5d63d5ca094d22e6cf Binary files /dev/null and b/assets/img/pset11_re_full.jpg differ diff --git a/assets/img/pset11_re_zoom.jpg b/assets/img/pset11_re_zoom.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39eec70c0d5d3dcd256c2ee80a13b842d34c592e Binary files /dev/null and b/assets/img/pset11_re_zoom.jpg differ diff --git a/assets/img/pset12_differential_amplifier.svg b/assets/img/pset12_differential_amplifier.svg new file mode 100644 index 0000000000000000000000000000000000000000..b03ca074015a179e2159217731d70c261397493e --- /dev/null +++ b/assets/img/pset12_differential_amplifier.svg @@ -0,0 +1,705 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="200" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="Op-Amp Differential Amplifier.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective5533" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2827" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6195" /> + <inkscape:perspective + id="perspective6211" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3053" + inkscape:persp3d-origin="45 : 6.6666667 : 1" + inkscape:vp_z="90 : 10 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 10 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3840" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7019" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4148" /> + <inkscape:perspective + id="perspective4175" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6151" /> + <inkscape:perspective + id="perspective6168" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7294" /> + <inkscape:perspective + id="perspective7292" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective2806" /> + <inkscape:perspective + id="perspective2819" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7782" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7851" /> + <inkscape:perspective + id="perspective7849" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7935" /> + <inkscape:perspective + id="perspective7933" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3195" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3275" + inkscape:persp3d-origin="50 : 33.333333 : 1" + inkscape:vp_z="100 : 50 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 50 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3806" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3941" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4211" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4402" /> + <inkscape:perspective + id="perspective4400" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4254" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4142136" + inkscape:cx="40.007247" + inkscape:cy="80.947031" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1399" + inkscape:window-height="874" + inkscape:window-x="33" + inkscape:window-y="0" + showguides="true" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2650" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-8.985975,83.359375)"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" + x="145.02725" + y="-83.148415" + id="text6075" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan6077" + x="145.02725" + y="-83.148415" /></text> + <path + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7055" + sodipodi:nodetypes="cc" + d="" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7059" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(33.98065,-85.859375)" /> + <g + transform="translate(13.48065,-135.72186)" + id="g7474" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4873" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3529" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(259.33597,-50.859375)" /> + <g + transform="translate(182.10835,101.52969)" + id="g4139"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-165.1279" + y="-74.889069" + id="text4141" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4143" + x="-165.1279" + y="-74.889069">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4145" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-155" + y="-69" + id="text4147" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4149" + x="-155" + y="-69">2 </tspan></text> + </g> + <g + transform="translate(-182.91159,34.527519)" + id="g4151"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="199.89223" + y="-52.886894" + id="text4153" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4155" + x="199.89223" + y="-52.886894">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4157" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="208.52013" + y="-46.997822" + id="text4159" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4161" + x="208.52013" + y="-46.997822">1</tspan></text> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 43.98065,-23.359375 L 68.980645,-23.359375" + id="path4262" /> + <g + transform="translate(152.57221,-29.761656)" + id="g3808" + inkscape:label="Layer 1"> + <path + id="path3810" + d="M 22.90842,16.402281 L 22.90842,67.107856 L 72.04592,41.755066 L 22.90842,16.402281 z" + style="fill:#e1f0f0;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="46.77729" + x="30.408421" + height="10" + width="2" + id="rect4468" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="50.77729" + height="10" + width="2" + id="rect4470" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="30.777281" + height="10" + width="2" + id="rect4472" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4266" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(33.980475,-40.859375)" /> + <g + transform="translate(13.167975,-90.721865)" + id="g4268" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4270" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 43.980475,21.640625 L 68.98047,21.640625" + id="path4272" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 111.37475,21.640625 L 173.30332,21.640625" + id="path4274" + sodipodi:nodetypes="cc" /> + <g + transform="translate(123.16813,-160.72186)" + id="g4276" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4278" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 179.23064,-48.359375 L 148.98064,-48.359375 L 148.98064,1.640625 L 173.98064,1.640625" + id="path4280" + sodipodi:nodetypes="cccc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 148.98064,-23.359375 L 112.98064,-23.359375" + id="path4282" + sodipodi:nodetypes="cc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 223.63257,11.640625 L 264.07125,11.640625" + id="path4284" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 221.48064,-48.359375 L 248.98064,-48.359375 L 248.98064,11.640625" + id="path4286" + sodipodi:nodetypes="ccc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4288" + sodipodi:nodetypes="cc" /> + <g + transform="matrix(0,-1,1,0,36.618295,142.56032)" + id="g4290" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4292" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <g + inkscape:label="Layer 1" + id="g4404" + transform="translate(113.98046,55.640625)"> + <path + sodipodi:nodetypes="cc" + id="path9220" + d="M 35,47 L 35,29" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" /> + <rect + y="46" + x="23" + height="3" + width="24" + id="rect4702" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4704" + width="18" + height="3" + x="26" + y="51" /> + <rect + y="56" + x="29" + height="3" + width="12" + id="rect4719" + style="fill:#000000;fill-opacity:1;stroke:none" /> + </g> + <g + transform="translate(438.08597,90.64063)" + id="g4410"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-165.1279" + y="-74.889069" + id="text4412" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4414" + x="-165.1279" + y="-74.889069">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4416" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-155" + y="-69" + id="text4418" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4420" + x="-155" + y="-69">out</tspan></text> + </g> + <g + id="g4422" + transform="translate(-161.37746,-130)"> + <text + sodipodi:linespacing="125%" + id="text4424" + y="61.640625" + x="355.35809" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="61.640625" + x="355.35809" + id="tspan4426" + sodipodi:role="line">R</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4428" + y="67.529701" + x="369.73599" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="67.529701" + x="369.73599" + id="tspan4430" + sodipodi:role="line">f</tspan></text> + </g> + <g + id="g4432" + transform="translate(-191.37764,8)"> + <text + sodipodi:linespacing="125%" + id="text4434" + y="61.640625" + x="355.35809" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="61.640625" + x="355.35809" + id="tspan4436" + sodipodi:role="line">R</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4438" + y="67.529701" + x="368.23599" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="67.529701" + x="368.23599" + id="tspan4440" + sodipodi:role="line">g</tspan></text> + </g> + <g + id="g4442" + transform="translate(-274.37764,-10)"> + <text + sodipodi:linespacing="125%" + id="text4444" + y="61.640625" + x="355.35809" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="61.640625" + x="355.35809" + id="tspan4446" + sodipodi:role="line">R</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4448" + y="67.529701" + x="368.48599" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="67.529701" + x="368.48599" + id="tspan4450" + sodipodi:role="line">2</tspan></text> + </g> + <g + id="g4452" + transform="translate(-274.25536,-105.88908)"> + <text + sodipodi:linespacing="125%" + id="text4454" + y="61.640625" + x="355.35809" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="61.640625" + x="355.35809" + id="tspan4456" + sodipodi:role="line">R</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4458" + y="67.529701" + x="368.48599" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="67.529701" + x="368.48599" + id="tspan4460" + sodipodi:role="line">1</tspan></text> + </g> + <g + inkscape:label="Layer 1" + id="g4530" + transform="translate(141.48063,-37.859376)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g10127"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4260" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <g + inkscape:label="Layer 1" + id="g4534" + transform="translate(141.48045,7.140624)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g4536"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4538" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <g + inkscape:label="Layer 1" + id="g4540" + transform="translate(241.48064,-2.859376)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g4542"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4544" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <path + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 148.9858,44.140625 L 148.9858,21.640625" + id="path4863" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/assets/img/pset12_differentiator.svg b/assets/img/pset12_differentiator.svg new file mode 100644 index 0000000000000000000000000000000000000000..146c3c1e6c0b0cae50d468c2f6e77afd0e124840 --- /dev/null +++ b/assets/img/pset12_differentiator.svg @@ -0,0 +1,556 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="150" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="Op-Amp Differentiating Amplifier.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective5533" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2827" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6195" /> + <inkscape:perspective + id="perspective6211" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3053" + inkscape:persp3d-origin="45 : 6.6666667 : 1" + inkscape:vp_z="90 : 10 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 10 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3840" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7019" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4148" /> + <inkscape:perspective + id="perspective4175" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6151" /> + <inkscape:perspective + id="perspective6168" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7294" /> + <inkscape:perspective + id="perspective7292" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective2806" /> + <inkscape:perspective + id="perspective2819" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7782" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7851" /> + <inkscape:perspective + id="perspective7849" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7935" /> + <inkscape:perspective + id="perspective7933" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3195" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3275" + inkscape:persp3d-origin="50 : 33.333333 : 1" + inkscape:vp_z="100 : 50 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 50 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3806" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3941" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4211" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4402" /> + <inkscape:perspective + id="perspective4400" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4254" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5779" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="91.521475" + inkscape:cy="14.518021" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1399" + inkscape:window-height="874" + inkscape:window-x="33" + inkscape:window-y="0" + showguides="true" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2650" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-8.985975,83.359375)"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" + x="145.02725" + y="-83.148415" + id="text6075" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan6077" + x="145.02725" + y="-83.148415" /></text> + <path + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7055" + sodipodi:nodetypes="cc" + d="" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7059" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(34.156205,-69.85907)" /> + <g + transform="translate(126.04847,-169.72186)" + id="g7474" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4873" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3529" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(259.33597,-59.859375)" /> + <g + transform="translate(-186.73603,50.52782)" + id="g4151"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="199.89223" + y="-52.886894" + id="text4153" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4155" + x="199.89223" + y="-52.886894">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4157" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="209.27013" + y="-46.997822" + id="text4159" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4161" + x="209.27013" + y="-46.997822">in</tspan></text> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.156205,-7.35907 L 84.735975,-7.359375" + id="path4262" + sodipodi:nodetypes="cc" /> + <g + transform="translate(152.57221,-38.761656)" + id="g3808" + inkscape:label="Layer 1"> + <path + id="path3810" + d="M 22.90842,16.402281 L 22.90842,67.107856 L 72.04592,41.755066 L 22.90842,16.402281 z" + style="fill:#e1f0f0;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="46.77729" + x="30.408421" + height="10" + width="2" + id="rect4468" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="50.77729" + height="10" + width="2" + id="rect4470" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="30.777281" + height="10" + width="2" + id="rect4472" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 182.98597,-57.359375 L 148.98064,-57.359375 L 148.98064,-7.35938 L 173.98064,-7.35938" + id="path4280" + sodipodi:nodetypes="cccc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 149.15619,-7.35907 L 98.235975,-7.359375" + id="path4282" + sodipodi:nodetypes="cc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 223.63257,2.64062 L 264.07125,2.64062" + id="path4284" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 223.98597,-57.359375 L 248.98064,-57.359375 L 248.98064,2.64062" + id="path4286" + sodipodi:nodetypes="ccc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4288" + sodipodi:nodetypes="cc" + d="" /> + <path + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 148.98597,50.64062 L 148.98597,12.64062 L 173.98597,12.64062" + id="path9220" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4702" + width="24" + height="3" + x="136.98598" + y="49.640617" /> + <rect + y="54.640617" + x="139.98598" + height="3" + width="18" + id="rect4704" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4719" + width="12" + height="3" + x="142.98598" + y="59.640617" /> + <g + transform="translate(438.08597,81.64063)" + id="g4410"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-165.1279" + y="-74.889069" + id="text4412" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4414" + x="-165.1279" + y="-74.889069">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4416" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-155" + y="-69" + id="text4418" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4420" + x="-155" + y="-69">out</tspan></text> + </g> + <g + id="g4442" + transform="translate(-274.50002,-135.88908)" /> + <g + id="g5691" + transform="translate(0.5,-7)"> + <text + sodipodi:linespacing="125%" + id="text4454" + y="-22.859375" + x="83.985977" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-22.859375" + x="83.985977" + id="tspan4456" + sodipodi:role="line">C</tspan></text> + </g> + <g + inkscape:label="Layer 1" + id="g4530" + transform="translate(141.65618,-21.859071)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g10127"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4260" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <g + inkscape:label="Layer 1" + id="g4540" + transform="translate(241.48064,-11.859376)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g4542"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4544" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <g + inkscape:label="Layer 1" + id="g5781" + transform="matrix(0,1,-1,0,120.98597,-37.359375)"> + <rect + y="23" + x="13" + height="4" + width="34" + id="rect2838" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="33" + x="13" + height="4" + width="34" + id="rect2840" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g5785" + transform="translate(128.48495,-62.55019)"> + <text + sodipodi:linespacing="125%" + id="text5787" + y="-6.309185" + x="68.751022" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-6.309185" + x="68.751022" + id="tspan5789" + sodipodi:role="line">R</tspan></text> + </g> + </g> +</svg> diff --git a/assets/img/pset12_fig_a.png b/assets/img/pset12_fig_a.png new file mode 100644 index 0000000000000000000000000000000000000000..9a732c8a7b3f6de4fbab9a098287dcb545387981 Binary files /dev/null and b/assets/img/pset12_fig_a.png differ diff --git a/assets/img/pset12_fig_b.png b/assets/img/pset12_fig_b.png new file mode 100644 index 0000000000000000000000000000000000000000..430727e7d8177f5c35a65cfe70009534735ef275 Binary files /dev/null and b/assets/img/pset12_fig_b.png differ diff --git a/assets/img/pset12_fig_c.png b/assets/img/pset12_fig_c.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab51bbe4e1070fe56621106e7e0f145dbcc6a9b Binary files /dev/null and b/assets/img/pset12_fig_c.png differ diff --git a/assets/img/pset12_fig_d.png b/assets/img/pset12_fig_d.png new file mode 100644 index 0000000000000000000000000000000000000000..ef37320e97e761f81c2cc1c38a660ad4fc1bd3f7 Binary files /dev/null and b/assets/img/pset12_fig_d.png differ diff --git a/assets/img/pset12_fig_e.png b/assets/img/pset12_fig_e.png new file mode 100644 index 0000000000000000000000000000000000000000..a7d0e4ed9ab67096d407361efb1bd782ed630ff6 Binary files /dev/null and b/assets/img/pset12_fig_e.png differ diff --git a/assets/img/pset12_fig_e_2.png b/assets/img/pset12_fig_e_2.png new file mode 100644 index 0000000000000000000000000000000000000000..af87ba881cc9e14be2ab36ae3962dd0cb2ec28b4 Binary files /dev/null and b/assets/img/pset12_fig_e_2.png differ diff --git a/assets/img/pset12_fig_f.png b/assets/img/pset12_fig_f.png new file mode 100644 index 0000000000000000000000000000000000000000..b8abd0990175f5242c669c4005ab6bc57ef33f01 Binary files /dev/null and b/assets/img/pset12_fig_f.png differ diff --git a/assets/img/pset12_fig_f_2.png b/assets/img/pset12_fig_f_2.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8f7854097ebf4c741d926c80045c205f7ee9cb Binary files /dev/null and b/assets/img/pset12_fig_f_2.png differ diff --git a/assets/img/pset12_fig_g.png b/assets/img/pset12_fig_g.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff1a21f6ec7d278180fca9f0293643e82993063 Binary files /dev/null and b/assets/img/pset12_fig_g.png differ diff --git a/assets/img/pset12_fig_g_2.png b/assets/img/pset12_fig_g_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc73ce49fafeb8338bc0d3a58bdbb8942a1b789 Binary files /dev/null and b/assets/img/pset12_fig_g_2.png differ diff --git a/assets/img/pset12_fig_g_3.png b/assets/img/pset12_fig_g_3.png new file mode 100644 index 0000000000000000000000000000000000000000..15e35844d56bcdaa22258fb5c9076589b0f8e644 Binary files /dev/null and b/assets/img/pset12_fig_g_3.png differ diff --git a/assets/img/pset12_fig_g_4.png b/assets/img/pset12_fig_g_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3e94e446a2771d1c89f27426358ace0cd89b65ac Binary files /dev/null and b/assets/img/pset12_fig_g_4.png differ diff --git a/assets/img/pset12_integrator.svg b/assets/img/pset12_integrator.svg new file mode 100644 index 0000000000000000000000000000000000000000..91d256a29c397cca37c94fa6621def322d997223 --- /dev/null +++ b/assets/img/pset12_integrator.svg @@ -0,0 +1,555 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="150" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="Op-Amp Integrating Amplifier.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective5533" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2827" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6195" /> + <inkscape:perspective + id="perspective6211" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3053" + inkscape:persp3d-origin="45 : 6.6666667 : 1" + inkscape:vp_z="90 : 10 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 10 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3840" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7019" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4148" /> + <inkscape:perspective + id="perspective4175" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6151" /> + <inkscape:perspective + id="perspective6168" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7294" /> + <inkscape:perspective + id="perspective7292" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective2806" /> + <inkscape:perspective + id="perspective2819" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7782" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7851" /> + <inkscape:perspective + id="perspective7849" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7935" /> + <inkscape:perspective + id="perspective7933" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3195" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3275" + inkscape:persp3d-origin="50 : 33.333333 : 1" + inkscape:vp_z="100 : 50 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 50 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3806" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3941" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4211" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4402" /> + <inkscape:perspective + id="perspective4400" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4254" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5779" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="66.286591" + inkscape:cy="148.93023" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1399" + inkscape:window-height="874" + inkscape:window-x="33" + inkscape:window-y="0" + showguides="true" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2650" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-8.985975,83.359375)"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" + x="145.02725" + y="-83.148415" + id="text6075" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan6077" + x="145.02725" + y="-83.148415" /></text> + <path + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7055" + sodipodi:nodetypes="cc" + d="" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7059" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(34.156205,-70.85907)" /> + <g + transform="translate(13.656205,-120.72155)" + id="g7474" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4873" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3529" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(259.33597,-60.859375)" /> + <g + transform="translate(-186.73603,49.52782)" + id="g4151"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="199.89223" + y="-52.886894" + id="text4153" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4155" + x="199.89223" + y="-52.886894">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4157" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="209.27013" + y="-46.997822" + id="text4159" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4161" + x="209.27013" + y="-46.997822">in</tspan></text> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.156205,-8.35907 L 69.1562,-8.35907" + id="path4262" /> + <g + transform="translate(152.57221,-39.761656)" + id="g3808" + inkscape:label="Layer 1"> + <path + id="path3810" + d="M 22.90842,16.402281 L 22.90842,67.107856 L 72.04592,41.755066 L 22.90842,16.402281 z" + style="fill:#e1f0f0;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="46.77729" + x="30.408421" + height="10" + width="2" + id="rect4468" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="50.77729" + height="10" + width="2" + id="rect4470" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="30.777281" + height="10" + width="2" + id="rect4472" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 194.98597,-58.359375 L 148.98064,-58.359375 L 148.98064,-8.35938 L 173.98064,-8.35938" + id="path4280" + sodipodi:nodetypes="cccc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 149.15619,-8.35907 L 113.15619,-8.35907" + id="path4282" + sodipodi:nodetypes="cc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 223.63257,1.64062 L 264.07125,1.64062" + id="path4284" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 207.98597,-58.359375 L 248.98064,-58.359375 L 248.98064,1.64062" + id="path4286" + sodipodi:nodetypes="ccc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4288" + sodipodi:nodetypes="cc" + d="" /> + <path + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 148.98597,49.64062 L 148.98597,11.64062 L 173.98597,11.64062" + id="path9220" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4702" + width="24" + height="3" + x="136.98598" + y="48.640617" /> + <rect + y="53.640617" + x="139.98598" + height="3" + width="18" + id="rect4704" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4719" + width="12" + height="3" + x="142.98598" + y="58.640617" /> + <g + transform="translate(438.08597,80.64063)" + id="g4410"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-165.1279" + y="-74.889069" + id="text4412" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4414" + x="-165.1279" + y="-74.889069">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4416" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-155" + y="-69" + id="text4418" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4420" + x="-155" + y="-69">out</tspan></text> + </g> + <g + id="g4442" + transform="translate(-274.50002,-135.88908)" /> + <g + id="g5691" + transform="translate(0,-8)"> + <text + sodipodi:linespacing="125%" + id="text4454" + y="-19.24815" + x="85.690483" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-19.24815" + x="85.690483" + id="tspan4456" + sodipodi:role="line">R</tspan></text> + </g> + <g + inkscape:label="Layer 1" + id="g4530" + transform="translate(141.65618,-22.859071)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g10127"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4260" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <g + inkscape:label="Layer 1" + id="g4540" + transform="translate(241.48064,-12.859376)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g4542"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4544" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <g + inkscape:label="Layer 1" + id="g5781" + transform="matrix(0,1,-1,0,231.98597,-88.359375)"> + <rect + y="23" + x="13" + height="4" + width="34" + id="rect2838" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="33" + x="13" + height="4" + width="34" + id="rect2840" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g5785" + transform="translate(128.48495,-63.55019)"> + <text + sodipodi:linespacing="125%" + id="text5787" + y="-4.809185" + x="85.501022" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-4.809185" + x="85.501022" + id="tspan5789" + sodipodi:role="line">C</tspan></text> + </g> + </g> +</svg> diff --git a/assets/img/pset12_non-inverting_amplifier.svg b/assets/img/pset12_non-inverting_amplifier.svg new file mode 100644 index 0000000000000000000000000000000000000000..0fbe3245523c25183bd80afb57a8a1ec2741287d --- /dev/null +++ b/assets/img/pset12_non-inverting_amplifier.svg @@ -0,0 +1,566 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="125" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="Op-Amp Non-Inverting Amplifier.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective5533" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2827" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6195" /> + <inkscape:perspective + id="perspective6211" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3053" + inkscape:persp3d-origin="45 : 6.6666667 : 1" + inkscape:vp_z="90 : 10 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 10 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3840" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7019" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4148" /> + <inkscape:perspective + id="perspective4175" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6151" /> + <inkscape:perspective + id="perspective6168" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7294" /> + <inkscape:perspective + id="perspective7292" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective2806" /> + <inkscape:perspective + id="perspective2819" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7782" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7851" /> + <inkscape:perspective + id="perspective7849" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7935" /> + <inkscape:perspective + id="perspective7933" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3195" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3275" + inkscape:persp3d-origin="50 : 33.333333 : 1" + inkscape:vp_z="100 : 50 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 50 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3806" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3941" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4211" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4402" /> + <inkscape:perspective + id="perspective4400" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4254" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="94.382011" + inkscape:cy="-5.1336545" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1399" + inkscape:window-height="874" + inkscape:window-x="33" + inkscape:window-y="0" + showguides="true" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2650" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-8.985975,83.359375)"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" + x="144.88225" + y="-83.359375" + id="text6075" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan6077" + x="144.88225" + y="-83.359375" /></text> + <path + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7055" + sodipodi:nodetypes="cc" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7059" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(103.98597,-120.85938)" /> + <g + transform="translate(7.548475,-110.72186)" + id="g7474" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4873" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3529" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(254.23597,-110.85938)" /> + <g + transform="translate(-117.39156,-0.4724908)" + id="g4151"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="199.89223" + y="-52.886894" + id="text4153" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4155" + x="199.89223" + y="-52.886894">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4157" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="209.77013" + y="-46.997822" + id="text4159" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4161" + x="209.77013" + y="-46.997822">in</tspan></text> + </g> + <g + transform="matrix(1,0,0,-1,147.47221,-6.2515248)" + id="g3808" + inkscape:label="Layer 1"> + <path + id="path3810" + d="M 22.90842,16.402281 L 22.90842,67.107856 L 72.04592,41.755066 L 22.90842,16.402281 z" + style="fill:#e1f0f0;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="46.77729" + x="30.408421" + height="10" + width="2" + id="rect4468" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="50.77729" + height="10" + width="2" + id="rect4470" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="30.777281" + height="10" + width="2" + id="rect4472" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + transform="translate(110.16223,-110.78382)" + id="g4276" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4278" + d="M 58.046325,111.42444 L 54.886245,111.42444 L 58.823745,122.42444 L 61.636245,122.42444 L 67.104995,107.27575 L 72.573745,122.42475 L 75.386245,122.42475 L 80.854995,107.27575 L 86.323745,122.42475 L 89.136245,122.42475 L 94.604995,107.27575 L 96.805945,113.42444 L 99.966015,113.42444 L 96.011245,102.42475 L 93.198745,102.42475 L 87.729995,117.57376 L 82.261245,102.42475 L 79.448745,102.42475 L 73.979995,117.57376 L 68.511245,102.42475 L 65.698745,102.42475 L 60.229995,117.57376 L 58.046325,111.42444 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 169.88097,-58.35938 L 113.98597,-58.359375" + id="path4282" + sodipodi:nodetypes="cc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 218.53258,-48.35938 L 258.97125,-48.35938" + id="path4284" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 208.98597,1.640625 L 243.98597,1.640625 L 243.98597,-48.359375" + id="path4286" + sodipodi:nodetypes="ccc" /> + <g + inkscape:label="Layer 1" + id="g4404" + transform="translate(3.985975,2.4296646)"> + <path + sodipodi:nodetypes="ccc" + id="path9220" + d="M 35.000005,22.25 L 35,-0.7890396 L 60,-0.7890396" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" /> + <rect + y="21" + x="23" + height="3" + width="24" + id="rect4702" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4704" + width="18" + height="3" + x="26" + y="26" /> + <rect + y="31" + x="29" + height="3" + width="12" + id="rect4719" + style="fill:#000000;fill-opacity:1;stroke:none" /> + </g> + <g + transform="translate(432.98597,30.640625)" + id="g4410"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-165.1279" + y="-74.889069" + id="text4412" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4414" + x="-165.1279" + y="-74.889069">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4416" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-155" + y="-69" + id="text4418" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4420" + x="-155" + y="-69">out</tspan></text> + </g> + <g + id="g4452" + transform="translate(-277.85502,-31.100036)"> + <text + sodipodi:linespacing="125%" + id="text4454" + y="61.640625" + x="355.35809" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="61.640625" + x="355.35809" + id="tspan4456" + sodipodi:role="line">R</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4458" + y="67.529701" + x="368.48599" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="67.529701" + x="368.48599" + id="tspan4460" + sodipodi:role="line">1</tspan></text> + </g> + <g + inkscape:label="Layer 1" + id="g4530" + transform="translate(141.49096,-8.0703404)" /> + <g + inkscape:label="Layer 1" + id="g4534" + transform="translate(141.33563,16.929664)" /> + <g + inkscape:label="Layer 1" + id="g4540" + transform="translate(236.38064,-62.859381)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g4542"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4544" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 164.98597,1.640625 L 105.68473,1.640625" + id="path4865" + sodipodi:nodetypes="cc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 168.98597,-38.359375 L 133.98597,-38.359374 L 133.98597,1.640625" + id="path4867" + sodipodi:nodetypes="ccc" /> + <g + id="g4869" + transform="translate(-177.105,-31.100036)"> + <text + sodipodi:linespacing="125%" + id="text4871" + y="61.640625" + x="355.35809" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="61.640625" + x="355.35809" + id="tspan4873" + sodipodi:role="line">R</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4875" + y="67.529701" + x="368.48599" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="67.529701" + x="368.48599" + id="tspan4877" + sodipodi:role="line">2</tspan></text> + </g> + <g + inkscape:label="Layer 1" + id="g4879" + transform="translate(126.48597,-12.859376)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g4881"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4883" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + </g> +</svg> diff --git a/assets/img/pset12_summing_amplifier.svg b/assets/img/pset12_summing_amplifier.svg new file mode 100644 index 0000000000000000000000000000000000000000..aefc90478c67c629f8414b65388ffbfef3600909 --- /dev/null +++ b/assets/img/pset12_summing_amplifier.svg @@ -0,0 +1,813 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="300" + height="260" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="Op-Amp Summing Amplifier.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <inkscape:perspective + id="perspective5533" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective2827" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6195" /> + <inkscape:perspective + id="perspective6211" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3053" + inkscape:persp3d-origin="45 : 6.6666667 : 1" + inkscape:vp_z="90 : 10 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 10 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3840" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7019" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4148" /> + <inkscape:perspective + id="perspective4175" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective6151" /> + <inkscape:perspective + id="perspective6168" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7294" /> + <inkscape:perspective + id="perspective7292" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective2806" /> + <inkscape:perspective + id="perspective2819" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective7782" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7851" /> + <inkscape:perspective + id="perspective7849" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective7935" /> + <inkscape:perspective + id="perspective7933" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3195" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3275" + inkscape:persp3d-origin="50 : 33.333333 : 1" + inkscape:vp_z="100 : 50 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 50 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3806" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3941" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4211" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective4402" /> + <inkscape:perspective + id="perspective4400" + inkscape:persp3d-origin="32 : 21.333333 : 1" + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4254" + inkscape:persp3d-origin="16 : 10.666667 : 1" + inkscape:vp_z="32 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 16 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="168.93554" + inkscape:cy="69.261401" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1399" + inkscape:window-height="874" + inkscape:window-x="33" + inkscape:window-y="0" + showguides="true" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2650" + visible="true" + enabled="true" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-8.985975,83.359375)"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" + x="145.02725" + y="-83.148415" + id="text6075" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan6077" + x="145.02725" + y="-83.148415" /></text> + <path + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7055" + sodipodi:nodetypes="cc" + d="" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7059" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(34.156205,39.14093)" /> + <g + transform="translate(13.656205,-10.72155)" + id="g7474" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4873" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + sodipodi:type="arc" + style="opacity:1;fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3529" + sodipodi:cx="7.5" + sodipodi:cy="62.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + transform="translate(259.33597,49.140625)" /> + <g + transform="translate(-182.98603,159.52782)" + id="g4151"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="199.89223" + y="-52.886894" + id="text4153" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4155" + x="199.89223" + y="-52.886894">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4157" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="209.27013" + y="-46.997822" + id="text4159" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4161" + x="209.27013" + y="-46.997822">1</tspan></text> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.156205,101.64093 L 69.1562,101.64093" + id="path4262" /> + <g + transform="translate(152.57755,69.863335)" + id="g3808" + inkscape:label="Layer 1"> + <path + id="path3810" + d="M 22.90842,16.402281 L 22.90842,67.107856 L 72.04592,41.755066 L 22.90842,16.402281 z" + style="fill:#e1f0f0;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="46.77729" + x="30.408421" + height="10" + width="2" + id="rect4468" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="50.77729" + height="10" + width="2" + id="rect4470" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + transform="matrix(0,1,-1,0,0,0)" + y="-36.408421" + x="30.777281" + height="10" + width="2" + id="rect4472" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + transform="translate(123.16813,-60.72186)" + id="g4276" + inkscape:label="Layer 1"> + <path + sodipodi:nodetypes="ccccccccccccccccccccccc" + id="path4278" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 179.23064,51.640625 L 148.98064,51.640625 L 148.98064,101.64062 L 173.98064,101.64062" + id="path4280" + sodipodi:nodetypes="cccc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 149.15619,101.64093 L 113.15619,101.64093" + id="path4282" + sodipodi:nodetypes="cc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 223.63257,111.64062 L 264.07125,111.64062" + id="path4284" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 221.48064,51.640625 L 248.98064,51.640625 L 248.98064,111.64062" + id="path4286" + sodipodi:nodetypes="ccc" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4288" + sodipodi:nodetypes="cc" + d="" /> + <path + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 148.98597,159.64062 L 148.98597,121.64062 L 173.98597,121.64062" + id="path9220" + sodipodi:nodetypes="ccc" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4702" + width="24" + height="3" + x="136.98598" + y="158.64062" /> + <rect + y="163.64062" + x="139.98598" + height="3" + width="18" + id="rect4704" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4719" + width="12" + height="3" + x="142.98598" + y="168.64062" /> + <path + transform="translate(33.98598,-10.85938)" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="62.5" + sodipodi:cx="7.5" + id="path5559" + style="fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <g + inkscape:label="Layer 1" + id="g5561" + transform="translate(13.48598,-60.72186)"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + id="path5563" + sodipodi:nodetypes="ccccccccccccccccccccccc" /> + </g> + <g + id="g5565" + transform="translate(-182.75,109.37851)"> + <text + sodipodi:linespacing="125%" + id="text5567" + y="-52.886894" + x="199.89223" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-52.886894" + x="199.89223" + id="tspan5569" + sodipodi:role="line">V<tspan + id="tspan5571" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" /></tspan></text> + <text + sodipodi:linespacing="125%" + id="text5573" + y="-46.997822" + x="209.27013" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-46.997822" + x="209.27013" + id="tspan5575" + sodipodi:role="line">2</tspan></text> + </g> + <path + id="path5577" + d="M 43.98598,51.640625 L 68.985975,51.640625" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <g + transform="translate(-274.33843,-29.03809)" + id="g5579"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="355.35809" + y="61.640625" + id="text5581" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5583" + x="355.35809" + y="61.640625">R</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="368.48599" + y="67.529701" + id="text5585" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5587" + x="368.48599" + y="67.529701">2</tspan></text> + </g> + <path + transform="translate(33.98597,-60.85937)" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="62.5" + sodipodi:cx="7.5" + id="path5589" + style="fill:#888a85;fill-opacity:0.11764706;stroke:#888a85;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <g + inkscape:label="Layer 1" + id="g5591" + transform="translate(13.485967,-110.72186)" + style="fill:#888a85"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#888a85;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + id="path5593" + sodipodi:nodetypes="ccccccccccccccccccccccc" /> + </g> + <path + id="path5607" + d="M 43.985975,1.640625 L 68.98597,1.640625" + style="fill:#888a85;fill-opacity:1;stroke:#888a85;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + transform="translate(33.67348,-110.85938)" + d="M 10,62.5 A 2.5,2.5 0 1 1 5,62.5 A 2.5,2.5 0 1 1 10,62.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="62.5" + sodipodi:cx="7.5" + id="path5619" + style="fill:none;fill-opacity:0.11764706;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <g + inkscape:label="Layer 1" + id="g5621" + transform="translate(13.173475,-160.72186)"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + d="M 58.16008,111.36218 L 55,111.36218 L 58.9375,122.36218 L 61.75,122.36218 L 67.21875,107.21348 L 72.6875,122.36249 L 75.5,122.36249 L 80.96875,107.21348 L 86.4375,122.36249 L 89.25,122.36249 L 94.71875,107.21348 L 96.9197,113.36218 L 100.07977,113.36218 L 96.125,102.36249 L 93.3125,102.36249 L 87.84375,117.5115 L 82.375,102.36249 L 79.5625,102.36249 L 74.09375,117.5115 L 68.625,102.36249 L 65.8125,102.36249 L 60.34375,117.5115 L 58.16008,111.36218 z" + id="path5623" + sodipodi:nodetypes="ccccccccccccccccccccccc" /> + </g> + <g + id="g5625" + transform="translate(-182.90624,9.527515)"> + <text + sodipodi:linespacing="125%" + id="text5627" + y="-52.886894" + x="199.89223" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-52.886894" + x="199.89223" + id="tspan5629" + sodipodi:role="line">V<tspan + id="tspan5631" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" /></tspan></text> + <text + sodipodi:linespacing="125%" + id="text5633" + y="-46.997822" + x="209.27013" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-46.997822" + x="209.27013" + id="tspan5635" + sodipodi:role="line">n</tspan></text> + </g> + <path + id="path5637" + d="M 43.67349,-48.35938 L 68.673485,-48.35938" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <g + transform="translate(-274.4947,-128.88908)" + id="g5639"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="355.35809" + y="61.640625" + id="text5641" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5643" + x="355.35809" + y="61.640625">R</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="368.48599" + y="67.529701" + id="text5645" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5647" + x="368.48599" + y="67.529701">n</tspan></text> + </g> + <g + transform="translate(438.08597,190.64063)" + id="g4410"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-165.1279" + y="-74.889069" + id="text4412" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4414" + x="-165.1279" + y="-74.889069">V<tspan + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + id="tspan4416" /></tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="-155" + y="-69" + id="text4418" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4420" + x="-155" + y="-69">out</tspan></text> + </g> + <g + id="g4422" + transform="translate(-161.37746,-30)"> + <text + sodipodi:linespacing="125%" + id="text4424" + y="61.640625" + x="355.35809" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="61.640625" + x="355.35809" + id="tspan4426" + sodipodi:role="line">R</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4428" + y="67.529701" + x="369.73599" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="67.529701" + x="369.73599" + id="tspan4430" + sodipodi:role="line">f</tspan></text> + </g> + <g + id="g4442" + transform="translate(-274.50002,-135.88908)" /> + <g + id="g5691" + transform="translate(0,102)"> + <text + sodipodi:linespacing="125%" + id="text4454" + y="-19.24815" + x="81.03363" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-19.24815" + x="81.03363" + id="tspan4456" + sodipodi:role="line">R</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4458" + y="-13.359074" + x="94.16153" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-13.359074" + x="94.16153" + id="tspan4460" + sodipodi:role="line">1</tspan></text> + </g> + <g + inkscape:label="Layer 1" + id="g4530" + transform="translate(141.65618,87.140929)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g10127"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4260" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <g + inkscape:label="Layer 1" + id="g4540" + transform="translate(241.48064,97.140624)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g4542"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path4544" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 112.48597,-48.35938 L 133.98597,-48.35938 L 133.98597,101.64062" + id="path5697" + sodipodi:nodetypes="ccc" /> + <path + style="opacity:1;fill:#888a85;fill-opacity:1;stroke:#888a85;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 112.98597,1.640625 L 132.98597,1.640625" + id="path5699" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 112.98597,51.640625 L 133.98597,51.640625" + id="path5701" + sodipodi:nodetypes="cc" /> + <g + transform="translate(126.48598,87.140929)" + id="g5703" + inkscape:label="Layer 1"> + <g + id="g5705" + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)"> + <path + sodipodi:type="arc" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path5707" + sodipodi:cx="7.5" + sodipodi:cy="14.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" /> + </g> + </g> + <g + inkscape:label="Layer 1" + id="g5709" + transform="translate(126.48598,37.140624)"> + <g + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)" + id="g5711"> + <path + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="14.5" + sodipodi:cx="7.5" + id="path5713" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> + <g + transform="translate(126.48598,-12.85938)" + id="g5715" + inkscape:label="Layer 1"> + <g + id="g5717" + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)"> + <path + sodipodi:type="arc" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path5719" + sodipodi:cx="7.5" + sodipodi:cy="14.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,14.5 A 2.5,2.5 0 1 1 5,14.5 A 2.5,2.5 0 1 1 10,14.5 z" + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" /> + </g> + </g> + </g> +</svg> diff --git a/assets/img/pset12_transimpedance_amplifier.svg b/assets/img/pset12_transimpedance_amplifier.svg new file mode 100644 index 0000000000000000000000000000000000000000..13d79fb4bd7f1bed516292a1dc6ca130094e63de --- /dev/null +++ b/assets/img/pset12_transimpedance_amplifier.svg @@ -0,0 +1,527 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="297.0976" + height="167.12207" + id="svg2" + version="1.1" + inkscape:version="0.48.4 r9939" + sodipodi:docname="Transimpedance_amplifier%2C_simple[1].svg"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="32 : 16 : 1" + inkscape:persp3d-origin="16 : 10.666667 : 1" + id="perspective4254" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective4400" /> + <inkscape:perspective + id="perspective4402" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="32 : 16 : 1" + inkscape:persp3d-origin="16 : 10.666667 : 1" + id="perspective4211" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective3941" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3806" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 50 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="100 : 50 : 1" + inkscape:persp3d-origin="50 : 33.333333 : 1" + id="perspective3275" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 16 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="32 : 16 : 1" + inkscape:persp3d-origin="16 : 10.666667 : 1" + id="perspective3195" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective7933" /> + <inkscape:perspective + id="perspective7935" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective7849" /> + <inkscape:perspective + id="perspective7851" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective7782" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2819" /> + <inkscape:perspective + id="perspective2806" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective7292" /> + <inkscape:perspective + id="perspective7294" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective6168" /> + <inkscape:perspective + id="perspective6151" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective4175" /> + <inkscape:perspective + id="perspective4148" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective7019" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective3840" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 10 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="90 : 10 : 1" + inkscape:persp3d-origin="45 : 6.6666667 : 1" + id="perspective3053" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective6211" /> + <inkscape:perspective + id="perspective6195" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective2827" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective5533" /> + <inkscape:perspective + id="perspective10" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="116.07934" + inkscape:cy="-189.22337" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1280" + inkscape:window-height="968" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" + fit-margin-top="2" + fit-margin-left="2" + fit-margin-bottom="2" + fit-margin-right="2" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-0.87951967,-1.0473147)"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" + x="354.80646" + y="330.66605" + id="text6075" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan6077" + x="354.80646" + y="330.66605" /></text> + <path + inkscape:connector-curvature="0" + d="" + style="fill:none;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7055" + sodipodi:nodetypes="cc" /> + <g + inkscape:label="Layer 1" + id="g4534" + transform="translate(351.25985,430.95509)" /> + <g + id="g4156" + transform="translate(-220,-334.28571)"> + <path + transform="translate(243.91521,357.95509)" + d="M 10,62.5 C 10,63.880712 8.8807119,65 7.5,65 6.1192881,65 5,63.880712 5,62.5 5,61.119288 6.1192881,60 7.5,60 8.8807119,60 10,61.119288 10,62.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="62.5" + sodipodi:cx="7.5" + id="path7059" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + transform="translate(469.26519,367.95509)" + d="M 10,62.5 C 10,63.880712 8.8807119,65 7.5,65 6.1192881,65 5,63.880712 5,62.5 5,61.119288 6.1192881,60 7.5,60 8.8807119,60 10,61.119288 10,62.5 z" + sodipodi:ry="2.5" + sodipodi:rx="2.5" + sodipodi:cy="62.5" + sodipodi:cx="7.5" + id="path3529" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <g + id="g4151" + transform="translate(22.07323,478.34198)"> + <text + sodipodi:linespacing="125%" + id="text4153" + y="-52.886894" + x="199.89223" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-52.886894" + x="199.89223" + id="tspan4155" + sodipodi:role="line">V<tspan + id="tspan4157" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" /></tspan></text> + <text + sodipodi:linespacing="125%" + id="text4159" + y="-46.997822" + x="209.77013" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-46.997822" + x="209.77013" + id="tspan4161" + sodipodi:role="line">in</tspan></text> + </g> + <g + inkscape:label="Layer 1" + id="g3808" + transform="translate(362.50144,389.05281)"> + <path + style="fill:#e1f0f0;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 22.90842,16.402281 0,50.705575 49.1375,-25.35279 -49.1375,-25.352785 z" + id="path3810" + inkscape:connector-curvature="0" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4468" + width="2" + height="10" + x="30.408421" + y="46.77729" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4470" + width="2" + height="10" + x="50.77729" + y="-36.408421" + transform="matrix(0,1,-1,0,0,0)" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4472" + width="2" + height="10" + x="30.777281" + y="-36.408421" + transform="matrix(0,1,-1,0,0,0)" /> + </g> + <g + inkscape:label="Layer 1" + id="g4276" + transform="translate(333.09736,258.09261)"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" + d="m 58.16008,111.36218 -3.16008,0 3.9375,11 2.8125,0 5.46875,-15.1487 5.46875,15.14901 2.8125,0 5.46875,-15.14901 5.46875,15.14901 2.8125,0 5.46875,-15.14901 2.20095,6.1487 3.16007,0 -3.95477,-10.99969 -2.8125,0 -5.46875,15.14901 -5.46875,-15.14901 -2.8125,0 -5.46875,15.14901 -5.46875,-15.14901 -2.8125,0 -5.46875,15.14901 -2.18367,-6.14932 z" + id="path4278" + sodipodi:nodetypes="ccccccccccccccccccccccc" + inkscape:connector-curvature="0" /> + </g> + <path + sodipodi:nodetypes="cccc" + id="path4280" + d="m 389.15987,370.45509 -30.25,0 0,50 25,0" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + id="path4284" + d="m 433.5618,430.45509 40.43868,0" + style="fill:none;stroke:#000000;stroke-width:2.00000024;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccc" + id="path4286" + d="m 431.40987,370.45509 27.5,0 0,60" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <g + transform="translate(323.9152,441.45509)" + id="g4404" + inkscape:label="Layer 1"> + <path + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="m 35,47 5e-6,-48 27.25,0" + id="path9220" + sodipodi:nodetypes="ccc" + inkscape:connector-curvature="0" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4702" + width="24" + height="3" + x="23" + y="46" /> + <rect + y="51" + x="26" + height="3" + width="18" + id="rect4704" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect4719" + width="12" + height="3" + x="29" + y="56" /> + </g> + <g + id="g4410" + transform="translate(648.01519,509.4551)"> + <text + sodipodi:linespacing="125%" + id="text4412" + y="-74.889069" + x="-165.1279" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-74.889069" + x="-165.1279" + id="tspan4414" + sodipodi:role="line">V<tspan + id="tspan4416" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" /></tspan></text> + <text + sodipodi:linespacing="125%" + id="text4418" + y="-69" + x="-155" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + xml:space="preserve"><tspan + y="-69" + x="-155" + id="tspan4420" + sodipodi:role="line">out</tspan></text> + </g> + <g + transform="translate(48.55177,288.81447)" + id="g4422"> + <text + xml:space="preserve" + style="font-size:18px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="355.35809" + y="61.640625" + id="text4424" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4426" + x="355.35809" + y="61.640625">R</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif Italic" + x="369.73599" + y="67.529701" + id="text4428" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4430" + x="369.73599" + y="67.529701">f</tspan></text> + </g> + <g + transform="translate(351.41518,405.95509)" + id="g4530" + inkscape:label="Layer 1"> + <g + id="g10127" + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)"> + <path + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4260" + sodipodi:cx="7.5" + sodipodi:cy="14.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,14.5 C 10,15.880712 8.8807119,17 7.5,17 6.1192881,17 5,15.880712 5,14.5 5,13.119288 6.1192881,12 7.5,12 8.8807119,12 10,13.119288 10,14.5 z" + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" /> + </g> + </g> + <g + transform="translate(451.40987,415.95509)" + id="g4540" + inkscape:label="Layer 1"> + <g + id="g4542" + transform="matrix(1.5,0,0,1.5,-37.10156,-119.8521)"> + <path + sodipodi:type="arc" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4544" + sodipodi:cx="7.5" + sodipodi:cy="14.5" + sodipodi:rx="2.5" + sodipodi:ry="2.5" + d="M 10,14.5 C 10,15.880712 8.8807119,17 7.5,17 6.1192881,17 5,15.880712 5,14.5 5,13.119288 6.1192881,12 7.5,12 8.8807119,12 10,13.119288 10,14.5 z" + transform="matrix(0.6666667,0,0,0.6666667,24.734373,79.9014)" /> + </g> + </g> + <path + inkscape:connector-curvature="0" + id="path4154" + d="m 362.67857,420.3979 -108.79464,0.0446" + style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + </g> +</svg> diff --git a/assets/img/pset8_1.jpg b/assets/img/pset8_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d479de3a88c2f5517a078c2a019d67fdf500f22 Binary files /dev/null and b/assets/img/pset8_1.jpg differ diff --git a/assets/img/pset8_2.jpg b/assets/img/pset8_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c93835ba2f004f059eaaa847ee4fbc72dc20c9e3 Binary files /dev/null and b/assets/img/pset8_2.jpg differ diff --git a/assets/img/pset8_3.jpg b/assets/img/pset8_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..040b6d1988a2cdf575ddeaa46b711e36949fe963 Binary files /dev/null and b/assets/img/pset8_3.jpg differ diff --git a/assets/img/pset9_1.jpg b/assets/img/pset9_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36e3d24273cdbfce3391f45c31c3f4ac6664fba7 Binary files /dev/null and b/assets/img/pset9_1.jpg differ diff --git a/assets/img/pset9_2.jpg b/assets/img/pset9_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c3a60bcbff3a484798f4c4c259638998a2abbcd Binary files /dev/null and b/assets/img/pset9_2.jpg differ diff --git a/assets/img/pset9_3.jpg b/assets/img/pset9_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4699a9a9592988c1fdc49c6c6cd3e65e57aa8d54 Binary files /dev/null and b/assets/img/pset9_3.jpg differ diff --git a/assets/img/pset9_4.jpg b/assets/img/pset9_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45286fcfe5d4f0258c9ce1dcd510187e285cd338 Binary files /dev/null and b/assets/img/pset9_4.jpg differ diff --git a/assets/img/pset9_5.jpg b/assets/img/pset9_5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d5351e1ac6c18fb6ec146608a704144bb7bd3ef Binary files /dev/null and b/assets/img/pset9_5.jpg differ diff --git a/assets/img/pset9_6.jpg b/assets/img/pset9_6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45d86811f455d171364122d55a5246a7671983e5 Binary files /dev/null and b/assets/img/pset9_6.jpg differ diff --git a/assets/pdf/2004_Candes_Romberg_Tao.pdf b/assets/pdf/2004_Candes_Romberg_Tao.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ac416666b8cdd0b1e2faa75a9aa8d27aae16a7b3 Binary files /dev/null and b/assets/pdf/2004_Candes_Romberg_Tao.pdf differ diff --git a/assets/pdf/2011_Hansen_Jorgensen.pdf b/assets/pdf/2011_Hansen_Jorgensen.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7619a71655f2c4ceabbf96e66bd039b66798d626 Binary files /dev/null and b/assets/pdf/2011_Hansen_Jorgensen.pdf differ diff --git a/index.md b/index.md index 1b2818fa137a1735ccdeb75db9ec2ef98c3bf061..63ffbefc211284f2aba2ea35772c9fbcd689ce63 100644 --- a/index.md +++ b/index.md @@ -2,7 +2,7 @@ title: Home --- -# MAS 6.244 +# MAS.862 _Physics of Information Technology_ _Erik Strand_ diff --git a/notes.html b/notes.html index ff57d2ebd4bc33ef9fc032bc1c24a32d2afd6410..bbae9be72978284fdd5c8ed77651dc5a7ea8d532 100644 --- a/notes.html +++ b/notes.html @@ -6,7 +6,7 @@ title: Notes <ul> {% for note in site.notes %} <li> - <h2><a href="{{ note.url | real_relative_url }}">{{ note.title }}</a></h2> + <a href="{{ note.url | real_relative_url }}">{{ note.title }}</a> </li> {% endfor %} </ul> diff --git a/project.md b/project.md index b5e1052ade132a20668944e632010bf98f6fa4a3..ec55d9e5e04953a65c4bf05456ef7f4ef1c5b651 100644 --- a/project.md +++ b/project.md @@ -2,6 +2,342 @@ title: Final Project --- -# CT Imaging from Scratch +# Computed Tomography -Welcome to my skeletal tracking page. + +## Reading + +- [Radon Transform](http://www-math.mit.edu/~helgason/Radonbook.pdf) by Sigurdur Helgason +- [Robust Uncertainty Principles: Exact Signal Reconstruction from Highly Incomplete Frequency + Information](assets/pdf/2004_Candes_Romberg_Tao.pdf) by Candes, Romberg, and Tao +- [Total Variation and Tomographic Imaging from Projections](assets/pdf/2011_Hansen_Jorgensen.pdf) + by Hansen and Jørgensen + +## Code + +All my code is in this [repo](https://gitlab.cba.mit.edu/erik/funky_ct/tree/develop), named in honor +of the [Radon transform](https://en.wikipedia.org/wiki/Radon_transform)'s more eccentric +[cousin](https://en.wikipedia.org/wiki/Funk_transform). Building requires a modern C++ compiler and +cmake. [Libpng](http://www.libpng.org/pub/png/libpng.html) must be installed as well. All told it's +about 1,800 lines (excluding third party code), but there's some unnecessary duplication in there +since I've been favoring velocity over hygiene. + + +## Fourier Reconstruction + + +### Fourier Slice Theorem + +Let $$f : \mathbb{R}^2 \rightarrow \mathbb{R}$$ be a density function. If we map density to +brightness we can view $$f$$ as describing an image. We'll assume that this function is defined +everywhere, but is always zero outside some finite neighborhood of the origin (say, the bounds of +the image). + +The projection of $$f$$ to the x axis is obtained by integrating along y: + +$$ +p(x) = \int_\mathbb{R} f(x, y) dy +$$ + +Meanwhile, the [Fourier transform](notes/fourier_transform.html) of $$f$$ is + +$$ +\hat{f}(u, v) += \int_\mathbb{R} \int_\mathbb{R} f(x, y) e^{-2 \pi i (u x + v y)} dx dy +$$ + +Now comes the key insight. The slice along the $$u$$ axis in frequency space is + +$$ +\begin{align*} +\hat{f}(u, 0) +&= \int_\mathbb{R} \int_\mathbb{R} f(x, y) e^{-2 \pi i u x} dx dy \\ +&= \int_\mathbb{R} \left( \int_\mathbb{R} f(x, y) dy \right) e^{-2 \pi i u x} dx \\ +&= \int_\mathbb{R} p(x) e^{-2 \pi i u x} dx \\ +&= \hat{p}(u) +\end{align*} +$$ + +So the Fourier transform of the 1d projection is a 1d slice through the 2d Fourier transform of the +image. This result is known as the Fourier Slice Theorem, and is the foundation of most +reconstruction techniques. + +Since the x axis is arbitrary (we can rotate the image however we want), this works for other +angles as well: + +$$ +\hat{p}_\theta (\omega) = \hat{f} (\omega \cos \theta, \omega \sin \theta) +$$ + +where $$p_\theta (r)$$ is the projection of $$f$$ onto the line that forms an angle $$\theta$$ with +the x axis. In other words, the Fourier transform of the 1D x-ray projection at angle $$\theta$$ is +the slice through the 2D Fourier transform of the image at angle $$\theta$$. + +Conceptually this tells us everything we need to know about the reconstruction. First we take the 1D +Fourier transform of each projection. Then we combine them by arranging them radially. Finally we +take the inverse Fourier transform of the resulting 2d function. We'll end up with the reconstructed +image. + +It also tells us how to generate the projections, given that we don't have a 1d x-ray machine. First +we take the Fourier transform of the image. Then we extract radial slices from it. Finally we take +the inverse Fourier transform of each slice. These are the projections. This will come in handy for +generating testing data. + + +### Discretization + +Naturally the clean math of the theory has be modified a bit to make room for reality. In +particular, we only have discrete samples of $$f$$ (i.e. pixel values) rather than the full +continuous function (which in our current formalism may contain infinite information). This has two +important implications. + +First, we'll want our Fourier transforms to be discrete Fourier transforms (DFTs). Luckily the +continuous and discrete Fourier transforms are effectively interchangeable, as long as the functions +we work with are mostly spatially and bandwidth limited, and we take an appropriate number of +appropriately spaced samples. You can read more about these requirements +[here](notes/fourier_series.html). + +Second, since we combine the DFTs of the projections radially, we'll end up with samples (of the 2D +Fourier transform of our image) on a polar grid rather than a cartesian one. So we'll have to +interpolate. This step is tricky and tends to introduce a lot of error. , but there are better +algorithms out there that come closer to the theoretically ideal +[sinc interpolation](https://en.wikipedia.org/wiki/Whittaker%E2%80%93Shannon_interpolation_formula). +The popular [gridrec](https://www.ncbi.nlm.nih.gov/pubmed/23093766) method is one. + + +### Results + +I used [FFTW](http://www.fftw.org/) to compute Fourier transforms. It's written in C and is very +[fast](http://www.fftw.org/benchfft/). I implemented my own polar resampling routine. It uses a +[Catmull-Rom interpolation](http://entropymine.com/imageworsener/bicubic/) kernel. + +I started with this image of a +[brain](https://commons.wikimedia.org/wiki/File:FMRI_coronal_scan.jpg) from Wikimedia Commons. + + + +Fourier reconstruction produces a nice [sinogram](https://en.wikipedia.org/wiki/Radon_transform). +Each row is one projection, with angle going from 0 at the top to $$\pi$$ at the bottom, and $$r = +0$$ down the middle column. You can clearly see the skull (a roughly circular feature) unwrapped to +a line on the left side of the sinogram. + + + +The reconstruction, however, isn't so clean. + + + +The Fourier library I'm using is solid (and indeed it reproduces images very well even after +repeated applications), so the error must be coming from my interpolation code. Indeed, the high +frequency content looks ok, but there's a lot of error in low frequency content. This is encoded in +the middle of the Fourier transform, which is what is most distorted by the polar resampling. I +could implement a resampling routine specifically designed for polar resampling, or indeed +specifically for polar resampling for CT reconstruction, but there are better algorithms out there +anyway so I'll move on. + + +### Outtakes + +I got a number of interesting failures before getting my code to work correctly. + + + + + + +These all started as attempts to project and reconstruct a [disk](notes/fourier_examples.html), +though I did experiment once interesting mistakes started happening. They mostly result from +indexing errors and an issue with my integration with FFTW. The latter problem relates to the +periodicity of discrete Fourier transforms and the resulting ambiguity in frequency interpretation. +In a nutshell, the DFT doesn't give you samples of the continuous Fourier transform; it gives you +samples of the periodic summation of the continuous Fourier transform. So each sample isn't +representative of one frequency, it's representative of a whole equivalence class of frequencies. + +For this application it's very important that the center of the polar coordinate system used for +resampling is right at the DC sample. So though the raw Fourier transform of the image looks like +this (real and imaginary parts shown separately), + + + + +we want to permute the quadrants so that it looks like this: + + + + +Then the center of the image can be the center of the polar coordinate system. (Note: to make these +I linearly mapped the full range of each image to [1, e], then applied the natural logarithm. So +though they aren't the same color, both tend toward zero away from the center.) This is akin to +viewing the sample frequencies not as $$0$$, $$1/N$$, $$\ldots$$, $$(N - 1)/N$$, but as $$0$$, +$$1/N$$, $$\ldots$$, $$(N/2 - 1)/N$$, $$-1/2$$, $$\ldots$$, $$-1/N$$. + +Interestingly, you can do this by literally swapping quadrants of the image, or by multiplying the +results element-wise by a checker board of 1s and -1s. This seems like magic until you just write +out the math. + + +## Filtered Back Projection + +It would be nice if we could avoid the interpolation required for Fourier reconstruction. The +simplest way of doing so, and still the most popular method of performing image reconstruction, is +called filtered back projection. + + +### Theory + +Let's hop back to the continuous theory for a moment. The Fourier reconstruction technique is based +on the fact that $$f$$ can be represented in terms of its projections $$p_\theta$$ in polar +coordinates. + +$$ +\begin{align*} +f(x, y) +&= \int_\mathbb{R} \int_\mathbb{R} \hat{f}(u, v) e^{2 \pi i (ux + vy)} \mathrm{d}u \mathrm{d}v \\ +&= \int_0^\pi \int_\mathbb{R} \hat{f}(\omega \cos \theta, \omega \sin \theta) + e^{2 \pi i \omega (x \cos \theta + y \sin \theta)} + \vert \omega \vert \mathrm{d} \omega \mathrm{d} \theta \\ +&= \int_0^\pi \int_\mathbb{R} \hat{p}_\theta(\omega) + e^{2 \pi i \omega (x \cos \theta + y \sin \theta)} + \vert \omega \vert \mathrm{d} \omega \mathrm{d} \theta \\ +\end{align*} +$$ + +Instead of using interpolation to transform the problem back to cartesian coordinates where we can +apply the usual (inverse) DFT, we can directly evaluate the above integral. + +To simplify things a bit, note that the integral over $$\omega$$ is itself a one dimensional inverse +Fourier transform. In particular if we define + +$$ +q_\theta(\omega) = \hat{p}_\theta(\omega) \vert \omega \vert +$$ + +then the inner integral is just + +$$ +\mathcal{F}^{-1}[q_\theta](x \cos \theta + y \sin \theta) +$$ + +So overall + +$$ +f(x, y) = \int_0^\pi \mathcal{F}^{-1}[q_\theta](x \cos \theta + y \sin \theta) \mathrm{d} \theta +$$ + +Since multiplication in the frequency domain is equivalent to convolution in the spatial domain, +$$\mathcal{F}^{-1}[q_\theta]$$ is simply a filtered version of $$p_\theta$$. Hence the name filtered +back projection. + + +### Discretization + +We'll replace the continuous Fourier transforms with DFTs as before. + +The only remaining integral (i.e. that's not stuffed inside a Fourier transform) is over $$\theta$$, +so most quadrature techniques will want samples of the integrand that are evenly spaced in +$$\theta$$. We want the pixels in our resulting image to lie on a cartesian grid, so our integrand +samples should be evenly spaced in $$x$$ and $$y$$ as well. + +How do we compute $$\mathcal{F}^{-1}[q_\theta]$$? We are given samples of $$p_\theta(r)$$ on a polar +grid. Using the DFT, we can get samples of $$\hat{p}_\theta(\omega)$$. They will be for the same +$$\theta$$ values, and evenly spaced frequency values $$\omega$$. So if we just multiply by $$\vert +\omega \vert$$, we get the corresponding samples of $$q_\theta(\omega)$$. Finally we just take the +inverse DFT and we have samples of $$\mathcal{F}^{-1}[q_\theta]$$ on a polar grid -- namely at the +same $$(r, \theta)$$ points we started out with. + +This works out perfectly for $$\theta$$: we can take the samples we naturally end up with and use +them directly for quadrature. For $$r$$, on the other hand, the regular samples we end up with won't +line up with the values $$x \cos \theta + y \sin \theta$$ that we want. So we'll still have to do +some interpolation. But now it's a simple 1D interpolation problem that's much easier to do without +introducing as much error. In particular, we only have to do interpolation in the spatial domain, so +errors will only accumulate locally. + + +### Results + +I again use [FFTW](http://www.fftw.org/) for Fourier transforms. For interpolation I just take the +sample to the left of the desired location, and for integration I just use a left Riemann sum. Even +with these lazy techniques, the reconstruction looks quite good. + + + + +## Total Variation / Compressed Sensing + +Unfortunately this is still a work in progress. I started implementing a [modern +approach](assets/pdf/2011_hansen_jorgensen.pdf), but found I didn't have enough background to +make it work. They gloss over some details that I tried to get around with brute force, only to find +that the resulting problem was computationally intractable. So yesterday I started over, +re-implementing results from one of the original compressed sensing +[papers](assets/pdf/2004_Candes_Romberg_Tao.pdf). However I did learn some things from my failed +attempts... + + +## Matrix Formulation + +Both techniques I've fully implemented so far involve only three types of operations: DFTs, +interpolation, and multiplication (for the $$\vert \omega \vert$$ filter). All these operations are +linear, so we can express them as matrices and reformulate each technique as a single matrix +multiplication with a vector. In practice this fact alone is useless, since the resulting matrix +ends up being enormous. (In fact if your image and sinogram are n by n pixels, the matrix will have +n^4 entries.) But this formulation is used to derive the theory of many total variation versions. + +In the process of my first failed total variation implementation, I ended up with most of the parts +of the Fourier and filtered back projection algorithms implemented as matrices. So let's use them +and create a sinogram with a single matrix multiplication. As mentioned the matrices are huge, so +here I'll work with a 32 by 32 brain image. + + + +The DFTs were easy. Very similar to the cosine transform we used in the last problem set. + + + + +To construct the polar interpolation matrix, I rewrote my interpolation routine to drop the weights +it calculated in the appropriate entries in a matrix rather than summing things up as it goes. These +weights depend on the type of interpolation used and the sizes of the images involved. + + + + +Finally it's just some (inverse) DFTs to get the sinogram. They can all be expressed simultaneously +in one matrix. + + + +I bump up the pixel count for the polar projections so that the resampling doesn't lose as much +information. Thus the final matrix that performs all three of these operations at once has +$$2 \cdot 64^2$$ rows and $$32^2$$ columns, for a total of 8,388,608 entries. (I could chop this in +half if I didn't bother computing the imaginary part of the sinogram. It should be zero but it's a +nice sanity check.) + + +## TomoPy + +Ultimately there are a lot more algorithms out there than I care to implement myself. Thanks to the +people behind [TomoPy](https://tomopy.readthedocs.io/en/latest/), I don't have to. It's a library of +tomographic imaging algorithms exposed through Python. It's decently documented, and the +[code](https://github.com/tomopy/tomopy) is open source. It also integrates with +[ASTRA](https://www.astra-toolbox.com/) which has some blazing fast GPU implementations. + +I scanned a 3d print that I made in [How to Make (almost) +Anything](http://fab.cba.mit.edu/classes/863.18/CBA/people/erik/04_3d_printing_scanning/) last +semester. + + + +I reconstructed it using TomoPy's gridrec implementation. + + + +The results aren't that great, so evidently the settings will require some tweaking. Ultimately I'd +like to set up an easy to use TomoPy/ASTRA toolchain to use with CBA's CT scanner; this is just a +first test. + +In particular, TomoPy is designed for parallel beam scans, not cone beam scans. In 2D it's not hard +to manipulate fan beam data into a format that parallel beam algorithms can understand, since every +line in a fan beam is a line in some other parallel beam. But this doesn't work in 3D since there's +only one horizontal plane in which the cone beam rays are aligned with the parallel beam rays. +Luckily ASTRA supports cone beams, so once I have that integration figured out we should be able to +get proper reconstructions. diff --git a/psets.html b/psets.html index 1efc5d6ebcbb054db8dbf2c66b0448886400cb8e..218a26b16903433207cf94b5360fed1c45d76c95 100644 --- a/psets.html +++ b/psets.html @@ -6,7 +6,7 @@ title: Problem Sets <ul> {% for pset in site.psets %} <li> - <h2><a href="{{ pset.url | real_relative_url }}">{{ pset.title }}</a></h2> + <a href="{{ pset.url | real_relative_url }}">{{ pset.title }}</a> </li> {% endfor %} </ul>