<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649</link>
    <title>MATLAB Central Newsreader - What happened to so simple Matlab code?</title>
    <description>Feed for thread: What happened to so simple Matlab code?</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Wed, 21 Nov 2007 09:11:12 -0500</pubDate>
      <title>What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402377</link>
      <author>crammer008</author>
      <description>Dear all, I have the following code and the corresponding results:&lt;br&gt;
+++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt;&amp;gt; aa = 0.005:0.01:0.025&lt;br&gt;
aa =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0050    0.0150    0.0250&lt;br&gt;
&amp;gt;&amp;gt; daa = diff(aa)&lt;br&gt;
daa =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0100    0.0100&lt;br&gt;
&amp;gt;&amp;gt; daa(1)-daa(2)&lt;br&gt;
ans =&lt;br&gt;
&amp;nbsp;&amp;nbsp;1.7347e-018&lt;br&gt;
++++++++++++++++++++++++++++++++++&lt;br&gt;
Obviously, we should have daa(1)-daa(2) = 0. Who can tell me why Matlab can not give the correct result? Thanks!</description>
    </item>
    <item>
      <pubDate>Wed, 21 Nov 2007 09:25:03 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402379</link>
      <author>Steve Amphlett</author>
      <description>crammer008 &amp;lt;luochao2000@hotmail.com&amp;gt; wrote in message &lt;br&gt;
&amp;lt;8220611.1195636303283.JavaMail.jakarta@nitrogen.mathforum.o&lt;br&gt;
rg&amp;gt;...&lt;br&gt;
&amp;gt; Dear all, I have the following code and the corresponding &lt;br&gt;
results:&lt;br&gt;
&amp;gt; +++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt; aa = 0.005:0.01:0.025&lt;br&gt;
&amp;gt; aa =&lt;br&gt;
&amp;gt;     0.0050    0.0150    0.0250&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt; daa = diff(aa)&lt;br&gt;
&amp;gt; daa =&lt;br&gt;
&amp;gt;     0.0100    0.0100&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt; daa(1)-daa(2)&lt;br&gt;
&amp;gt; ans =&lt;br&gt;
&amp;gt;   1.7347e-018&lt;br&gt;
&amp;gt; ++++++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; Obviously, we should have daa(1)-daa(2) = 0. Who can tell &lt;br&gt;
me why Matlab can not give the correct result? Thanks!&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Check out the FAQ.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://matlabwiki.mathworks.com/MATLAB_FAQ#Why_is_0.3-0.2-&quot;&gt;http://matlabwiki.mathworks.com/MATLAB_FAQ#Why_is_0.3-0.2-&lt;/a&gt;&lt;br&gt;
0.1_not_equal_to_zero_.28or_similar.29.3F</description>
    </item>
    <item>
      <pubDate>Wed, 21 Nov 2007 09:30:51 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402383</link>
      <author>Steve Amphlett</author>
      <description>&quot;Steve Amphlett&quot; &amp;lt;Firstname.Lastname@Where-I-Work.com&amp;gt; &lt;br&gt;
wrote in message &amp;lt;fi0thf$9p1$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; crammer008 &amp;lt;luochao2000@hotmail.com&amp;gt; wrote in message &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;lt;8220611.1195636303283.JavaMail.jakarta@nitrogen.mathforum.o&lt;br&gt;
&amp;gt; rg&amp;gt;...&lt;br&gt;
&amp;gt; &amp;gt; Dear all, I have the following code and the &lt;br&gt;
corresponding &lt;br&gt;
&amp;gt; results:&lt;br&gt;
&amp;gt; &amp;gt; +++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; &amp;gt; &amp;gt;&amp;gt; aa = 0.005:0.01:0.025&lt;br&gt;
&amp;gt; &amp;gt; aa =&lt;br&gt;
&amp;gt; &amp;gt;     0.0050    0.0150    0.0250&lt;br&gt;
&amp;gt; &amp;gt; &amp;gt;&amp;gt; daa = diff(aa)&lt;br&gt;
&amp;gt; &amp;gt; daa =&lt;br&gt;
&amp;gt; &amp;gt;     0.0100    0.0100&lt;br&gt;
&amp;gt; &amp;gt; &amp;gt;&amp;gt; daa(1)-daa(2)&lt;br&gt;
&amp;gt; &amp;gt; ans =&lt;br&gt;
&amp;gt; &amp;gt;   1.7347e-018&lt;br&gt;
&amp;gt; &amp;gt; ++++++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; &amp;gt; Obviously, we should have daa(1)-daa(2) = 0. Who can &lt;br&gt;
tell &lt;br&gt;
&amp;gt; me why Matlab can not give the correct result? Thanks!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Check out the FAQ.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;a href=&quot;http://matlabwiki.mathworks.com/MATLAB_FAQ#Why_is_0.3-0.2-&quot;&gt;http://matlabwiki.mathworks.com/MATLAB_FAQ#Why_is_0.3-0.2-&lt;/a&gt;&lt;br&gt;
&amp;gt; 0.1_not_equal_to_zero_.28or_similar.29.3F&lt;br&gt;
&lt;br&gt;
The URL got chopped up.  Try this:&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://matlabwiki.mathworks.com/MATLAB_FAQ&quot;&gt;http://matlabwiki.mathworks.com/MATLAB_FAQ&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Section 6.1</description>
    </item>
    <item>
      <pubDate>Wed, 21 Nov 2007 14:49:20 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402444</link>
      <author>crammer008</author>
      <description>Dear Steve Amphlett,&lt;br&gt;
