1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
<html>
<!-- Created on September, 20 2006 by texi2html 1.76 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Many creative people <dev@texi2html.cvshome.org>
Send bugs and suggestions to <users@texi2html.cvshome.org>
-->
<head>
<title>Maxima Manual: 57. lsquares</title>
<meta name="description" content="Maxima Manual: 57. lsquares">
<meta name="keywords" content="Maxima Manual: 57. lsquares">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="texi2html 1.76">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
pre.display {font-family: serif}
pre.format {font-family: serif}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: serif; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: serif; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.sansserif {font-family:sans-serif; font-weight:normal;}
ul.toc {list-style: none}
body
{
color: black;
background: white;
margin-left: 8%;
margin-right: 13%;
}
h1
{
margin-left: +8%;
font-size: 150%;
font-family: sans-serif
}
h2
{
font-size: 125%;
font-family: sans-serif
}
h3
{
font-size: 100%;
font-family: sans-serif
}
h2,h3,h4,h5,h6 { margin-left: +4%; }
div.textbox
{
border: solid;
border-width: thin;
/* width: 100%; */
padding-top: 1em;
padding-bottom: 1em;
padding-left: 2em;
padding-right: 2em
}
div.titlebox
{
border: none;
padding-top: 1em;
padding-bottom: 1em;
padding-left: 2em;
padding-right: 2em;
background: rgb(200,255,255);
font-family: sans-serif
}
div.synopsisbox
{
border: none;
padding-top: 1em;
padding-bottom: 1em;
padding-left: 2em;
padding-right: 2em;
background: rgb(255,220,255);
/*background: rgb(200,255,255); */
/* font-family: fixed */
}
pre.example
{
border: none;
padding-top: 1em;
padding-bottom: 1em;
padding-left: 1em;
padding-right: 1em;
background: rgb(247,242,180); /* kind of sandy */
/* background: rgb(200,255,255); */ /* sky blue */
font-family: "Lucida Console", monospace
}
div.spacerbox
{
border: none;
padding-top: 2em;
padding-bottom: 2em
}
div.image
{
margin: 0;
padding: 1em;
text-align: center;
}
-->
</style>
<link rel="icon" href="http://maxima.sourceforge.net/favicon.ico"/>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="lsquares"></a>
<a name="SEC206"></a>
<table cellpadding="1" cellspacing="1" border="0">
<tr><td valign="middle" align="left">[<a href="maxima_56.html#SEC205" title="Previous section in reading order"> < </a>]</td>
<td valign="middle" align="left">[<a href="#SEC207" title="Next section in reading order"> > </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="maxima_56.html#SEC203" title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Up section"> Up </a>]</td>
<td valign="middle" align="left">[<a href="maxima_58.html#SEC208" title="Next chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
<td valign="middle" align="left">[<a href="maxima_72.html#SEC264" title="Index">Index</a>]</td>
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
</tr></table>
<h1 class="chapter"> 57. lsquares </h1>
<table class="menu" border="0" cellspacing="0">
<tr><td align="left" valign="top"><a href="#SEC207">57.1 Definitions for lsquares</a></td><td> </td><td align="left" valign="top">
</td></tr>
</table>
<hr size="6">
<a name="Definitions-for-lsquares"></a>
<a name="SEC207"></a>
<table cellpadding="1" cellspacing="1" border="0">
<tr><td valign="middle" align="left">[<a href="#SEC206" title="Previous section in reading order"> < </a>]</td>
<td valign="middle" align="left">[<a href="maxima_58.html#SEC208" title="Next section in reading order"> > </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="#SEC206" title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="#SEC206" title="Up section"> Up </a>]</td>
<td valign="middle" align="left">[<a href="maxima_58.html#SEC208" title="Next chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
<td valign="middle" align="left">[<a href="maxima_72.html#SEC264" title="Index">Index</a>]</td>
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
</tr></table>
<h2 class="section"> 57.1 Definitions for lsquares </h2>
<dl>
<dt><u>Global variable:</u> <b>DETCOEF</b>
<a name="IDX1780"></a>
</dt>
<dd><p>This variable is used by functions <code>lsquares</code> and <code>plsquares</code> to store the Coefficient of Determination which measures the goodness of fit. It ranges from 0 (no correlation) to 1 (exact correlation).
</p>
<p>When <code>plsquares</code> is called with a list of dependent variables, <var>DETCOEF</var> is set to a list of Coefficients of Determination. See <code>plsquares</code> for details.
</p>
<p>See also <code>lsquares</code>.
</p></dd></dl>
<dl>
<dt><u>Function:</u> <b>lsquares</b><i> (<var>Mat</var>,<var>VarList</var>,<var>equation</var>,<var>ParamList</var>)</i>
<a name="IDX1781"></a>
</dt>
<dt><u>Function:</u> <b>lsquares</b><i> (<var>Mat</var>,<var>VarList</var>,<var>equation</var>,<var>ParamList</var>,<var>GuessList</var>)</i>
<a name="IDX1782"></a>
</dt>
<dd><p>Multiple nonlinear equation adjustment of a data table by the
"least squares" method. <var>Mat</var> is a matrix containing the data,
<var>VarList</var> is a list of variable names (one for each <var>Mat</var> column),
<var>equation</var> is the equation to adjust (it must be in the form:
<code>depvar=f(indepvari,..., paramj,...)</code>, <code>g(depvar)=f(indepvari,..., paramj,...)</code>
or <code>g(depvar, paramk,...)=f(indepvari,..., paramj,...)</code>), <var>ParamList</var> is the
list of the parameters to obtain, and <var>GuessList</var> is an optional list of initial
approximations to the parameters; when this last argument is present, <code>mnewton</code> is used
instead of <code>solve</code> in order to get the parameters.
</p>
<p>The equation may be fully nonlinear with respect to the independent
variables and to the dependent variable.
In order to use <code>solve()</code>, the equations must be linear or polynomial with
respect to the parameters. Equations like <code>y=a*b^x+c</code> may be adjusted for
<code>[a,b,c]</code> with <code>solve</code> if the <code>x</code> values are little positive integers and
there are few data (see the example in lsquares.dem).
<code>mnewton</code> allows to adjust a nonlinear equation with respect to the
parameters, but a good set of initial approximations must be provided.
</p>
<p>If possible, the adjusted equation is returned. If there exists more
than one solution, a list of equations is returned.
The Coefficient of Determination is displayed in order to inform about
the goodness of fit, from 0 (no correlation) to 1 (exact correlation).
This value is also stored in the global variable <var>DETCOEF</var>.
</p>
<p>Examples using <code>solve</code>:
</p><table><tr><td> </td><td><pre class="example">(%i1) load("lsquares")$
(%i2) lsquares(matrix([1,2,0],[3,5,4],[4,7,9],[5,8,10]),
[x,y,z], z=a*x*y+b*x+c*y+d, [a,b,c,d]);
Determination Coefficient = 1.0
x y + 23 y - 29 x - 19
(%o2) z = ----------------------
6
(%i3) lsquares(matrix([0,0],[1,0],[2,0],[3,8],[4,44]),
[n,p], p=a4*n^4+a3*n^3+a2*n^2+a1*n+a0,
[a0,a1,a2,a3,a4]);
Determination Coefficient = 1.0
4 3 2
3 n - 10 n + 9 n - 2 n
(%o3) p = -------------------------
6
(%i4) lsquares(matrix([1,7],[2,13],[3,25]),
[x,y], (y+c)^2=a*x+b, [a,b,c]);
Determination Coefficient = 1.0
(%o4) [y = 28 - sqrt(657 - 216 x),
y = sqrt(657 - 216 x) + 28]
(%i5) lsquares(matrix([1,7],[2,13],[3,25],[4,49]),
[x,y], y=a*b^x+c, [a,b,c]);
Determination Coefficient = 1.0
x
(%o5) y = 3 2 + 1
</pre></td></tr></table>
<p>Examples using <code>mnewton</code>:
</p><table><tr><td> </td><td><pre class="example">(%i6) load("lsquares")$
(%i7) lsquares(matrix([1.1,7.1],[2.1,13.1],[3.1,25.1],[4.1,49.1]),
[x,y], y=a*b^x+c, [a,b,c], [5,5,5]);
x
(%o7) y = 2.799098974610482 1.999999999999991
+ 1.099999999999874
(%i8) lsquares(matrix([1.1,4.1],[4.1,7.1],[9.1,10.1],[16.1,13.1]),
[x,y], y=a*x^b+c, [a,b,c], [4,1,2]);
.4878659755898127
(%o8) y = 3.177315891123101 x
+ .7723843491402264
(%i9) lsquares(matrix([0,2,4],[3,3,5],[8,6,6]),
[m,n,y], y=(A*m+B*n)^(1/3)+C, [A,B,C], [3,3,3]);
1/3
(%o9) y = (3.999999999999862 n + 4.999999999999359 m)
+ 2.00000000000012
</pre></td></tr></table>
<p>To use this function write first <code>load("lsquares")</code>. See also <code>DETCOEF</code> and <code>mnewton</code>.
</p></dd></dl>
<dl>
<dt><u>Function:</u> <b>plsquares</b><i> (<var>Mat</var>,<var>VarList</var>,<var>depvars</var>)</i>
<a name="IDX1783"></a>
</dt>
<dt><u>Function:</u> <b>plsquares</b><i> (<var>Mat</var>,<var>VarList</var>,<var>depvars</var>,<var>maxexpon</var>)</i>
<a name="IDX1784"></a>
</dt>
<dt><u>Function:</u> <b>plsquares</b><i> (<var>Mat</var>,<var>VarList</var>,<var>depvars</var>,<var>maxexpon</var>,<var>maxdegree</var>)</i>
<a name="IDX1785"></a>
</dt>
<dd><p>Multivariable polynomial adjustment of a data table by the "least squares"
method. <var>Mat</var> is a matrix containing the data, <var>VarList</var> is a list of variable names (one for each Mat column, but use "-" instead of varnames to ignore Mat columns), <var>depvars</var> is the name of a dependent variable or a list with one or more names of dependent variables (which names should be in <var>VarList</var>), <var>maxexpon</var> is the optional maximum exponent for each independent variable (1 by default), and <var>maxdegree</var> is the optional maximum polynomial degree (<var>maxexpon</var> by default); note that the sum of exponents of each term must be equal or smaller than <var>maxdegree</var>, and if <code>maxdgree = 0</code> then no limit is applied.
</p>
<p>If <var>depvars</var> is the name of a dependent variable (not in a list), <code>plsquares</code> returns the adjusted polynomial. If <var>depvars</var> is a list of one or more dependent variables, <code>plsquares</code> returns a list with the adjusted polynomial(s). The Coefficients of Determination are displayed in order to inform about the goodness of fit, which ranges from 0 (no correlation) to 1 (exact correlation). These values are also stored in the global variable <var>DETCOEF</var> (a list if <var>depvars</var> is a list).
</p>
<p>A simple example of multivariable linear adjustment:
</p><table><tr><td> </td><td><pre class="example">(%i1) load("plsquares")$
(%i2) plsquares(matrix([1,2,0],[3,5,4],[4,7,9],[5,8,10]),
[x,y,z],z);
Determination Coefficient for z = .9897039897039897
11 y - 9 x - 14
(%o2) z = ---------------
3
</pre></td></tr></table>
<p>The same example without degree restrictions:
</p><table><tr><td> </td><td><pre class="example">(%i3) plsquares(matrix([1,2,0],[3,5,4],[4,7,9],[5,8,10]),
[x,y,z],z,1,0);
Determination Coefficient for z = 1.0
x y + 23 y - 29 x - 19
(%o3) z = ----------------------
6
</pre></td></tr></table>
<p>How many diagonals does a N-sides polygon have? What polynomial degree should be used?
</p><table><tr><td> </td><td><pre class="example">(%i4) plsquares(matrix([3,0],[4,2],[5,5],[6,9],[7,14],[8,20]),
[N,diagonals],diagonals,5);
Determination Coefficient for diagonals = 1.0
2
N - 3 N
(%o4) diagonals = --------
2
(%i5) ev(%, N=9); /* Testing for a 9 sides polygon */
(%o5) diagonals = 27
</pre></td></tr></table>
<p>How many ways do we have to put two queens without they are threatened into a n x n chessboard?
</p><table><tr><td> </td><td><pre class="example">(%i6) plsquares(matrix([0,0],[1,0],[2,0],[3,8],[4,44]),
[n,positions],[positions],4);
Determination Coefficient for [positions] = [1.0]
4 3 2
3 n - 10 n + 9 n - 2 n
(%o6) [positions = -------------------------]
6
(%i7) ev(%[1], n=8); /* Testing for a (8 x 8) chessboard */
(%o7) positions = 1288
</pre></td></tr></table>
<p>An example with six dependent variables:
</p><table><tr><td> </td><td><pre class="example">(%i8) mtrx:matrix([0,0,0,0,0,1,1,1],[0,1,0,1,1,1,0,0],
[1,0,0,1,1,1,0,0],[1,1,1,1,0,0,0,1])$
(%i8) plsquares(mtrx,[a,b,_And,_Or,_Xor,_Nand,_Nor,_Nxor],
[_And,_Or,_Xor,_Nand,_Nor,_Nxor],1,0);
Determination Coefficient for
[_And, _Or, _Xor, _Nand, _Nor, _Nxor] =
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
(%o2) [_And = a b, _Or = - a b + b + a,
_Xor = - 2 a b + b + a, _Nand = 1 - a b,
_Nor = a b - b - a + 1, _Nxor = 2 a b - b - a + 1]
</pre></td></tr></table>
<p>To use this function write first <code>load("lsquares")</code>.
</p></dd></dl>
<hr size="6">
<table cellpadding="1" cellspacing="1" border="0">
<tr><td valign="middle" align="left">[<a href="#SEC206" title="Beginning of this chapter or previous chapter"> << </a>]</td>
<td valign="middle" align="left">[<a href="maxima_58.html#SEC208" title="Next chapter"> >> </a>]</td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left"> </td>
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
<td valign="middle" align="left">[<a href="maxima_72.html#SEC264" title="Index">Index</a>]</td>
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
</tr></table>
<p>
<font size="-1">
This document was generated by <em>Robert Dodier</em> on <em>September, 20 2006</em> using <a href="http://texi2html.cvshome.org/"><em>texi2html 1.76</em></a>.
</font>
<br>
</p>
</body>
</html>
|