[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[seul-sci] [Fwd: [seul-edu] Fw: gnuplot and GNU Emacs Calc]



Happy New Year!

Sorry to forward a forward, but I thought this might be rather relevant to
some on this list.

More to come shortly...

Pete

-- 
Pete St. Onge

-------- Original Message --------
Subject: [seul-edu] Fw: gnuplot and GNU Emacs Calc
Date: Tue, 02 Jan 2001 18:03:32 -0500
From: Douglas Loss <dloss@suscom.net>
Reply-To: seul-edu@seul.org
To: seul-edu@seul.org

Here's a long message I received in response to the request in
the latest Linux in education report for tutorials on the use of
gnuplot:

On Tue, 2 Jan 2001, Robert J. Chassell wrote:

> GNU Emacs Calc mode runs gnuplot.  You can create output for
> an ascii  terminal or for an X window or for a printer.
> 
> The Calc manual has good lots of documentation.  For example,
> 
>     The easiest graphics command is `g f' (`calc-graph-fast').
>  
> 
>     This command takes two vectors of equal length from the
> stack.
>     The vector at the top of the stack represents the "y"
> values of
>     the various data points.  The vector in the second-to-top
> position
>     represents the corresponding "x" values.
> 
>     This command runs GNUPLOT (if it has not already been
> started by
>     previous graphing commands) and displays the set of data
> points.
>     The points will be connected by lines, and there will also
> be some
>     kind of symbol to indicate the points themselves.
> 
> I use gnuplot and Calc mode to compute least squares linear
> regressions and then plot the actual data and the best fit
> curve.
> 
> Emacs Calc is a standard part of Emacs, but because of its
> size is not
> in most standard Emacs distributions (at 832 kilobytes, people
> used to
> think it huge... :)
> 
> You can get it via ftp from
> 
>     alpha.gnu.org:/gnu/calc
> 
> Mirror sites, and an Emacs expression so you can see the
> directory
> using ange-ftp:
> 
>         (dired "/ftp@aeneas.mit.edu:/pub/gnu" nil)
>         (dired "/ftp@ftp.cs.columbia.edu:/archives/gnu/prep"
> nil)
>         (dired "/ftp@ftp.digex.net:/pub/gnu/" nil)
> 
> 
> Besides graphing, arithmetic, matrixes operations, and so on,
> Calc
> simplifies algebraic expressions, does least squares linear
> regressions, transcendentals, differentiation, and
> integration.
> 
> The Calc manual is in Texinfo format.  This means you can read
> it on
> line in Emacs, or in HTML on a Web site, or print it out as a
> (rather
> big) nicely typeset book.
> 
> (Actually, the manual is in two parts: a tutorial and a
> reference
> manual; you can print it as either one or as two books.)
> 
> 
> Here are some notes
> 
> 
> How to show mathematical expressions in different formats
> =========================================================
> 
> 
> The `d N' (`calc-normal-language') command selects the usual
> notation for Calc formulas
> 
>   `d B' (`calc-big-language') 
> 
>   `d C' (`calc-c-language') 
> 
>   `d T' (`calc-tex-language')
> 
> For example:
> 
>     (a+1)/b + c^2
> 
> to
>      a + 1    2
>      ----- + c
>        b
> 
> and to
> 
>     (a + 1) / b + c ** 2
> 
> in place of `sqrt((a+1)/b + c^2)'.
> 
> 
> Here is example for solving a quadratic equation of the form
> for the
> value of x, given a, b, and c:
> 
>     ax^2 + bx + c = 0
> 
> These following are all the same, but interconverted from one
> to
> another display mode using Emacs Calc.
> 
> 
>     Emacs Calc `Big' mode:
> 
>                        ___________
>                       |  2
>             (-b) +/- \| b  - 4 ac
>         x = ----------------------
>                      2 a
> 
> 
>     Emacs Calc `Normal' mode:
> 
>         x = (-b +/- sqrt(b^2 - 4 ac) / 2 a)
> 
>     Emacs Calc `TeX' mode:
> 
>         x = {-b \pm \sqrt{b^2 - 4 ac} \over 2 a}
> 
> 
> Working in an email buffer:
> ---------------------------
> 
> Suppose you have this expression in your mail buffer:
> 
>     0.6666-(4/15)*sqrt(10*pi^2*r^3/(D^2*G*m*epsilon)-1)
> 
> In the mail buffer in which I am composing the message, I type
> `M-# d'
> (i.e., Press alt key and # key at the same time, then press
> the d key)
> 
> This duplicates the expression.  I then type: 
> 
>     M-# e
> 
> to turn on Embedded Calc mode, and then type `m f' to keep the
> fraction from being automatically converted to a float, and
> then type
> `d B', which converts the duplicated expression to this:
> 
>                   ____________________
>                  |        2  3
>              4   |   10 pi  r
>     0.6666 - --  | -------------- - 1
>              15  |  2
>                 \| D  G m epsilon
> 
> which I find easier to read.  (Also, I may type `d o' to
> specify what
> format to use for fractions, and `m s' to prevent early
> evaluation of
> symbolic forms.  Just type them to see what happens.)
> 
> Actually,  after typing `m f' and `m B' the first time, each
> time I
> duplicate an expression like:
> 
>     (Q/(x*(1-e)^2))^(1/4)
> 
> the duplicate is inserted in my email buffer in `big' mode.
> 
>          Q      1/4
>     (----------)
>               2
>      x*(1 - e)
> 
> (This is not as easy to read as the preceding expression, but
> is easier than
> the `flat' format.)
> 
> 
> 
> 
> How to operate on each of a column of numbers
> =============================================
> 
> 
> 21 April 1993,
> Edward J. Hartnett asks:
> 
>    ... what would I do
>    to perform a simple mathematical manipulation on each,
> specifically I
>    want to multiply each element by 174 and pop another vector
> back into
>    my original document, so if I had:
> 
>            1    
>            2
>            3
> 
>    I would be able to get 
> 
>            1       174
>            2       348
>            3       522
> 
> 
> Use the Calc mapping and yank commands; see File: calc.info, 
> Node: Mapping, and Node: Yanking Into Buffers, for more
> information.
> 
> You can record the sequence of commands in a keyboard macro;
> or use
> the `generate.el' library from the archives to create a elisp
> function
> that does the job, based on your keystrokes.  The advantage of
> an
> elisp function is that you can edit it easily.
> 
> 
>    Commands         Comments
> 
>  
>     M-# g       grab the column as a vector and insert in
> *Calc* buffer
> 
>     174         insert number you want to multiply each
> element by
> 
>     V M *       Vector action, Mapped over each element,
> Multiplication
> 
>     v u         unpack vector so each element is on the stack
> separately
>                     See File: calc.info,  Node: Packing and
> Unpacking
> 
> This results in separate items in the stack, each of which is
> an
> element of the original column, multiplied by 174.  The *Calc*
> buffer
> looks like this:
> 
>         3:  174
>         2:  348
>         1:  522
> 
> 
> You can yank the elements out of the *Calc* buffer in two ways
> (with
> my calc-version 2.02).
> 
> If point in your working buffer is in the left most (i.e.,
> first
> column) `C-u 3 M-# y' yanks out the top three elements of the
> stack,
> producing a column like this:
> 
> 174
> 348
> 522
> 
> On the other hand, if point in your working buffer is not in
> the left
> most (i.e., not in the first column) `C-u 3 M-# y' yanks out
> the top
> three elements of the stack, and the line numbers, too:
> 
>    3:  174
> 2:  348
> 1:  522
> 
> I don't understand why this is so and my documentation does
> not
> explain this.  I don't know how this works in other versions
> of Calc.
> In any case, you want the column without the line numbers.  
> 
> You can copy your column to where ever you want it using Emacs
> rectangle commands.
> 
> I have bound `kill-rectangle' to `C-c k' and `yank-rectangle'
> to
> `yank-rectangle', which makes it very easy to move a rectangle
> from
> one place to another.  Place point and mark around the column,
> type
> `M-x kill-rectangle', move mark to the upper left hand corner
> of where
> you want to insert the rectangle and type `M-x
> yank-rectangle'.
> 
> 
> 
> 
> Two other useful commands:
> 
>     V [         turn off brackets in vector in *Calc* buffer
>                     See File: calc.info,  Node: Vector and
> Matrix Formats
> 
>     V ,         turn off commas in vector in *Calc* buffer
> 
> 
> 
> 
> 
> 
> How to show  "fixed-point" notation with two digits after the
> decimal point  
>
===========================================================================
> 
> 
> type
> 
>         M-2 d f
> 
>     To show "normal" notation with three significant digits,
> type
> 
>         M-3 d n
> 
>     "scientific notation"   d s 
> 
>     "engineering notation"  d e 
> 
> 
>     To set precision:
> 
>         p 12   
> 
>     12 is the default precision.     Display format does not
> effect precision.
> 
>     To measure angles in degrees:  m d   To measure angles in
> radians:   m r
> 
>     To convert degrees to radians: c r   To convert radians to
>  degrees: c d   
> 
>     To convert to "hexadecimal", or "base-16" form,
>     type:
> 
>         d r 16 <RET>
> 
>     Use `d r 2 <RET>' to see it in binary
>     Use `d r 10<RET>' to see it in base 10
> 
> 
> 
> Best wishes.
> 
> -- 
>     Robert J. Chassell                  bob@rattlesnake.com
>     Rattlesnake Enterprises            
> http://www.rattlesnake.com
> 
-- 
Doug Loss           The art of medicine consists of amusing the
dloss@suscom.net    patient while nature cures the disease.
(570) 326-3987             Voltaire