&lt;br&gt;
Thanks a lot for your useful information:)</description>
    </item>
    <item>
      <pubDate>Wed, 21 Nov 2007 15:11:44 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402447</link>
      <author>crammer008</author>
      <description>Dear Steve Amphlett,&lt;br&gt;
&lt;br&gt;
As the code listed above, if I want to let daa(1)-daa(2) = 0, what function should be used in Matlab? &lt;br&gt;
&lt;br&gt;
Thanks a lot!&lt;br&gt;
LUO Chao</description>
    </item>
    <item>
      <pubDate>Wed, 21 Nov 2007 16:42:03 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402471</link>
      <author>Steve Amphlett</author>
      <description>crammer008 &amp;lt;luochao2000@hotmail.com&amp;gt; wrote in message &lt;br&gt;
&amp;lt;12361651.1195657935111.JavaMail.jakarta@nitrogen.mathforum.&lt;br&gt;
org&amp;gt;...&lt;br&gt;
&amp;gt; Dear Steve Amphlett,&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; As the code listed above, if I want to let daa(1)-daa(2) &lt;br&gt;
= 0, what function should be used in Matlab? &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Thanks a lot!&lt;br&gt;
&amp;gt; LUO Chao&lt;br&gt;
&lt;br&gt;
You can't.  0.01 is one of the floating point &quot;bogey&quot; &lt;br&gt;
numbers.  It has no exact representation.  You really have &lt;br&gt;
to decide how close the values have to be to be considered &lt;br&gt;
the same.  Not a Matlab issue, just floating point.  Now if &lt;br&gt;
there was a BCD mode...</description>
    </item>
    <item>
      <pubDate>Thu, 22 Nov 2007 02:44:21 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402560</link>
      <author>crammer008</author>
      <description>Dear Steve Amphlett,&lt;br&gt;
&lt;br&gt;
Thanks a lot for your great help! Now I think I have to set a threshold and use a &quot;if&quot; language to get rid of the difference below my threshold so that the accumulation of errors won't affect my result. Do you think it is a good way?&lt;br&gt;
&lt;br&gt;
Thanks a lot!&lt;br&gt;
LUO Chao</description>
    </item>
    <item>
      <pubDate>Fri, 23 Nov 2007 19:10:38 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402820</link>
      <author>Nasser Abbasi</author>
      <description>&lt;br&gt;
&quot;crammer008&quot; &amp;lt;luochao2000@hotmail.com&amp;gt; wrote in message &lt;br&gt;
news:8220611.1195636303283.JavaMail.jakarta@nitrogen.mathforum.org...&lt;br&gt;
&amp;gt; Dear all, I have the following code and the corresponding results:&lt;br&gt;
&amp;gt; +++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; aa = 0.005:0.01:0.025&lt;br&gt;
&amp;gt; aa =&lt;br&gt;
&amp;gt;    0.0050    0.0150    0.0250&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; daa = diff(aa)&lt;br&gt;
&amp;gt; daa =&lt;br&gt;
&amp;gt;    0.0100    0.0100&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; daa(1)-daa(2)&lt;br&gt;
&amp;gt; ans =&lt;br&gt;
&amp;gt;  1.7347e-018&lt;br&gt;
&amp;gt; ++++++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; Obviously, we should have daa(1)-daa(2) = 0. Who can tell me why Matlab &lt;br&gt;
&amp;gt; can not give the correct result? Thanks!&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
use VPA on the diff, then you will get your zero:&lt;br&gt;
&lt;br&gt;
EDU&amp;gt;&amp;gt; aa = 0.005:0.01:0.025&lt;br&gt;
&lt;br&gt;
aa =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0050    0.0150    0.0250&lt;br&gt;
&lt;br&gt;
EDU&amp;gt;&amp;gt; daa = vpa(diff(aa));&lt;br&gt;
EDU&amp;gt;&amp;gt; double(daa(1)-daa(2))&lt;br&gt;
&lt;br&gt;
ans =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br&gt;
&lt;br&gt;
Nasser</description>
    </item>
    <item>
      <pubDate>Fri, 23 Nov 2007 23:37:59 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#402843</link>
      <author>Georgios </author>
      <description>&quot;Nasser Abbasi&quot; &amp;lt;nma@12000.org&amp;gt; wrote in message&lt;br&gt;
