home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _438d8e6cceabef9dcf8fa2eca17c446d < prev    next >
Text File  |  2000-03-23  |  4KB  |  137 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>main/site/lib/Math/Approx.pm</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> main/site/lib/Math/Approx.pm</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#methods">METHODS</A></LI>
  24.     <UL>
  25.  
  26.         <LI><A HREF="#new (constructor)">new (constructor)</A></LI>
  27.         <LI><A HREF="#approx">approx</A></LI>
  28.         <LI><A HREF="#fit">fit</A></LI>
  29.         <LI><A HREF="#plot">plot</A></LI>
  30.         <LI><A HREF="#print">print</A></LI>
  31.     </UL>
  32.  
  33.     <LI><A HREF="#example">EXAMPLE</A></LI>
  34.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  35.     <LI><A HREF="#author">AUTHOR</A></LI>
  36. </UL>
  37. <!-- INDEX END -->
  38.  
  39. <HR>
  40. <P>
  41. <H1><A NAME="name">NAME</A></H1>
  42. <P>Math::Approx</P>
  43. <P>
  44. <HR>
  45. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  46. <UL>
  47. <LI>Linux</LI>
  48. <LI>Solaris</LI>
  49. <LI>Windows</LI>
  50. </UL>
  51. <HR>
  52. <H1><A NAME="methods">METHODS</A></H1>
  53. <P>
  54. <H2><A NAME="new (constructor)">new (constructor)</A></H2>
  55. <PRE>
  56.     Math::Approx->new(\&poly, $degree, %data);</PRE>
  57. <P>If the first argument to the constructor is a CODE reference, this is
  58. used as the function to iterate over the data. Such a function must
  59. take two arguments: The <EM>degree</EM> and the <EM>x</EM> value.</P>
  60. <P>For interpolation with plain polynomials <EM>poly</EM> can be defined as:</P>
  61. <PRE>
  62.         sub poly {
  63.             my($n,$x) = @_;
  64.             return $x ** $n;
  65.         }</PRE>
  66. <P>If the first argument in the constructor is a FALSE value instead of a
  67. CODE reference, then the above plain polynomial <EM>poly</EM> is used as the
  68. iterator function.</P>
  69. <P>The second argument is the maximum degree which should be used for
  70. interpolation. Degrees start with <STRONG>0</STRONG>.</P>
  71. <P>The rest of the arguments are treated as pairs of <STRONG>x</STRONG> and <STRONG>y</STRONG>
  72. samples which should be approximated.</P>
  73. <P>The constructor returns a Math::Approx reference.</P>
  74. <P>
  75. <H2><A NAME="approx">approx</A></H2>
  76. <PRE>
  77.         $approximation->approx(17);</PRE>
  78. <P>The method returns the approximated  <STRONG>y</STRONG> value for the <STRONG>x</STRONG> value
  79. given as argument.</P>
  80. <P>
  81. <H2><A NAME="fit">fit</A></H2>
  82. <PRE>
  83.         $approximation->fit;</PRE>
  84. <P>Returns the medim square error for the data points.</P>
  85. <P>
  86. <H2><A NAME="plot">plot</A></H2>
  87. <PRE>
  88.         $approximation->plot("tmp/app");</PRE>
  89. <P>Prints all data pairs and the corresponding approximation pairs into
  90. the filename given as argument. The output is suitable for usage with
  91. gnuplot(1).</P>
  92. <P>
  93. <H2><A NAME="print">print</A></H2>
  94. <PRE>
  95.         $approximation->print;</PRE>
  96. <P>Prints information about the approximation on <EM>STDOUT</EM></P>
  97. <P>
  98. <HR>
  99. <H1><A NAME="example">EXAMPLE</A></H1>
  100. <PRE>
  101.         use Math::Approx;
  102. </PRE>
  103. <PRE>
  104.  
  105.         sub poly {
  106.             my($n,$x) = @_;
  107.             return $x ** $n;
  108.         }</PRE>
  109. <PRE>
  110.  
  111.         for (1..20) {
  112.             $x{$_} = sin($_/10)*cos($_/30)+0.3*rand;
  113.         }</PRE>
  114. <PRE>
  115.  
  116.         $a = new Math::Approx (\&poly, 5, %x);
  117.         $a->print;
  118.         $a->plot("math-approx-demo.out");
  119.         print "Fit: ", $a->fit, "\n";</PRE>
  120. <P>
  121. <HR>
  122. <H1><A NAME="see also">SEE ALSO</A></H1>
  123. <P>gnuplot(1).</P>
  124. <P>
  125. <HR>
  126. <H1><A NAME="author">AUTHOR</A></H1>
  127. <P>Ulrich Pfeifer <<EM><A HREF="mailto:pfeifer@wait.de">pfeifer@wait.de</A></EM>></P>
  128. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  129. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  130. <STRONG><P CLASS=block> main/site/lib/Math/Approx.pm</P></STRONG>
  131. </TD></TR>
  132. </TABLE>
  133.  
  134. </BODY>
  135.  
  136. </HTML>
  137.