You are a guest. Restricted access. Read more

Programming

Programs can be created and run interactively. Functions can be either built-in or user defined as discussed in Sect.functions.

Branches

Branches can be defined as in any language:

if test1
    code1;
else
    code2;
end;

“if x A else B end”

As an example a function with the if statement


function y = H2(f, e)
  if (f==1)
    y = e+f;
  else
    y = e+2*f;
  end
end
y= H2(1,2)
printf('%f\n',y)
y=H2(2,2)
printf('%f',y)

Loops

Loops with condition x and statement(s) A: while x A end The while-loop is repeated until x becomes false (0).


x=1;y=1;
while(x<10) y=x+y; x++; end
printf('%f',y)

Loops with counter z and statement(s) A:

“for z = vector A end”

In the for-loop the counter is formally initialized by a vector. In each execution of the loop the counter takes on the value of the next element of vector.


x=1;y=1;
for(x=1:0.1:100) y=x^2+y; end
printf('%f',y)

Jumps

return, continue, break

A function may be part of the loop, and begins another cycle. break permanently leaves the loop.


x=1;
while( 1 ) 
    if(x>1000) 
       break; 
    end 
    x++; 
end
printf('%f',x)

Summary

Definition Example
Branch
if x==0 xp=1; end
if x==0 xp=1; else xp=2; end 
Loop
while x<17 x=x+1; end 
for i=0:100 x=x+i; end 
Jump
return, continue, break 
Function
function y=ttwo(x) y=2*x; end
Evaluate
eval('x=24')
Text output
printf('Number=%f', x)
Error message
error('Test') 

Benchmarking

You can benchmark your code to ensure that your code is optimized. Here is a small example to see how fast jMathLab is:


a1=time(0)
x=0
n=0
for i=0:1000000 
     x=x+cos(i)*sin(i)*sqrt(i*10); 
     n=n+1;
     end
printf('%f\n',x)
a2=time(0)
printf('iterations=%f\n',n)
printf('processed for %f (sec)',(a2-a1)/1000)

Here “time(0)” return the number of milliseconds since 1970. Run this code and compare with any other similar code.

Let us compare performance of 2 codes: one is written in jMathLab and one in Jython/Python. Here what we have:


d1=time(0) 
s=1;
n=0
for(x=0:1:1000000) 
        s=s+cos(x)*sin(x^2);
       n=n+1;
end
d2=time(0);
printf('\nNr of iterations=%f\n',n) ;
printf('Time=%f',(d2-d1)/1000)

No let's rewrite the same program in Jython:


import math
import time
start = time.clock()
n=0
s=0
for x in range(1000000):
     s=s+math.cos(x)*math.sin(x*x)
     n=n+1
print ' CPU time (s)=',time.clock()-start

The output of each of these scripts will give you ideas about the performance of Jython and jMathlab

jmathlab/programming.txt · Last modified: 2013/04/14 16:52 (external edit)
Back to top
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0