<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dan&#039;s Thoughts &#187; math</title>
	<atom:link href="http://danboykis.com/category/math/feed/" rel="self" type="application/rss+xml" />
	<link>http://danboykis.com</link>
	<description>Thinking somewhat carefully</description>
	<lastBuildDate>Tue, 18 Jan 2011 00:46:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>sin(n) = -1 where n is an integer in radians</title>
		<link>http://danboykis.com/2010/05/sinn-1-where-n-is-an-integer-in-radians/</link>
		<comments>http://danboykis.com/2010/05/sinn-1-where-n-is-an-integer-in-radians/#comments</comments>
		<pubDate>Wed, 19 May 2010 21:55:38 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=2034</guid>
		<description><![CDATA[I saw a fun math problem on reddit the other day. find a number n, so that sin(n)=-1, where n is an integer in radians; so sin(270 degrees) doesn't count. Obviously it will never be exactly -1 but close enough for the difference to be lost in rounding. I need the argument of sin function [...]]]></description>
			<content:encoded><![CDATA[<p>I saw a fun math problem on <a href="http://www.reddit.com/r/math/comments/byooz/how_would_you_approach_this_problem_sinx1_where_x/">reddit</a> the other day.</p>
<p>find a number n, so that sin(n)=-1, where n is an integer in radians; so sin(270 degrees) doesn't count. Obviously it will never be exactly -1 but close enough for the difference to be lost in rounding.</p>
<img src='http://danboykis.com/wp-content/latex/7b6/7b618be876d252f14bdfac5e4b67c83b-ffffff-000000-0.png' alt='\sin(\frac{3\pi}{2} + 2\pi \cdot n) = -1' title='\sin(\frac{3\pi}{2} + 2\pi \cdot n) = -1' class='latex' /><br />
I need the argument of sin function to be as close to an integer as possible. Call this integer m.<br />
<img src='http://danboykis.com/wp-content/latex/891/8911834676e17a6e559694e90b53b051-ffffff-000000-0.png' alt='\frac{3\pi}{2}+2\pi \cdot n \approx m' title='\frac{3\pi}{2}+2\pi \cdot n \approx m' class='latex' /><br />
Solving for <img src='http://danboykis.com/wp-content/latex/4f0/4f08e3dba63dc6d40b22952c7a9dac6d-ffffff-000000-0.png' alt='\pi' title='\pi' class='latex' /> leads to:<br />
<img src='http://danboykis.com/wp-content/latex/cd9/cd909869b3ad0358b6f611510c96926b-ffffff-000000-0.png' alt='\pi \approx \frac{p}{q} \approx \frac{2m}{4n+3} ' title='\pi \approx \frac{p}{q} \approx \frac{2m}{4n+3} ' class='latex' />
<p>If I have a rational approximation to <img src='http://danboykis.com/wp-content/latex/4f0/4f08e3dba63dc6d40b22952c7a9dac6d-ffffff-000000-0.png' alt='\pi' title='\pi' class='latex' /> with an even numerator I can divide it by two get my m. I also have to make sure that the denominator is in the form of 4n+3.<br />
It's possible to use continued fractions to approximate real numbers. Here's a continued fraction sequence for pi: http://www.research.att.com/~njas/sequences/A001203</p>
<p>The first rational approximation I learned in elementary school is 22/7 which is perfect.</p>
<p>> (sin 11)<br />
-.9999902065507035</p>
<p>For the others I'll have to evaluate the continued fraction to get my approximation of a simple fraction.</p>
<p>> (eval-terms (list 3 7 15 1 292 1))<br />
104348/33215</p>
<p>> (sin (/ 104348 2))<br />
-.9999999999848337</p>
<p>> (eval-terms (list 3 7 15 1 292 1 1 1 2 1 3 1 14 2 1))<br />
245850922/78256779</p>
<p>> (sin (/ 245850922 2))<br />
-.99999999999999999532<br />
Looks like a good candidate was found.</p>
<p>This is the code to evaluate a continued fraction coefficients. It's very convenient that scheme has a native rational data type.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>eval-terms ts<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">length</span> ts<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> ts<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>else
          <span style="color: #66cc66;">&#40;</span>+ <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> ts<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>/ <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>eval-terms <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> ts<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>eval-terms-iter ts<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>rev-ts <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">reverse</span> ts<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>ev-terms ts frac<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span>? ts<span style="color: #66cc66;">&#41;</span>
        frac
        <span style="color: #66cc66;">&#40;</span>ev-terms <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> ts<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>+ <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> ts<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>/ <span style="color: #cc66cc;">1</span> frac<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>ev-terms rev-ts <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> rev-ts<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2010/05/sinn-1-where-n-is-an-integer-in-radians/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QMISMF Chap 3</title>
		<link>http://danboykis.com/2009/10/qmismf-chap-3/</link>
		<comments>http://danboykis.com/2009/10/qmismf-chap-3/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:13:04 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[math]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[qmismf]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1989</guid>
		<description><![CDATA[3-1 3-2 3-3 3-4 3-5 Assume: 3-6 Assume: and 3-7]]></description>
			<content:encoded><![CDATA[<p><b>3-1</b><br />
<img src='http://danboykis.com/wp-content/latex/82e/82eaec8494c82b5e20a8c1f0b980822a-ffffff-000000-0.png' alt='\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1  \end{pmatrix}+\begin{pmatrix} 0 &amp; -i \\ i &amp; 0  \end{pmatrix}=\begin{pmatrix} 1 &amp; -i \\ i &amp; -1  \end{pmatrix}' title='\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1  \end{pmatrix}+\begin{pmatrix} 0 &amp; -i \\ i &amp; 0  \end{pmatrix}=\begin{pmatrix} 1 &amp; -i \\ i &amp; -1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/9d7/9d7c5fffc89459ca109d178e4bdf6302-ffffff-000000-0.png' alt='\begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0  \end{pmatrix}+\begin{pmatrix} 0 &amp; -i \\ i &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 1-i \\ 1+i &amp; 0 \end{pmatrix}' title='\begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0  \end{pmatrix}+\begin{pmatrix} 0 &amp; -i \\ i &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 1-i \\ 1+i &amp; 0 \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/386/386d80c76eda620be4f637449a92f1cf-ffffff-000000-0.png' alt='\frac{1}{2}\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; 1  \end{pmatrix}+\frac{1}{2}\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 2 &amp; 0 \\ 0 &amp; 0 \end{pmatrix}=\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; 1  \end{pmatrix}' title='\frac{1}{2}\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; 1  \end{pmatrix}+\frac{1}{2}\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 2 &amp; 0 \\ 0 &amp; 0 \end{pmatrix}=\begin{pmatrix} 1 &amp; 0 \\ 0 &amp; 1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/fc6/fc60704713887572d24a841fa2100058-ffffff-000000-0.png' alt='\begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0  \end{pmatrix}+\begin{pmatrix} 0 &amp; 1 \\ -1 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 2 \\ 0 &amp; 0  \end{pmatrix}' title='\begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0  \end{pmatrix}+\begin{pmatrix} 0 &amp; 1 \\ -1 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 2 \\ 0 &amp; 0  \end{pmatrix}' class='latex' /><br />
<b>3-2</b><br />
<img src='http://danboykis.com/wp-content/latex/551/55129adc643415859bd5e0c677a2093f-ffffff-000000-0.png' alt='\begin{pmatrix} 1 &amp; -1 &amp; 1 \\ 0 &amp; 1 &amp; 0 \\ 2 &amp; 0 &amp; 3  \end{pmatrix} \begin{pmatrix} 3 &amp; 3 &amp; -1 \\ 0 &amp; 1 &amp; 0 \\ -2 &amp; -2 &amp; 1  \end{pmatrix}=\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1  \end{pmatrix}' title='\begin{pmatrix} 1 &amp; -1 &amp; 1 \\ 0 &amp; 1 &amp; 0 \\ 2 &amp; 0 &amp; 3  \end{pmatrix} \begin{pmatrix} 3 &amp; 3 &amp; -1 \\ 0 &amp; 1 &amp; 0 \\ -2 &amp; -2 &amp; 1  \end{pmatrix}=\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/3fc/3fc6f98876b38fe78b952745e0b88369-ffffff-000000-0.png' alt='\begin{pmatrix} 3 &amp; 3 &amp; -1 \\ 0 &amp; 1 &amp; 0 \\ -2 &amp; -2 &amp; 1  \end{pmatrix} \begin{pmatrix} 1 &amp; -1 &amp; 1 \\ 0 &amp; 1 &amp; 0 \\ 2 &amp; 0 &amp; 3  \end{pmatrix} =\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1  \end{pmatrix}' title='\begin{pmatrix} 3 &amp; 3 &amp; -1 \\ 0 &amp; 1 &amp; 0 \\ -2 &amp; -2 &amp; 1  \end{pmatrix} \begin{pmatrix} 1 &amp; -1 &amp; 1 \\ 0 &amp; 1 &amp; 0 \\ 2 &amp; 0 &amp; 3  \end{pmatrix} =\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1  \end{pmatrix}' class='latex' /><br />
<b>3-3</b><br />
<img src='http://danboykis.com/wp-content/latex/27f/27fe6775fc486e0ac669a5d4de5afa8a-ffffff-000000-0.png' alt='\frac{1}{4}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 2 &amp; 2 \\ 2 &amp; 2  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}' title='\frac{1}{4}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 2 &amp; 2 \\ 2 &amp; 2  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/aaa/aaad3d899f75a3454740ac8e7858e55d-ffffff-000000-0.png' alt='\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 2 &amp; -2 \\ -2 &amp; 2  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}' title='\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 2 &amp; -2 \\ -2 &amp; 2  \end{pmatrix}=\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/398/398be7165b274288c1b5da89a3de7cab-ffffff-000000-0.png' alt='\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}' title='\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/434/434859951d614184be621f1614d475ff-ffffff-000000-0.png' alt='\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}' title='\frac{1}{2}\begin{pmatrix} 1 &amp; -1 \\ -1 &amp; 1  \end{pmatrix}\frac{1}{2}\begin{pmatrix} 1 &amp; 1 \\ 1 &amp; 1  \end{pmatrix}=\frac{1}{4}\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}=\begin{pmatrix} 0 &amp; 0 \\ 0 &amp; 0  \end{pmatrix}' class='latex' /><br />
<b>3-4</b><br />
<img src='http://danboykis.com/wp-content/latex/c16/c1648dd413a7f4a33c590a05e12a9cf0-ffffff-000000-0.png' alt='\begin{pmatrix} 1 &amp; 2 &amp; 3 \\ 2 &amp; 4 &amp; 5 \\ 3 &amp; 5 &amp; 6  \end{pmatrix} \begin{pmatrix} 1 &amp; -3 &amp; 2 \\ -3 &amp; 3 &amp; -1 \\ 2 &amp; -1 &amp; 0 \end{pmatrix} =\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1 \end{pmatrix}' title='\begin{pmatrix} 1 &amp; 2 &amp; 3 \\ 2 &amp; 4 &amp; 5 \\ 3 &amp; 5 &amp; 6  \end{pmatrix} \begin{pmatrix} 1 &amp; -3 &amp; 2 \\ -3 &amp; 3 &amp; -1 \\ 2 &amp; -1 &amp; 0 \end{pmatrix} =\begin{pmatrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1 \end{pmatrix}' class='latex' /><br />
<b>3-5</b><br />
Assume: <img src='http://danboykis.com/wp-content/latex/693/69357a407a9fa06bd2e0f948f7eaec0d-ffffff-000000-0.png' alt='AM^{-1}=M^{-1}A \iff AM=MA' title='AM^{-1}=M^{-1}A \iff AM=MA' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/d3a/d3ae9cb6e05577c787bbba79b09ebf84-ffffff-000000-0.png' alt='AM^{-1}=M^{-1}A \implies AM=MA' title='AM^{-1}=M^{-1}A \implies AM=MA' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/d41/d41623d7d71659936b32ef9681b1647b-ffffff-000000-0.png' alt='AM^{-1}=M^{-1}A' title='AM^{-1}=M^{-1}A' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/ae6/ae6ce2bb587782a9eef188192714d54c-ffffff-000000-0.png' alt='AM^{-1}M=M^{-1}AM' title='AM^{-1}M=M^{-1}AM' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/14e/14e61b5aa154f89d64631b6a7e612beb-ffffff-000000-0.png' alt='MAI=MM^{-1}AM' title='MAI=MM^{-1}AM' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/b70/b70dcb65ae34f67b23a264f87101c773-ffffff-000000-0.png' alt='MA=IAM' title='MA=IAM' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/509/50929b43435845e601252b3ed34b793f-ffffff-000000-0.png' alt='MA=AM' title='MA=AM' class='latex' /></p>
<img src='http://danboykis.com/wp-content/latex/6e1/6e10876bfb28e59f29ce3d92a00b30d2-ffffff-000000-0.png' alt='AM=MA \implies AM^{-1}=M^{-1}A' title='AM=MA \implies AM^{-1}=M^{-1}A' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/2a0/2a00fcc6798dcd6272a12fae5629e259-ffffff-000000-0.png' alt='AM=MA' title='AM=MA' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/e94/e94742a13efc73783bf5419f47359904-ffffff-000000-0.png' alt='M^{-1}AM=A' title='M^{-1}AM=A' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/a23/a23bc60348de72cdc699ac8213657046-ffffff-000000-0.png' alt='M^{-1}A=AM^{-1}' title='M^{-1}A=AM^{-1}' class='latex' /><br />
<b>3-6</b><br />
Assume: <img src='http://danboykis.com/wp-content/latex/2a0/2a00fcc6798dcd6272a12fae5629e259-ffffff-000000-0.png' alt='AM=MA' title='AM=MA' class='latex' /> and  <img src='http://danboykis.com/wp-content/latex/001/001d0cc15bf5e2ff2ff2d9b512daa414-ffffff-000000-0.png' alt='BM=MB' title='BM=MB' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/4f6/4f63f3e0056ca98edb109a940787e398-ffffff-000000-0.png' alt='(A+B)M=M(A+B)' title='(A+B)M=M(A+B)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/9f7/9f73e4d7f0cf92333c44ce1957a5e816-ffffff-000000-0.png' alt='AM+BM=MA+MB' title='AM+BM=MA+MB' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/c6d/c6d6ce637a5bcc832a8fe1331eca09e9-ffffff-000000-0.png' alt='AM+BM-MA-MB=0' title='AM+BM-MA-MB=0' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/7ad/7add203d69eb1d560f22b6dea7ee8101-ffffff-000000-0.png' alt='(AM-MA)+(BM-MB)=0' title='(AM-MA)+(BM-MB)=0' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/df1/df15c8f32925f5048fbabec35bdc1944-ffffff-000000-0.png' alt='0+0=0' title='0+0=0' class='latex' />
<img src='http://danboykis.com/wp-content/latex/fe3/fe3397f057cb484b57f639098bacebef-ffffff-000000-0.png' alt='(AB)M=M(AB)' title='(AB)M=M(AB)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/029/029105efc6e9cfea566977ec67001269-ffffff-000000-0.png' alt='A(BM)=(MA)B' title='A(BM)=(MA)B' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/a5f/a5f700fdec0d47587a33d6c18b70b0e8-ffffff-000000-0.png' alt='A(MB)=(AM)B' title='A(MB)=(AM)B' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/8f5/8f53cc126f387782b5a2b8a40cc2e419-ffffff-000000-0.png' alt='(AM)B=(AM)B' title='(AM)B=(AM)B' class='latex' />
<img src='http://danboykis.com/wp-content/latex/8bb/8bbd75f9eadacb8d87ad60d31ae1fbe0-ffffff-000000-0.png' alt='(zB)M=M(zB)' title='(zB)M=M(zB)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/65e/65ed654e5e556035500b9c400d301dbd-ffffff-000000-0.png' alt='z(BM)=(MB)z' title='z(BM)=(MB)z' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/cbe/cbe06499b6d4a95c43fcb781fd8330b9-ffffff-000000-0.png' alt='z(BM)=(BM)z' title='z(BM)=(BM)z' class='latex' />
<p><b>3-7</b><br />
<img src='http://danboykis.com/wp-content/latex/0a5/0a5ae882c542fed3e6945297e30bde97-ffffff-000000-0.png' alt='\begin{pmatrix} 2 &amp; 2-i  \\ 2+i &amp; -2 \end{pmatrix} \frac{1}{9}\begin{pmatrix} 2 &amp; 2-i  \\ 2+i &amp; -2 \end{pmatrix}=\frac{1}{9}\begin{pmatrix} 9 &amp; 0  \\ 0 &amp; 9 \end{pmatrix}=\begin{pmatrix} 1 &amp; 0  \\ 0 &amp; 1 \end{pmatrix}' title='\begin{pmatrix} 2 &amp; 2-i  \\ 2+i &amp; -2 \end{pmatrix} \frac{1}{9}\begin{pmatrix} 2 &amp; 2-i  \\ 2+i &amp; -2 \end{pmatrix}=\frac{1}{9}\begin{pmatrix} 9 &amp; 0  \\ 0 &amp; 9 \end{pmatrix}=\begin{pmatrix} 1 &amp; 0  \\ 0 &amp; 1 \end{pmatrix}' class='latex' /></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/10/qmismf-chap-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QMISMF: Chapter 2</title>
		<link>http://danboykis.com/2009/10/qmismf-chapter-2/</link>
		<comments>http://danboykis.com/2009/10/qmismf-chapter-2/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 00:13:02 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[qmismf]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1929</guid>
		<description><![CDATA[2-1: > (+ 3-i 2+4i) 5+3i > (+ 1+3i 2) 3+3i > (- -5+2i 2+2i) -7 > (+ -2+i 2+2i) +3i > (* 3-i 2+4i) 10+10i > (* 1+3i 2) 2+6i > (* 0+i 1+3i) -3+i > (* -5+2i 2+3i) -16-11i > (* 2+3i -2+3i) -13 > (* 2+3i 3+2i) +13i 2-2: 2-3: 2-4: 2-5: [...]]]></description>
			<content:encoded><![CDATA[<p><strong>2-1:</strong></p>
<p>> (+ 3-i 2+4i)<br />
5+3i<br />
> (+ 1+3i 2)<br />
3+3i<br />
> (- -5+2i 2+2i)<br />
-7<br />
> (+ -2+i 2+2i)<br />
+3i<br />
> (* 3-i 2+4i)<br />
10+10i<br />
> (* 1+3i 2)<br />
2+6i<br />
> (* 0+i 1+3i)<br />
-3+i<br />
> (* -5+2i 2+3i)<br />
-16-11i<br />
> (* 2+3i -2+3i)<br />
-13<br />
> (* 2+3i 3+2i)<br />
+13i</p>
<p><strong>2-2:</strong></p>
<img src='http://danboykis.com/wp-content/latex/a4b/a4b0c04031d1d0a567c63e2df9536f64-ffffff-000000-0.png' alt='z^{-1}=\frac{1}{x^2+y^2}(x+iy)' title='z^{-1}=\frac{1}{x^2+y^2}(x+iy)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/e20/e2084b4ee8eba672db2f35448135b468-ffffff-000000-0.png' alt='\left(\frac{1}{i}\right)^{-1} \rightarrow 0-i=\frac{1}{1}(i)=i' title='\left(\frac{1}{i}\right)^{-1} \rightarrow 0-i=\frac{1}{1}(i)=i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/eea/eea746f412d730af841f87a1f376551a-ffffff-000000-0.png' alt='i \cdot \frac{1}{i}= 1' title='i \cdot \frac{1}{i}= 1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/8f3/8f3289c0287c77560f357c0bebe99044-ffffff-000000-0.png' alt='\left(\frac{1}{-i}\right)^{-1} \rightarrow \frac{-i}{-1} = i = \frac{1}{1}(-i)=-i' title='\left(\frac{1}{-i}\right)^{-1} \rightarrow \frac{-i}{-1} = i = \frac{1}{1}(-i)=-i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/eb9/eb92ed123099619700271fe2cf739a21-ffffff-000000-0.png' alt=' -i \cdot \frac{1}{-i}= 1' title=' -i \cdot \frac{1}{-i}= 1' class='latex' />
<p><strong>2-3:</strong></p>
<img src='http://danboykis.com/wp-content/latex/2af/2af086c86286b078c8b28e16d066b5ad-ffffff-000000-0.png' alt='i^*i = -i \cdot i = 1' title='i^*i = -i \cdot i = 1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/b51/b51c7f75513ddf8495d488804ec09b56-ffffff-000000-0.png' alt='(-i)^*(-i)= i \cdot -i = 1' title='(-i)^*(-i)= i \cdot -i = 1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/78c/78c901ef73c3ea3641e076e7e070fdaf-ffffff-000000-0.png' alt='|i|^2=(i^*i)=1' title='|i|^2=(i^*i)=1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/a3b/a3bc5c8dc465140e8a736eeb570bc494-ffffff-000000-0.png' alt='|-i|^2=\left( (-i)^*(-i) \right)=1' title='|-i|^2=\left( (-i)^*(-i) \right)=1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/5f8/5f84cfa4f5f03e1932f1600d3e01c189-ffffff-000000-0.png' alt='|i| = \sqrt{i^*i} = \sqrt{-i \cdot i} = 1' title='|i| = \sqrt{i^*i} = \sqrt{-i \cdot i} = 1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/2b1/2b1df09dfa356bbe8eae51c84ae0f791-ffffff-000000-0.png' alt='|-i| = \sqrt{(-i)^*(-i)}= \sqrt{i \cdot -i} = 1' title='|-i| = \sqrt{(-i)^*(-i)}= \sqrt{i \cdot -i} = 1' class='latex' />
<p><strong>2-4:</strong></p>
<img src='http://danboykis.com/wp-content/latex/747/74715efb63ca3ba12e9f79d00ced448f-ffffff-000000-0.png' alt='z=3+4i' title='z=3+4i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/ef7/ef7bfb7e58627c20069a5898614fce6c-ffffff-000000-0.png' alt='z^* = 3-4i' title='z^* = 3-4i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/93c/93c13e1d04b2b32b6c516da8ba754f8f-ffffff-000000-0.png' alt='z^*z = (3-4i)(3+4i) = 25' title='z^*z = (3-4i)(3+4i) = 25' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/f11/f11a5ae573a34b533dac51313cf81cf3-ffffff-000000-0.png' alt='|z| = \sqrt{z^*z} = \sqrt{25} = 5' title='|z| = \sqrt{z^*z} = \sqrt{25} = 5' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/bd1/bd10c7d4bf892505ddf6ef7891cf8367-ffffff-000000-0.png' alt='z^2 = z \cdot z = (3+4i)(3+4i) = -7+24i' title='z^2 = z \cdot z = (3+4i)(3+4i) = -7+24i' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/1c8/1c8860b6f12d600e17168da54ac0c3ba-ffffff-000000-0.png' alt='\frac{1}{z} = \frac{1}{z} \cdot \frac{z^*}{z^*} = \frac{z^*}{zz^*} = \frac{3-4i}{25}' title='\frac{1}{z} = \frac{1}{z} \cdot \frac{z^*}{z^*} = \frac{z^*}{zz^*} = \frac{3-4i}{25}' class='latex' />
<p><strong>2-5:</strong></p>
<img src='http://danboykis.com/wp-content/latex/79f/79f42bc0e9979a2984d5d86c51d658d2-ffffff-000000-0.png' alt='|w+z| &lt; |w| + |z|' title='|w+z| &lt; |w| + |z|' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/a36/a363827a0be940ce55b764a89a0b97c9-ffffff-000000-0.png' alt='|3+4i| &lt; |3| + |4i|' title='|3+4i| &lt; |3| + |4i|' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/d3b/d3b7b26827272d3491ec0629f3dc3599-ffffff-000000-0.png' alt='5 &lt; 7' title='5 &lt; 7' class='latex' />
<p><strong>2-6:</strong></p>
<img src='http://danboykis.com/wp-content/latex/e58/e58b38fc09ffc2004aa5150a2c192777-ffffff-000000-0.png' alt='\sqrt{z} = \sqrt{\frac{\sqrt{x^2+y^2}}{2}} \cdot \left( \sqrt{1 + \frac{x}{\sqrt{x^2+y^2}}} + i\sqrt{1 - \frac{x}{\sqrt{x^2+y^2}}} \right)' title='\sqrt{z} = \sqrt{\frac{\sqrt{x^2+y^2}}{2}} \cdot \left( \sqrt{1 + \frac{x}{\sqrt{x^2+y^2}}} + i\sqrt{1 - \frac{x}{\sqrt{x^2+y^2}}} \right)' class='latex' /><br />
for <img src='http://danboykis.com/wp-content/latex/d8d/d8d908bbbf4187f45036660078366a0f-ffffff-000000-0.png' alt='y \ge 0' title='y \ge 0' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/cbd/cbdfda81dc6ecab559f85544780bca94-ffffff-000000-0.png' alt='\sqrt{z} = \sqrt{\frac{\sqrt{x^2+y^2}}{2}} \cdot \left( -\sqrt{1 + \frac{x}{\sqrt{x^2+y^2}}} + i\sqrt{1 - \frac{x}{\sqrt{x^2+y^2}}} \right)' title='\sqrt{z} = \sqrt{\frac{\sqrt{x^2+y^2}}{2}} \cdot \left( -\sqrt{1 + \frac{x}{\sqrt{x^2+y^2}}} + i\sqrt{1 - \frac{x}{\sqrt{x^2+y^2}}} \right)' class='latex' /><br />
for <img src='http://danboykis.com/wp-content/latex/1cc/1cc38adee46fab836f54737b1df4317b-ffffff-000000-0.png' alt='y \le 0' title='y \le 0' class='latex' />
<img src='http://danboykis.com/wp-content/latex/c1b/c1ba6570c9511072da3201bf2c171630-ffffff-000000-0.png' alt='\sqrt{i} = \sqrt{0+1i} = \sqrt{\frac{\sqrt{0^2+1^2}}{2}} \cdot \left( \sqrt{1 + \frac{0}{\sqrt{0^2+1^2}}} + i\sqrt{1 - \frac{0}{\sqrt{0^2+1^2}}} \right)' title='\sqrt{i} = \sqrt{0+1i} = \sqrt{\frac{\sqrt{0^2+1^2}}{2}} \cdot \left( \sqrt{1 + \frac{0}{\sqrt{0^2+1^2}}} + i\sqrt{1 - \frac{0}{\sqrt{0^2+1^2}}} \right)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/b9c/b9c9166a041144bf6bc79954dba64009-ffffff-000000-0.png' alt='\sqrt{i} = \sqrt{0+1i} = \sqrt{\frac{1}{2}} \cdot (1+i) = \sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}' title='\sqrt{i} = \sqrt{0+1i} = \sqrt{\frac{1}{2}} \cdot (1+i) = \sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/40f/40f7c07674450d856d94ca9df2188ac2-ffffff-000000-0.png' alt='\left(\sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}\right)^2 = \frac{1}{2} + i - \frac{1}{2} = i' title='\left(\sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}\right)^2 = \frac{1}{2} + i - \frac{1}{2} = i' class='latex' />
<img src='http://danboykis.com/wp-content/latex/588/588e2c3fd0609c9dc703635c44c2ea3d-ffffff-000000-0.png' alt='\sqrt{-i} = \sqrt{0-1i} = \sqrt{\frac{\sqrt{0^2+(-1)^2}}{2}} \cdot \left( -\sqrt{1 + \frac{0}{\sqrt{0^2+(-1)^2}}} + i\sqrt{1 - \frac{0}{\sqrt{0^2+(-1)^2}}} \right)' title='\sqrt{-i} = \sqrt{0-1i} = \sqrt{\frac{\sqrt{0^2+(-1)^2}}{2}} \cdot \left( -\sqrt{1 + \frac{0}{\sqrt{0^2+(-1)^2}}} + i\sqrt{1 - \frac{0}{\sqrt{0^2+(-1)^2}}} \right)' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/c2d/c2d1923defaf1d524bc7f3858c905a5c-ffffff-000000-0.png' alt='\sqrt{-i} = \sqrt{0-1i} = \sqrt{\frac{1}{2}} \cdot (-1+i) = -\sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}' title='\sqrt{-i} = \sqrt{0-1i} = \sqrt{\frac{1}{2}} \cdot (-1+i) = -\sqrt{\frac{1}{2}}+i\sqrt{\frac{1}{2}}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/83b/83bb3cedff24015bd5647f48da35cd8e-ffffff-000000-0.png' alt='\left(- \sqrt{\frac{1}{2}}+i \sqrt{\frac{1}{2}}\right) \cdot \left(- \sqrt{\frac{1}{2}}+i \sqrt{\frac{1}{2}}\right)=\frac{1}{2}-i-\frac{1}{2}=-i' title='\left(- \sqrt{\frac{1}{2}}+i \sqrt{\frac{1}{2}}\right) \cdot \left(- \sqrt{\frac{1}{2}}+i \sqrt{\frac{1}{2}}\right)=\frac{1}{2}-i-\frac{1}{2}=-i' class='latex' />
<p><strong>2-7:</strong></p>
<p><img src='http://danboykis.com/wp-content/latex/403/403cad4d81b4cb3d689ff9f756a3ae73-ffffff-000000-0.png' alt='z=-\frac{b}{2a} \pm \sqrt{\left(\frac{b}{2a}\right)^2 - \frac{c}{a}}' title='z=-\frac{b}{2a} \pm \sqrt{\left(\frac{b}{2a}\right)^2 - \frac{c}{a}}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/6aa/6aa55159762cc5ffff0ccf60b32366cf-ffffff-000000-0.png' alt='z=-\frac{b}{2a} \pm \sqrt{\frac{b^2-4ac}{2^2a^2}}' title='z=-\frac{b}{2a} \pm \sqrt{\frac{b^2-4ac}{2^2a^2}}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/dff/dff356ef18de2e0fb1ea01ca8a31973f-ffffff-000000-0.png' alt='z=-\frac{b}{2a} \pm \frac{1}{2a}\sqrt{b^2-4ac}' title='z=-\frac{b}{2a} \pm \frac{1}{2a}\sqrt{b^2-4ac}' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/c19/c19dd66a23dd9750b81f631b1393fb60-ffffff-000000-0.png' alt='z=\frac{-b \pm \sqrt{b^2-4ac}}{2a}' title='z=\frac{-b \pm \sqrt{b^2-4ac}}{2a}' class='latex' /> since the above is now in the usual form of the <a href="http://en.wikipedia.org/wiki/Quadratic_equation">quadratic formula</a> it is clear z is a solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/10/qmismf-chapter-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.38 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-38-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-38-of-sicp/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 20:49:47 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1839</guid>
		<description><![CDATA[Exercise 2.38: The accumulate procedure is also known as fold-right, because it combines the first element of the sequence with the result of combining all the elements to the right. There is also a fold-left, which is similar to fold-right, except that it combines elements working in the opposite direction: &#40;define &#40;fold-left op initial sequence&#41; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.38:</strong>  The accumulate procedure is also known as fold-right, because it combines the first element of the sequence with the result of combining all the elements to the right. There is also a fold-left, which is similar to fold-right, except that it combines elements working in the opposite direction:</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>fold-left op initial sequence<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>iter result rest<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span>? rest<span style="color: #66cc66;">&#41;</span>
        result
        <span style="color: #66cc66;">&#40;</span>iter <span style="color: #66cc66;">&#40;</span>op result <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>iter initial sequence<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>What are the values of</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>fold-right<span style="color: #66cc66;"> / </span><span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><em>3/2</em></p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>fold-left<span style="color: #66cc66;"> / </span><span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><em>1/6</em></p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>fold-right <span style="color: #b1b100;">list</span> <span style="color: #b1b100;">nil</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><em>(1 (2 (3 ())))</em></p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>fold-left <span style="color: #b1b100;">list</span> <span style="color: #b1b100;">nil</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><em>(((() 1) 2) 3)</em><br />
Give a property that op should satisfy to guarantee that <em>fold-right</em> and <em>fold-left</em> will produce the same values for any sequence.<br />
(fold-right op i (list a<sub>1</sub> a<sub>2</sub> a<sub>3</sub>))<br />
<img src='http://danboykis.com/wp-content/latex/c3c/c3c196b582958e0545af8052bd8d95e9-ffffff-000000-0.png' alt='(a_1 \cdot (a_2 \cdot ( a_3 \cdot i)))' title='(a_1 \cdot (a_2 \cdot ( a_3 \cdot i)))' class='latex' /><br />
(fold-left op i (list a<sub>1</sub> a<sub>2</sub> a<sub>3</sub>))<br />
<img src='http://danboykis.com/wp-content/latex/8bb/8bb357c4b5947a718acd763f7fe3c919-ffffff-000000-0.png' alt='(((i \cdot a_1) \cdot a_2) \cdot a_3)' title='(((i \cdot a_1) \cdot a_2) \cdot a_3)' class='latex' /></p>
<p>Any binary associative operation will be invariant under fold-right and fold-left.</p>
<p>Since 2.37 involved matrix multiplication which is associative, I will use that as an example.<br />
> (define i (list (list 1 0 0) (list 0 1 0) (list 0 0 1)))<br />
> (define a1 (list (list 8 3 2) (list 1 0 9) (list 3 4 5)))<br />
> (define a2 (list (list 5 6 7) (list 1 2 8) (list 6 7 7)))<br />
> (define a3 (list (list 6 7 9) (list 4 3 1) (list 3 4 5)))<br />
> (fold-left matrix-*-matrix i (list a1 a2 a3))<br />
<em>((884 965 1033) (840 900 950) (802 878 942))</em><br />
> (fold-right matrix-*-matrix i (list a1 a2 a3))<br />
<em>((884 965 1033) (840 900 950) (802 878 942))</em></p>
<p>Notice that <strong>i</strong> is the identity matrix because if it wasn't, I would also be testing commutativity of matrix product. Matrix product doesn't commute. If <strong>i</strong> is changed to another matrix <em>fold-left</em> and <em>fold-right</em> will return differing results.</p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-38-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.37 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-37-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-37-of-sicp/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 16:45:13 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1785</guid>
		<description><![CDATA[Exercise 2.37: Suppose we represent vectors as sequences of numbers, and matrices as sequences of vectors (the rows of the matrix). For example, the matrix is represented as the sequence ((1 2 3 4) (4 5 6 6) (6 7 8 9)). With this representation, we can use sequence operations to concisely express the basic [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.37:</strong>  Suppose we represent vectors <img src='http://danboykis.com/wp-content/latex/5c1/5c1b934f789b537871cb1649baa1d7a3-ffffff-000000-0.png' alt='v=(v_i)' title='v=(v_i)' class='latex' /> as sequences of numbers, and matrices <img src='http://danboykis.com/wp-content/latex/7aa/7aaba41df01c4bf7c97eca837c8f9df6-ffffff-000000-0.png' alt='m = (m_{ij})' title='m = (m_{ij})' class='latex' /> as sequences of vectors (the rows of the matrix). For example, the matrix</p>
<img src='http://danboykis.com/wp-content/latex/ddc/ddc461a03c0f686e7a35af339e43e6c9-ffffff-000000-0.png' alt='M = \begin{bmatrix} 1&amp;2&amp;3&amp;4\\ 4&amp;5&amp;6&amp;6\\ 6&amp;7&amp;8&amp;9 \end{bmatrix}' title='M = \begin{bmatrix} 1&amp;2&amp;3&amp;4\\ 4&amp;5&amp;6&amp;6\\ 6&amp;7&amp;8&amp;9 \end{bmatrix}' class='latex' />
<p>is represented as the sequence ((1 2 3 4) (4 5 6 6) (6 7 8 9)). With this representation, we can use sequence operations to concisely express the basic matrix and vector operations. These operations (which are described in any book on matrix algebra) are the following:</p>
<table border="0">
<tr>
<td>
<pre>(dot-product v w)</td>
<td>returns the sum <img src='http://danboykis.com/wp-content/latex/889/8899dc20716102d6a8dca91ce99d0ed4-ffffff-000000-0.png' alt='\sum_{i} v_iw_i' title='\sum_{i} v_iw_i' class='latex' /></pre>
</td>
</tr>
<tr>
<td>
<pre>(matrix-*-vector m v)</td>
<td>returns the vector t, where <img src='http://danboykis.com/wp-content/latex/381/3811763a377a3e94b0fa75e611439d80-ffffff-000000-0.png' alt='t_i = \sum_{j} m_{ij}v_j' title='t_i = \sum_{j} m_{ij}v_j' class='latex' /></pre>
</td>
</tr>
<tr>
<td>
<pre>(matrix-*-matrix m n)</td>
<td>returns the matrix p where, <img src='http://danboykis.com/wp-content/latex/ef2/ef29899938aeb60d8fbd99b3c2b9244b-ffffff-000000-0.png' alt='p_{ij} = \sum_{k} m_{ik}n_{kj}' title='p_{ij} = \sum_{k} m_{ik}n_{kj}' class='latex' /></pre>
</td>
</tr>
<tr>
<td>
<pre>(transpose m)</td>
<td>returns the matrix n where, <img src='http://danboykis.com/wp-content/latex/637/637efa6809637002ec5c7d7fd16512f2-ffffff-000000-0.png' alt='n_{ij} = m_{ji}' title='n_{ij} = m_{ji}' class='latex' /></pre>
</td>
</tr>
</table>
<p>We can define the dot product as:</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>dot-product v w<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate<span style="color: #66cc66;"> + </span><span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span>map<span style="color: #66cc66;"> * </span>v w<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Fill in the missing expressions in the following procedures for computing the other matrix operations. (The procedure accumulate-n is defined in exercise 2.36.)</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>matrix-*-vector m v<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>map <span style="color: #66cc66;">&lt;</span>??<span style="color: #66cc66;">&gt;</span> m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>transpose mat<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate-n <span style="color: #66cc66;">&lt;</span>??<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>??<span style="color: #66cc66;">&gt;</span> mat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>matrix-*-matrix m n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>cols <span style="color: #66cc66;">&#40;</span>transpose n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>map <span style="color: #66cc66;">&lt;</span>??<span style="color: #66cc66;">&gt;</span> m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p><strong>Solutions:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>accumulate fn init-<span style="color: #b1b100;">value</span> items<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span>? items<span style="color: #66cc66;">&#41;</span>
    init-<span style="color: #b1b100;">value</span>
    <span style="color: #66cc66;">&#40;</span>fn <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> items<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>accumulate fn init-<span style="color: #b1b100;">value</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> items<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>accumulate-n op init seqs<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span>? <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> seqs<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span>accumulate op init <span style="color: #66cc66;">&#40;</span>map <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> e<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> seqs<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>accumulate-n op init <span style="color: #66cc66;">&#40;</span>map <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> e<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> seqs<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>matrix-*-vector m v<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>map <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>row<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>dot-product row v<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>transpose mat<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate-n <span style="color: #b1b100;">cons</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> mat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>matrix-*-matrix m n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>cols <span style="color: #66cc66;">&#40;</span>transpose n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>map <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>row<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>matrix-*-vector cols row<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
         m<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>> (define n (list (list 1 2) (list 3 4)))<br />
> (matrix-*-vector n (list 10 20))<br />
<em>(50 110)</em><br />
> (transpose n)<br />
<em>((1 3) (2 4))</em><br />
> (define m (list (list 1 2 3) (list 4 5 6) (list 7 8 9)))<br />
> (matrix-*-matrix m m)<br />
<em>((30 36 42) (66 81 96) (102 126 150))</em><br />
> (define q (list (list 9 1) (list 3 4) (list 6 7) (list 1 8)))<br />
> (matrix-*-matrix (list (list 1 2 3 4) (list 5 6 7 8)) q)<br />
<em>((37 62) (113 142))</em></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-37-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.34 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-34-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-34-of-sicp/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 22:30:38 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1745</guid>
		<description><![CDATA[Exercise 2.34: Evaluating a polynomial in x at a given value of x can be formulated as an accumulation. We evaluate the polynomial using a well-known algorithm called Horner's rule, which structures the computation as In other words, we start with an, multiply by x, add an-1, multiply by x, and so on, until we [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.34:</strong>  Evaluating a polynomial in x at a given value of x can be formulated as an accumulation. We evaluate the polynomial<br />
<img src='http://danboykis.com/wp-content/latex/1ab/1ab5a4e22d415d69d35556d297c64fff-ffffff-000000-0.png' alt='p(x) = a_n x^n + a_{n-1}x^{n-1} + \cdots + a_1 x+ a_0' title='p(x) = a_n x^n + a_{n-1}x^{n-1} + \cdots + a_1 x+ a_0' class='latex' /><br />
using a well-known algorithm called Horner's rule, which structures the computation as<br />
<img src='http://danboykis.com/wp-content/latex/453/453e0b935700dceefb8dd0ca862ae4d6-ffffff-000000-0.png' alt='(\cdots (a_n x + a_{n-1})x + \cdots + a_1)x + a_0' title='(\cdots (a_n x + a_{n-1})x + \cdots + a_1)x + a_0' class='latex' /><br />
In other words, we start with an, multiply by x, add a<sub>n-1</sub>, multiply by x, and so on, until we reach a<sub>0</sub>. Fill in the following template to produce a procedure that evaluates a polynomial using Horner's rule. Assume that the coefficients of the polynomial are arranged in a sequence, from a<sub>0</sub> through a<sub>n</sub>.</p>
<pre>
(define (horner-eval x coefficient-sequence)
  (accumulate (lambda (this-coeff higher-terms) &lt;??&gt;)
              0
              coefficient-sequence))
</pre>
<p>For example, to compute <img src='http://danboykis.com/wp-content/latex/3fb/3fb024561dafbde469da88d0c11b1ede-ffffff-000000-0.png' alt='1 + 3x + 5x^3 + x^5' title='1 + 3x + 5x^3 + x^5' class='latex' /> at <img src='http://danboykis.com/wp-content/latex/a12/a124de930ea74cbb3991c742ba7504d4-ffffff-000000-0.png' alt='x = 2' title='x = 2' class='latex' /> you would evaluate</p>
<pre>(horner-eval 2 (list 1 3 0 5 0 1))</pre>
<p>I included a non-abstracted version of Horner's method for clarity.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>accumulate fn init-<span style="color: #b1b100;">value</span> items<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span>? items<span style="color: #66cc66;">&#41;</span>
    init-<span style="color: #b1b100;">value</span>
    <span style="color: #66cc66;">&#40;</span>fn <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> items<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span>accumulate fn init-<span style="color: #b1b100;">value</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> items<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>he x coeff-seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span>? coeff-seq<span style="color: #66cc66;">&#41;</span>
    <span style="color: #cc66cc;">0</span>
    <span style="color: #66cc66;">&#40;</span>+ <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> coeff-seq<span style="color: #66cc66;">&#41;</span>
       <span style="color: #66cc66;">&#40;</span>* x <span style="color: #66cc66;">&#40;</span>he x <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> coeff-seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>horner-<span style="color: #b1b100;">eval</span> x coeff-seq<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>accumulate <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>this-coeff higher-terms<span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#40;</span>+ this-coeff <span style="color: #66cc66;">&#40;</span>* x higher-terms<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
              <span style="color: #cc66cc;">0</span>
              coeff-seq<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>> (horner-eval 2 (list 1 3 0 5 0 1))<br />
<em>79</em><br />
> (horner-eval 2 (list 1))<br />
<em>1</em><br />
> (horner-eval 2 (list ))<br />
<em>0</em><br />
> (horner-eval 2 (list 1 1))<br />
<em>3</em></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-34-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.32 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-32-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-32-of-sicp/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 01:09:10 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1689</guid>
		<description><![CDATA[Exercise 2.32: We can represent a set as a list of distinct elements, and we can represent the set of all subsets of the set as a list of lists. For example, if the set is (1 2 3), then the set of all subsets is (() (3) (2) (2 3) (1) (1 3) (1 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.32:</strong>  We can represent a set as a list of distinct elements, and we can represent the set of all subsets of the set as a list of lists. For example, if the set is (1 2 3), then the set of all subsets is (() (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3)). Complete the following definition of a procedure that generates the set of subsets of a set and give a clear explanation of why it works:</p>
<pre>
(define (subsets s)
  (if (null? s)
      (list nil)
      (let ((rest (subsets (cdr s))))
        (append rest (map &lt;??&gt; rest)))))
</pre>
<p>In order for me to understand what is going on here, I understand how powersets are constructed first and then derive this function.</p>
<p>This program wants to create what is called a <a href="http://en.wikipedia.org/wiki/Power_set">powerset</a>.<br />
If S is a set of {a<sub>1</sub>,a<sub>2</sub>,a<sub>3</sub>}<br />
<img src='http://danboykis.com/wp-content/latex/055/055a950f385a0e2b8447c66e02362cba-ffffff-000000-0.png' alt='\mathcal{P}(S) = \{\{\} \{a_3\} \{a_2\} \{a_2 a_3\} \{a_1\} \{a_1 a_3\} \{a_1 a_2\} \{a_1 a_2 a_3\}\}' title='\mathcal{P}(S) = \{\{\} \{a_3\} \{a_2\} \{a_2 a_3\} \{a_1\} \{a_1 a_3\} \{a_1 a_2\} \{a_1 a_2 a_3\}\}' class='latex' /><br />
The reasoning to construct a powerset is similar to the way the count change example is thought about.<br />
Create a powerset for the <em>cdr</em> elements without using the <em>car </em>element, cons the <em>car</em> element with powerset of <em>cdr</em> elements. To the result append powerset of <em>cdr elements</em>.</p>
<p>When the arguments are an element and a set inject the element into every element of the set creating a new set. Append that result with the original powerset injected into. </p>
<pre>
P{<img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}
{<img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}

P{a<sub>1</sub>}
(append (inject a<sub>1</sub> P{<img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}) P{<img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />})
{{a<sub>1</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}

P{a<sub>1</sub> a<sub>2</sub>}
(append (inject a<sub>1</sub> P{a<sub>2</sub>}) P{a<sub>2</sub>})
(append {{a<sub>1</sub> a<sub>2</sub>} {a<sub>1</sub>}} P{a<sub>2</sub>})
{{a<sub>1</sub> a<sub>2</sub>} {a<sub>1</sub>} {a<sub>2</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}

P{a<sub>1</sub> a<sub>2</sub> a<sub>3</sub>}
(append (inject a<sub>1</sub> P{a<sub>2</sub> a<sub>3</sub>}) P{a<sub>2</sub> a<sub>3</sub>})
(append (inject a<sub>1</sub> (apend (inject a<sub>2</sub> P{a<sub>3</sub>}) P{3}))
        (append (inject a<sub>2</sub> P{a<sub>3</sub>}) P{a<sub>3</sub>}))

(append (inject a<sub>1</sub> (append (inject a<sub>2</sub> {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}) {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}))
        (append (inject a<sub>2</sub> {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}) {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}))

(append (inject a<sub>1</sub> (append {{a<sub>3</sub> a<sub>2</sub>} {a<sub>2</sub>}} {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}))
        (append (inject a<sub>2</sub> {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}) {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}))

(append (inject a<sub>1</sub> {{a<sub>3</sub> a<sub>2</sub>} {a<sub>2</sub>} {a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />})
        (append {{a<sub>3</sub> a<sub>2</sub>} {a<sub>2</sub>}} {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}))

(append {{a<sub>3</sub> a<sub>2</sub> a<sub>1</sub> } {a<sub>2</sub> a<sub>1</sub>} {a<sub>3</sub> a<sub>1</sub>} {a<sub>1</sub>}}
        (append {{a<sub>3</sub> a<sub>2</sub>} {a<sub>2</sub>}} {{a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}))

(append {{a<sub>3</sub> a<sub>2</sub> a<sub>1</sub> } {a<sub>2</sub> a<sub>1</sub>} {a<sub>3</sub> a<sub>1</sub>} {a<sub>1</sub>}}
        {{a<sub>3</sub> a<sub>2</sub>} {a<sub>2</sub>} {a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />})

{{a<sub>3</sub> a<sub>2</sub> a<sub>1</sub>} {a<sub>2</sub> a<sub>1</sub>} {a<sub>3</sub> a<sub>1</sub>} {a<sub>1</sub>} {a<sub>3</sub> a<sub>2</sub>} {a<sub>2</sub>} {a<sub>3</sub>} <img src='http://danboykis.com/wp-content/latex/3b6/3b648d0253c4c3feb8df7f91a36bab96-ffffff-000000-0.png' alt='\varnothing' title='\varnothing' class='latex' />}
</pre>
<p>Here is the process above in code:</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>powerset ss<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span>? ss<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> <span style="color: #66cc66;">&#40;</span>inject <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> ss<span style="color: #66cc66;">&#41;</span> 
                    <span style="color: #66cc66;">&#40;</span>powerset <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> ss<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> 
            <span style="color: #66cc66;">&#40;</span>powerset <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> ss<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>inject s ss<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>map <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>elem<span style="color: #66cc66;">&#41;</span>
           <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> s elem<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
       ss<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Finally:</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>subsets s<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">null</span>? s<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> '<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>rest <span style="color: #66cc66;">&#40;</span>subsets <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cdr</span> s<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span> rest <span style="color: #66cc66;">&#40;</span>map <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>elem<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">car</span> s<span style="color: #66cc66;">&#41;</span> elem<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> 
                          rest<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>It's worth noticing that because of the let expression <em>(subsets (cdr s))</em> is only called once, as opposed to twice in my earlier derivation.</p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-32-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.16 of SICP</title>
		<link>http://danboykis.com/2009/08/exercise-2-16-of-sicp/</link>
		<comments>http://danboykis.com/2009/08/exercise-2-16-of-sicp/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 23:46:51 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1468</guid>
		<description><![CDATA[Exercise 2.16: Explain, in general, why equivalent algebraic expressions may lead to different answers. Can you devise an interval-arithmetic package that does not have this shortcoming, or is this task impossible? (Warning: This problem is very difficult.) The errors are a lot tighter for par2 than par1. The reason that this is true is due [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.16:</strong>  Explain, in general, why equivalent algebraic expressions may lead to different answers. Can you devise an interval-arithmetic package that does not have this shortcoming, or is this task impossible? (Warning: This problem is very difficult.) </p>
<p>The errors are a lot tighter for <strong>par2 </strong>than <strong>par1</strong>. The reason that this is true is due to the fact that any operation between two intervals will increase errors. If two algebraically equivalent statements are evaluated, the statement with the least operations between intervals will produce less errors. </p>
<p>Here's a slightly exaggerated example:<br />
<img src='http://danboykis.com/wp-content/latex/e38/e38bf176fca56e1d3531dffb8ae29514-ffffff-000000-0.png' alt='A = 10 \pm 0.1' title='A = 10 \pm 0.1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/868/868c5f5017fac55ab55d7021f471e11f-ffffff-000000-0.png' alt='A = \frac{A^7}{A^6} = \frac{A \cdot A \cdot A \cdot A \cdot A \cdot A \cdot A}{A \cdot A \cdot A \cdot A \cdot A \cdot A}' title='A = \frac{A^7}{A^6} = \frac{A \cdot A \cdot A \cdot A \cdot A \cdot A \cdot A}{A \cdot A \cdot A \cdot A \cdot A \cdot A}' class='latex' /></p>
<p>> (define A (make-center-percent 10 1))<br />
> (print A)<br />
<em>[10.,.9999999999999963]</em><br />
> (print (div-interval (interval-pow A 7) (interval-pow A 6)))<br />
<em>[10.084120477031101,12.92768447766068]</em></p>
<p>The most noticeable difference is between percent errors of 1% and 13%. Even though the fraction is algebraically equivalent to <em>A</em> evaluating the intervals gives very different answers.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>interval-pow x n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>square i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>mul-interval i i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span>remainder n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>square <span style="color: #66cc66;">&#40;</span>interval-pow x <span style="color: #66cc66;">&#40;</span>/ n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>remainder n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>mul-interval x <span style="color: #66cc66;">&#40;</span>interval-pow x <span style="color: #66cc66;">&#40;</span>- n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>In order to devise a system that doesn't have this problem would mean it would have to be smart enough to detect duplicate entries and rewrite them in a more interval arithmetic efficient manner. At a minimum it would have to analyze code of this form:
<pre><em>(div-interval (interval-pow A 7) (interval-pow A 6))</em></pre>
<p> and reduce it to <em>A</em> and than evaluate it.</p>
<p>Transforming the resistor example is even tougher.</p>
<pre>
(define (par1 r1 r2)
  (div-interval (mul-interval r1 r2)
                (add-interval r1 r2)))
(define (par2 r1 r2)
  (let ((one (make-interval 1 1)))
    (div-interval one
                  (add-interval (div-interval one r1)
                                (div-interval one r2)))))
</pre>
<p>The program would have to recognize division and simplify it by dividing the numerator and denominator by r1 and r2. Both the exponent and parallel resistor examples would have to be transformed symbolically since simplifying arithmetically would only introduce errors. I do not think it is feasible to write a program like this with the current lisp knowledge learned in the book so far.</p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/08/exercise-2-16-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.15 of SICP</title>
		<link>http://danboykis.com/2009/07/exercise-2-15-of-sicp/</link>
		<comments>http://danboykis.com/2009/07/exercise-2-15-of-sicp/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 22:13:38 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[lisp]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1447</guid>
		<description><![CDATA[Exercise 2.15: Eva Lu Ator, another user, has also noticed the different intervals computed by different but algebraically equivalent expressions. She says that a formula to compute with intervals using Alyssa's system will produce tighter error bounds if it can be written in such a form that no variable that represents an uncertain number is [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.15:</strong>  Eva Lu Ator, another user, has also noticed the different intervals computed by different but algebraically equivalent expressions. She says that a formula to compute with intervals using Alyssa's system will produce tighter error bounds if it can be written in such a form that no variable that represents an uncertain number is repeated. Thus, she says, par2 is a "better'' program for parallel resistances than par1. Is she right? Why? </p>
<p>> (print (div-interval (make-center-percent 6.8 1) (make-center-percent 6.8 1)))<br />
<em>[1.0002000200020003,1.9998000199979908]</em><br />
> (print (div-interval (make-center-percent 6.8 .1) (make-center-percent 6.8 .1)))<br />
<em>[1.000002000002,.19999980000021655]</em></p>
<p>> (print (div-interval (make-center-percent 6.8 .1) (make-center-percent 3.4 .1)))<br />
<em>[2.000004000004,.19999980000021655]</em><br />
> (print (div-interval (make-center-percent 6.8 .1) (make-center-percent 1.7 .1)))<br />
<em>[4.000008000008,.19999980000021655]</em><br />
> (print (div-interval (make-center-percent 6.8 .1) (make-center-percent 1.7 .01)))<br />
<em>[4.000000440000004,.1099999890000035]</em></p>
<p>> (print (par1 (make-center-percent 6.8 .1) (make-center-percent 1.7 .01)))<br />
<em>[1.3600022771855311,.19199981581619266]</em><br />
> (print (par2 (make-center-percent 6.8 .1) (make-center-percent 1.7 .01)))<br />
<em>[1.3599998237438813,.028000014256019334]</em></p>
<p>> (print (par1 (make-center-percent 6.8 .1) (make-center-percent 6.8 .1)))<br />
<em>[3.4000136000136,.2999992000024115]</em><br />
> (print (par2 (make-center-percent 6.8 .1) (make-center-percent 6.8 .1)))<br />
<em>[3.4000000000000004,.10000000000000857]</em></p>
<p>> (print (par1 (make-center-percent 6.8 10) (make-center-percent 4.7 5)))<br />
<em>[2.844199964577264,<strong>22.613352145193346</strong>]</em><br />
> (print (par2 (make-center-percent 6.8 10) (make-center-percent 4.7 5)))<br />
<em>[2.777440701636504,<strong>7.05260392723452</strong>]</em></p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>par1 r1 r2<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>div-interval <span style="color: #66cc66;">&#40;</span>mul-interval r1 r2<span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#40;</span>add-interval r1 r2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>par2 r1 r2<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>one <span style="color: #66cc66;">&#40;</span>make-interval <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> 
    <span style="color: #66cc66;">&#40;</span>div-interval one
                  <span style="color: #66cc66;">&#40;</span>add-interval <span style="color: #66cc66;">&#40;</span>div-interval one r1<span style="color: #66cc66;">&#41;</span>
                                <span style="color: #66cc66;">&#40;</span>div-interval one r2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Alyssa's system will produce tighter error bounds. The errors are a lot tighter for <strong>par2 </strong>than <strong>par1</strong>. The reason that this is true is due to the fact that any operation between two intervals will increase errors. If two algebraically equivalent statements are evaluated, the statement with the least operations between intervals will produce less errors. </p>
<p>Here's a slightly exaggerated example:<br />
<img src='http://danboykis.com/wp-content/latex/e38/e38bf176fca56e1d3531dffb8ae29514-ffffff-000000-0.png' alt='A = 10 \pm 0.1' title='A = 10 \pm 0.1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/868/868c5f5017fac55ab55d7021f471e11f-ffffff-000000-0.png' alt='A = \frac{A^7}{A^6} = \frac{A \cdot A \cdot A \cdot A \cdot A \cdot A \cdot A}{A \cdot A \cdot A \cdot A \cdot A \cdot A}' title='A = \frac{A^7}{A^6} = \frac{A \cdot A \cdot A \cdot A \cdot A \cdot A \cdot A}{A \cdot A \cdot A \cdot A \cdot A \cdot A}' class='latex' /></p>
<p>> (define A (make-center-percent 10 1))<br />
> (print A)<br />
<em>[10.,.9999999999999963]</em><br />
> (print (div-interval (interval-pow A 7) (interval-pow A 6)))<br />
<em>[10.084120477031101,12.92768447766068]</em></p>
<p>The most noticeable difference is between percent errors of 1% and 13%.</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>interval-pow x n<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>define <span style="color: #66cc66;">&#40;</span>square i<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>mul-interval i i<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span>remainder n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>square <span style="color: #66cc66;">&#40;</span>interval-pow x <span style="color: #66cc66;">&#40;</span>/ n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span>remainder n <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>mul-interval x <span style="color: #66cc66;">&#40;</span>interval-pow x <span style="color: #66cc66;">&#40;</span>- n <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/07/exercise-2-15-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exercise 2.13 of SICP</title>
		<link>http://danboykis.com/2009/07/exercise-2-13-of-sicp/</link>
		<comments>http://danboykis.com/2009/07/exercise-2-13-of-sicp/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 04:06:35 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[math]]></category>
		<category><![CDATA[SICP]]></category>

		<guid isPermaLink="false">http://danboykis.com/?p=1401</guid>
		<description><![CDATA[Exercise 2.13: Show that under the assumption of small percentage tolerances there is a simple formula for the approximate percentage tolerance of the product of two intervals in terms of the tolerances of the factors. You may simplify the problem by assuming that all numbers are positive. Since a>0 and b>0: Assuming and are small, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Exercise 2.13: </strong> Show that under the assumption of small percentage tolerances there is a simple formula for the approximate percentage tolerance of the product of two intervals in terms of the tolerances of the factors. You may simplify the problem by assuming that all numbers are positive. </p>
<img src='http://danboykis.com/wp-content/latex/403/4039672e6356ccedaa4163a48003dade-ffffff-000000-0.png' alt='(a-\epsilon_1,a+\epsilon_1) \cdot (b-\epsilon_2,b+\epsilon_2) ' title='(a-\epsilon_1,a+\epsilon_1) \cdot (b-\epsilon_2,b+\epsilon_2) ' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/b29/b299d26c1ebc376de9e24c8380dfb1bb-ffffff-000000-0.png' alt='(a+\epsilon_1)\cdot(b+\epsilon_2)=ab+a\epsilon_2+b\epsilon_1+\epsilon_1\epsilon_2' title='(a+\epsilon_1)\cdot(b+\epsilon_2)=ab+a\epsilon_2+b\epsilon_1+\epsilon_1\epsilon_2' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/686/6869f9bd9bfa3bbf2434e0bd2336be03-ffffff-000000-0.png' alt='(a+\epsilon_1)\cdot(b-\epsilon_2)=ab-a\epsilon_2+b\epsilon_1-\epsilon_1\epsilon_2' title='(a+\epsilon_1)\cdot(b-\epsilon_2)=ab-a\epsilon_2+b\epsilon_1-\epsilon_1\epsilon_2' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/fca/fca9d094d78d1de81e1fd19e3e3989ec-ffffff-000000-0.png' alt='(a-\epsilon_1)\cdot(b+\epsilon_2)=ab+a\epsilon_2-b\epsilon_1-\epsilon_1\epsilon_2' title='(a-\epsilon_1)\cdot(b+\epsilon_2)=ab+a\epsilon_2-b\epsilon_1-\epsilon_1\epsilon_2' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/eb9/eb982a06f37e8446b0f06b5c4419229d-ffffff-000000-0.png' alt='(a-\epsilon_1)\cdot(b-\epsilon_2)=ab-a\epsilon_2-b\epsilon_1+\epsilon_1\epsilon_2' title='(a-\epsilon_1)\cdot(b-\epsilon_2)=ab-a\epsilon_2-b\epsilon_1+\epsilon_1\epsilon_2' class='latex' />
<p>Since a>0 and b>0:<br />
<img src='http://danboykis.com/wp-content/latex/ae8/ae8a3671f758e9a951f12e11de9ae885-ffffff-000000-0.png' alt='(a+\epsilon_1)\cdot(b+\epsilon_2) \approx ab+ a\epsilon_2+b\epsilon_1+\epsilon_1\epsilon_2' title='(a+\epsilon_1)\cdot(b+\epsilon_2) \approx ab+ a\epsilon_2+b\epsilon_1+\epsilon_1\epsilon_2' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/6c3/6c3041ca0a6955f3cde83c68d91c6c75-ffffff-000000-0.png' alt='(a-\epsilon_1)\cdot(b-\epsilon_2) \approx ab -a\epsilon_2-b\epsilon_1+\epsilon_1\epsilon_2' title='(a-\epsilon_1)\cdot(b-\epsilon_2) \approx ab -a\epsilon_2-b\epsilon_1+\epsilon_1\epsilon_2' class='latex' /><br />
Assuming <img src='http://danboykis.com/wp-content/latex/84d/84d31c2e5d2d4da85cad02066135d05c-ffffff-000000-0.png' alt='\epsilon_1' title='\epsilon_1' class='latex' /> and <img src='http://danboykis.com/wp-content/latex/9d6/9d66cd9cb46444cc0fa6ae1195df1163-ffffff-000000-0.png' alt='\epsilon_2' title='\epsilon_2' class='latex' /> are small, the quantity <img src='http://danboykis.com/wp-content/latex/b8e/b8ef865973d1b03ba80325404ba5a61c-ffffff-000000-0.png' alt='\epsilon_1\epsilon_2' title='\epsilon_1\epsilon_2' class='latex' /> can be discarded.<br />
<img src='http://danboykis.com/wp-content/latex/bc2/bc23adb826f2b28aca13014ca95420bb-ffffff-000000-0.png' alt='(a+\epsilon_1)\cdot(b+\epsilon_2) \approx ab+a\epsilon_2+b\epsilon_1' title='(a+\epsilon_1)\cdot(b+\epsilon_2) \approx ab+a\epsilon_2+b\epsilon_1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/e22/e22a5b1957c7d679e77af5983af353af-ffffff-000000-0.png' alt='(a-\epsilon_1)\cdot(b-\epsilon_2) \approx ab-a\epsilon_2-b\epsilon_1' title='(a-\epsilon_1)\cdot(b-\epsilon_2) \approx ab-a\epsilon_2-b\epsilon_1' class='latex' /></p>
<p>Since we are interested in the tolerance terms:<br />
<img src='http://danboykis.com/wp-content/latex/928/928d0cb194725ef39796e0b5ffd12e9c-ffffff-000000-0.png' alt='(a+\epsilon_1)\cdot(b+\epsilon_2) \approx a\epsilon_2+b\epsilon_1' title='(a+\epsilon_1)\cdot(b+\epsilon_2) \approx a\epsilon_2+b\epsilon_1' class='latex' /><br />
<img src='http://danboykis.com/wp-content/latex/9c5/9c5d4605b17cb11b3027b8d515b2c5a6-ffffff-000000-0.png' alt='(a-\epsilon_1)\cdot(b-\epsilon_2) \approx -a\epsilon_2-b\epsilon_1' title='(a-\epsilon_1)\cdot(b-\epsilon_2) \approx -a\epsilon_2-b\epsilon_1' class='latex' /></p>
<p>The new product interval in terms of small tolerance terms looks like this:<br />
<img src='http://danboykis.com/wp-content/latex/2d3/2d3d077fb0c5a2905b92b6ff3a5505db-ffffff-000000-0.png' alt='[ab-(a\epsilon_2+b\epsilon_1),ab+(a\epsilon_2+b\epsilon_1)]' title='[ab-(a\epsilon_2+b\epsilon_1),ab+(a\epsilon_2+b\epsilon_1)]' class='latex' /></p>
]]></content:encoded>
			<wfw:commentRss>http://danboykis.com/2009/07/exercise-2-13-of-sicp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

