Difference between revisions of "CompSciWeek13"

From Predictive Chemistry
Jump to: navigation, search
(GNU ODE Integrator)
(Working with binary)
Line 72: Line 72:
 
|-
 
|-
 
! 2 bytes
 
! 2 bytes
! = 1 short
+
! = 1 short = 1 word
 
|-
 
|-
 
! 4 bytes
 
! 4 bytes
Line 78: Line 78:
 
|-
 
|-
 
! 8 bytes
 
! 8 bytes
! = 1 64-bit int = 1 64-bit address = 1 double = 1 float complex
+
! = 1 64-bit int = 1 double = 1 float complex
 
|-
 
|-
 
! 16 bytes
 
! 16 bytes
Line 84: Line 84:
 
|}
 
|}
   
Byte ordering on most modern 64-bit processors is little-endian (Intel, AMD)
+
Byte ordering on most modern 64-bit processors is little-endian (Intel, AMD). For more info, see [http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/].
   
in base 10, this would mean the 4-digit representation of the number 123 is
+
In an imaginary system where base 10 numbers are encoded by 4-bit nibbles, a 4-digit representation of the number 123 is
   
 
3 = 0011
 
3 = 0011
Line 97: Line 97:
 
0011 0010 0001 0000
 
0011 0010 0001 0000
   
Since we have to use 4 digits, but the little end (least significant byte) goes first.
 
  +
Since we have to use 4 digits, the most significant digit is set to all zeros, and goes last. The little end (least significant byte) goes first. Notice that within the 4-bit nibbles, the least-significant bit is still on the right. So the number is encoded using this left-to right (within a digit) and bottom to top (digits within a word) order.
  +
  +
Real binary encoding is just like the above, except that each 'digit' is a byte, so every 8 bits are in order, but the bytes are reversed.
   
 
= Basis Functions =
 
= Basis Functions =

Revision as of 21:18, 17 November 2014

Numerical Integration + Binary Output Format

  • Van der Pol Oscillator: <math>\ddot u - \mu (1-u^2) \dot u + u = 0</math>
    • Implementations in OpenOffice Spreadsheet, GNU ODE, and Python
    • Perturbed initial conditions, Lyapunov exponents, and large deviation principles
  • Working well with others: text
  • Working with machines: binary
    • This is preferable when you have lots and lots of data
    • The relevant numpy methods are x.tofile("file") and x = fromfile("file") -- but save("file", x) and x = load("file") are preferred
    • inspecting binary formats with od

GNU ODE Integrator

vanderpol.ode

<source lang="haskell"> mu = %MU

u = 1.0 y = 0.0

u' = y y' = mu*(1-u*u)*y - u

print t, u, y, y! every 10 from 50 step 0, 100 </source>

You can do the substitution with sed and run all dynamics with:

 for((i=0;i<10;i++)); do
   sed -e "s|%MU|$i|" vanderpol.ode >vanderpol-$i.ode
   ode -f vanderpol-$i.ode >out-$i.dat </dev/null
 done

Plotting with Gnuplot

<source lang="gnuplot"> set term postscript enh color lw 3 "Times-Roman" 28 set out 'van.eps'

set xlabel "u" set ylabel "y" plot 'out-0.dat' u 2:3 w l title "0", \

    'out-1.dat' u 2:3 w l title "1", \
    'out-4.dat' u 2:3 w l title "{/Symbol m} = 4"

</source>

Run with:

gnuplot plot_van.gplot

Python Integrator

Working with binary

Example: ELF header

od -t x1 -t c -N 8 /bin/bash

Binary comes in lots of units


8 bits = 1 byte
4 bits = 1 nibble
1 byte = 1 ascii character
2 bytes = 1 short = 1 word
4 bytes = 1 32-bit int = 1 float
8 bytes = 1 64-bit int = 1 double = 1 float complex
16 bytes = 1 long double = 1 double complex

Byte ordering on most modern 64-bit processors is little-endian (Intel, AMD). For more info, see [1].

In an imaginary system where base 10 numbers are encoded by 4-bit nibbles, a 4-digit representation of the number 123 is

3 = 0011
2 = 0010
1 = 0001
0 = 0000

The binary together would read:

0011 0010 0001 0000

Since we have to use 4 digits, the most significant digit is set to all zeros, and goes last. The little end (least significant byte) goes first. Notice that within the 4-bit nibbles, the least-significant bit is still on the right. So the number is encoded using this left-to right (within a digit) and bottom to top (digits within a word) order.

Real binary encoding is just like the above, except that each 'digit' is a byte, so every 8 bits are in order, but the bytes are reversed.

Basis Functions

  • Constructing B-splines - tensor method
  • Representing the differentiation operator
  • Solving PDEs using the implicit method