&amp;lt;RAF1j.26885$aN3.11505@newsfe12.phx&amp;gt;...&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &quot;crammer008&quot; &amp;lt;luochao2000@hotmail.com&amp;gt; wrote in message &lt;br&gt;
&amp;gt;&lt;br&gt;
news:8220611.1195636303283.JavaMail.jakarta@nitrogen.mathforum.org...&lt;br&gt;
&amp;gt; &amp;gt; Dear all, I have the following code and the&lt;br&gt;
corresponding results:&lt;br&gt;
&amp;gt; &amp;gt; +++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt;&amp;gt; aa = 0.005:0.01:0.025&lt;br&gt;
&amp;gt; &amp;gt; aa =&lt;br&gt;
&amp;gt; &amp;gt;    0.0050    0.0150    0.0250&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt;&amp;gt; daa = diff(aa)&lt;br&gt;
&amp;gt; &amp;gt; daa =&lt;br&gt;
&amp;gt; &amp;gt;    0.0100    0.0100&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt;&amp;gt; daa(1)-daa(2)&lt;br&gt;
&amp;gt; &amp;gt; ans =&lt;br&gt;
&amp;gt; &amp;gt;  1.7347e-018&lt;br&gt;
&amp;gt; &amp;gt; ++++++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; &amp;gt; Obviously, we should have daa(1)-daa(2) = 0. Who can&lt;br&gt;
tell me why Matlab &lt;br&gt;
&amp;gt; &amp;gt; can not give the correct result? Thanks!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; use VPA on the diff, then you will get your zero:&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; EDU&amp;gt;&amp;gt; aa = 0.005:0.01:0.025&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; aa =&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;     0.0050    0.0150    0.0250&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; EDU&amp;gt;&amp;gt; daa = vpa(diff(aa));&lt;br&gt;
&amp;gt; EDU&amp;gt;&amp;gt; double(daa(1)-daa(2))&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; ans =&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;      0&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Nasser&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
The above code works using the variable precision arithmetic&lt;br&gt;
function vpa that is part of the symbolic toolbox.  The&lt;br&gt;
student version comes with this built in.  The professional&lt;br&gt;
version does not, so not all people will be able to use it.  &lt;br&gt;
&lt;br&gt;
Regards,&lt;br&gt;
Georgios</description>
    </item>
    <item>
      <pubDate>Thu, 10 Jan 2008 14:52:02 -0500</pubDate>
      <title>Re: What happened to so simple Matlab code?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/159649#408879</link>
      <author>tudor dima</author>
      <description>you can see this by simply comparing the outputs of these&lt;br&gt;
two commands :&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;gt;&amp;gt;0.3 + 0.1 == 0.4&lt;br&gt;
&amp;nbsp;&amp;gt;&amp;gt;0.2 + 0.1 == 0.3&lt;br&gt;
&lt;br&gt;
or directly&lt;br&gt;
&lt;br&gt;
0.2 + 0.1 - 0.3&lt;br&gt;
&lt;br&gt;
there is a paper on floating point representation, it might&lt;br&gt;
have been cited before here :&lt;br&gt;
&lt;a href=&quot;http://docs.sun.com/source/806-3568/ncg_goldberg.html&quot;&gt;http://docs.sun.com/source/806-3568/ncg_goldberg.html&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
crammer008 &amp;lt;luochao2000@hotmail.com&amp;gt; wrote in message&lt;br&gt;
&amp;lt;8220611.1195636303283.JavaMail.jakarta@nitrogen.mathforum.org&amp;gt;...&lt;br&gt;
&amp;gt; Dear all, I have the following code and the corresponding&lt;br&gt;
results:&lt;br&gt;
&amp;gt; +++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt; aa = 0.005:0.01:0.025&lt;br&gt;
&amp;gt; aa =&lt;br&gt;
&amp;gt;     0.0050    0.0150    0.0250&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt; daa = diff(aa)&lt;br&gt;
&amp;gt; daa =&lt;br&gt;
&amp;gt;     0.0100    0.0100&lt;br&gt;
&amp;gt; &amp;gt;&amp;gt; daa(1)-daa(2)&lt;br&gt;
&amp;gt; ans =&lt;br&gt;
&amp;gt;   1.7347e-018&lt;br&gt;
&amp;gt; ++++++++++++++++++++++++++++++++++&lt;br&gt;
&amp;gt; Obviously, we should have daa(1)-daa(2) = 0. Who can tell&lt;br&gt;
me why Matlab can not give the correct result? Thanks!</description>
    </item>
  </channel>
</rss>

