Feeds:
Posts
Comments

Posts Tagged ‘Graphics’


Hi again!

In the last post I told you about my experience with Inkscape, and now I’ll show you how to install this software using the command line interface (CLI) in dabian-like linux.

Inkscape is include into the repository list, thus, the only thing we need to do is to open a terminal Alt+F2 and type terminal or Ctrl+Alt+t in Ubuntu or Mint.

In the terminal type

 $ sudo apt-get install inkscape pstoedit

Note that you will need administrator powers. I’ve include the package pstoedit, which will allow you to insert LaTeX formulas… in case you need them, but also allows you to manipulate encapsulated figures, like eps ones.

See you soon!

DOX

Advertisements

Read Full Post »


I used Inkscape a couple of time… just for fun, and I was impressed. However, last week I used it for some work-related stuff.

I wrote a paper, and the core of it was a numerical analysis of a set of differential equations. The solution was plotted, but the 3D manager of the software I tried was not wonderful, and the referee complained because the axis were not label.

Here the chaos began:

  • My plots were PDF files,
  • Somehow, the data files and program codes were missing!!!
  • After two months, I did not wanted to spend more time re-programming and running simulations.

Thus, the idea came to me, What if… I use a graphical program to insert the labels?

And I did!!!!

I tried first with GIMP, but it is a bit cumbersome… and the worst part is that I did not know hot to add LaTeX symbols. Meanwhile, Inkscape has and extension to render  LaTeX formulas.

I’ll be coming back to Inkscape. It’s great, so make sure to include it in your first aids kit.

DOX

Read Full Post »


Sage beginner’s guide is a book by  Craig Finch, published recently by PACKT publishing.

After spending two weeks looking at different aspects of the book, I can say with property that this is an excellent book, an I’ll recommend it for beginners to medium experienced SAGE users.

Since this is the first book I review, and also the first I own from this publisher, I’d say that its format is quite understandable, and one might learn a lot by following examples… and then, just then, the details are explained. I really love that feature of the writing.

The first chapter, called What can we do with Sage?, shows in about 20 pages some powerful tools available in Sage, from symbolic calculation, linear algebra, ODE’s, to plotting functions in 2D and 3D… even fitting of curves.  I’ll say this is an impressive chapter, and it’s just the start point. Nonetheless, as in any book, one might notice that in some examples the graphics do not correspond to the code, but when you try the code yourself, you get the right ones.

The chapter about Installing Sage, is written in detail, and explain how to install the software in the three major operative systems: Windows, X OS, and Linux. Of course, due to the unstoppable develop of open source software, there’s a delay in the version shown in the book, however, the steps to follow are the same. A nice thing is that it’s explained how to compile the source for multi-core systems.

Getting Started with Sage, shows a huge amount of small tricks, I mean… I’ve been using Sage for about one a half year, and had no idea of plenty of the tricks explained in this chapter. Awesome!!!

All aspects of Sage are exploited, command line, notebook, different cells in the notebook, all the different types of variables available… and their operations. Functions and even a quick introduction to object oriented programming.

Another useful chapter of the book is the one where some differences (and similarities) between Sage and Python are explained. As a example, the use of commands like range, xrange or srange.

Chapters 5 to 8 show with plenty examples and incredible detail uses of Sage in linear algebra, visualization (plotting), symbolic and numerical calculation. Of course, there is no way I can explain how vast the content is, but include:

  • Simplifications in symbolic calculation,
  • Manipulation and analysis of data,
  • Integral transforms,
  • Differential equations,
  • Series,
  • Differential and integral calculus,
  • Numerical calculus, et cetera.

Finally, the last two chapters are more a complement for intermediate users, specially with programming knowledge. They cover python programming, say functions, classes and modules, and its uses, and more advanced features of Sage as \LaTeX integration, optimization of numerical calculation (with NumPy and Cython), and an introduction to the interactive mode.

Thus, In a scale from zero to ten I’d give a 9/10 to this book, because managing such a variety of tricks and functions are worth it.

 

You can check out the book at http://www.packtpub.com/sage-beginners-guide/book

Read Full Post »


No comments! It was beautiful 🙂

Sine function with shadow

Sine function with shadow

p = plot(sin(x), (x,-5, 5), thickness=2, color='red')
for n in xrange(1,20):
    p += plot((1-n/20)*sin(x), (x,-pi,0), thickness=0, fill='axis', fillcolor='blue', fillalpha=.01)
    p += plot((1-n/20)*sin(x), (x,0,pi), thickness=0, fill='axis', fillcolor='gray', fillalpha=.01)
show(p, figsize=10,ticks=pi/3,tick_formatter=pi, fontsize=16)
Another variation

Another variation

reset()
var('x')
f(x) = sin(x)
p = plot(f(x), (x,-5, 5), thickness=2, color='red')
for n in xrange(1,20):
    p += plot(((n-1)/20)*sin(x), (x,-pi,0), thickness=0, fill=f, fillcolor='blue', fillalpha=.01)
    p += plot(((n-1)/20)*sin(x), (x,0,pi), thickness=0, fill=f, fillcolor='gray', fillalpha=.01)
show(p, figsize=10,ticks=pi/3,tick_formatter=pi, fontsize=16) 

Dox.

Read Full Post »


After my last post, about Fouries Series, I decided to give a try to the interactive mode of SAGE.

🙂

What did I do?

First I check out the examples worked at the Wiki page. In the section of graphics I got inspired from the post Interactive 2D Plotting by Timothy Clemans and Newton’s Method by William Stein post in the Calculus section. So… there it is!

The code is too long to be posted here… but here it goes anyway

var('x,n,i')

def error_msg(msg):
... print '<p style="font-family: Arial, sans-serif; color: #000;"><span     style="color: red; font-weight: bold;">Error</span>: %s</p>' % msg

...

def a(f, n, init, final):
... x = f.variables()[0]
... L = (final - init)/2
... coeff = integral(f(x)*cos(n*pi*x/L), (x,init,final))/L
... return coeff

...

def b(f, n, init, final):
... x = f.variables()[0]
... L = (final - init)/2
... coeff = integral(f(x)*sin(n*pi*x/L), (x,init,final))/L
... return coeff

...

def FS(f, n, init, final):
... x = f.variables()[0]
... L = (final - init)/2
... return a(f, 0, init, final)/2 + sum(a(f, i, init, final)*cos(i*x*pi/L)+b(f, i, init, final)*sin(i*x*pi/L), i, 1, n)

...

@interact
def interactive_2d_plotter(clr=Color('green'), expression=input_box('x^2', 'Expression', str), x_range=range_slider(-6,6,1,(-4,4), label='X Range'), order=slider([0..100],None,None,3), square=checkbox(True, 'Square'), axes=checkbox(False, 'Show Axes')):
... if expression:
...   try:
...      expression = SR(expression) # turn string into a Sage expression
...   except TypeError:
...      print error_msg('This is not an expression.')
...      return
...   try:
...      xmin, xmax = x_range
...      n = order
...      if square or not axes:
...         print "var('%s')\nplot(%s).show(%s%s%s)" % (expression.variables()[0], repr(expression), 'aspect_ratio=1' if square else '', ', ' if square and not axes else '', 'axes=False' if not axes else '')
...         if square:
...            P = plot(FS(expression, n, xmin, xmax), xmin, xmax, color=clr) + plot(expression, xmin, xmax)
...            P.show(aspect_ratio=1, axes=axes)
...         else:
...            P = plot(FS(expression, n, xmin, xmax), xmin, xmax, color=clr) + plot(expression, xmin, xmax)
...            P.show(axes=axes)
...      else:
...         print "var('%s')\nplot(%s)" % (expression.variables()[0], repr(expression))
...         P = plot(FS(expression, n, xmin, xmax), xmin, xmax, color=clr) + plot(expression, xmin, xmax)
...         P.show(axes=axes)
...   except ValueError:
...      print error_msg('This expression has more than one variable.')
...      return
...   except TypeError:
...      print error_msg("This expression contains an unknown function.")
...      return

because it’s almost in-understandable 😛

Some pictures!!!

The code is set to give the Fourier approximation of the f(x)=x^2 with aspect_ratio = (1,1).

Initial Plot. Approx. of x^2

Initial Plot. Approx. of x^2

One can set a non one-to-one aspect_ratio, by un-checking the box,

Initial Plot with-no-square

Initial Plot with-no-square

And we can view the frame as well by checking the other box,

Initial plot no-square and frame

Initial plot no-square and frame

The first box allows us to change the colour, by using a palette,

Initial plot with color-palette

Initial plot with color-palette

for example, set the colour to red,

Initial plot in red

Initial plot in red

We can also change the function, to an exponential, f(x)=e^x,

Fourier approximation of the exponential

Fourier approximation of the exponential

and change the domain of the function,

Changing the interval

Changing the interval

or the order of the approximation,

Exponential changing the order of the approximation

Exponential changing the order of the approximation

I published my sage file on my page (at the end of the page in the attached files)… for the sake of clarity (and completeness).

 

Enjoy,

Dox

Read Full Post »


Inspired by a post in sage-devel (or support) group of SAGE, I came along with this few lines which allows me to plot a Fourier Series Approximation of the line, to a given order,

sage: reset()
sage: var('x,i,n')
(x,i,n)
sage: def b(n):
... return 2.*(-1)^(n+1)/n
...
sage: def f(x,n):
... return sum(b(i)*sin(i*x),i,1,n)
...
sage: p = Graphics()
sage: for n in [1,2,3,4,5,6]:
... p = plot(f(x,n), (x,-pi,pi), color=hue((n+1)/7.0)) + plot(x, -pi, pi, color='black') + text("Fourier Approximation of order %d" %n, (-1,3), fontsize=14, color='blue')
... p
...

and get as result, the series of plots that follows,

1st Fourier Approximation to a Line

1st Fourier Approximation to a Line

2nd Fourier Approximation to a Line

2nd Fourier Approximation to a Line

3rd Fourier Approximation to a Line

3rd Fourier Approximation to a Line

4th Fourier Approximation to a Line

4th Fourier Approximation to a Line

5th Fourier Approximation to a Line

5th Fourier Approximation to a Line

6th Fourier Approximation to a Line

6th Fourier Approximation to a Line

However, I was not happy ’cause I introduce the Fourier coefficients… So, I did a second try.

sage: reset()
sage: var('x,n,i')
(x,n,i)
sage: f(x) = x^2

sage: def a(n):
... coeff = integral(f(x)*cos(n*x), (x,-pi,pi))/pi
... return coeff
...
sage: def b(n):
... coeff = integral(f(x)*sin(n*x), (x,-pi,pi))/pi
... return coeff
...
sage: def FS(n):
... return a(0)/2 + sum(a(i)*cos(i*x)+b(i)*sin(i*x), i, 1, n)
...

Where I’ve defined the Fourier coefficients and the Fourier Series of a given function f(x), introduced by the user.

With the line

sage: for n in [1,2,3,4,5,6]:
... p = plot(FS(n), (x,-1.1*pi,1.1*pi), color=hue((n+1)/7.0)) + plot(f(x), (x, -1.1*pi, 1.1*pi), color='black') + text("Fourier Approximation of order %d" %n, (0,-2), fontsize=14, color='blue')
... p
...

One get the Fourier Series Approximation for f(x)=x^2,

1st Approximation for the parabola

1st Approximation for the parabola

2nd Approximation for the parabola

2nd Approximation for the parabola

3rd Approximation for the parabola

3rd Approximation for the parabola

4th Approximation for the parabola

4th Approximation for the parabola

5th Approximation for the parabola

5th Approximation for the parabola

6th Approximation for the parabola

6th Approximation for the parabola

NOTE…

  • The use of the last program is restricted to the interval [-\pi,\pi].
  • In order to find the Fourier coefficients the integrals might be doable… so no every function f(x) can be shown as a Fourier series approximation.
  • I tried to define the above using numerical_integrategral command, but didn’t work. Does anyone knows why?
  • I also tried to use range command instead of a list for the loop… Didn’t work!!! Any clues?
  • Ok, that was it. Enjoy!!!

     

    DOX.

    Read Full Post »


    Looking on the notebook worksheets publish on sagenb I found a very interesting application of the interactive mode, Interactive.

    Since one can not look the result of the published notebooks, I use its code to playing around a little bit, so here are the plots.

    The default function to be integrated is \sin(x^2)+2, the interval of integration is set [-1,3], the number of partitions of the interval is 4, and the method is the mid-point,

    Integration by mid-point method. Partition = 4

    Integration by mid-point method. Partition = 4

    We can see the visual integration, the analitic result, the numerical one, and the error. 🙂 Nice, Isn’t it?

    Let’s change the number of partitions, say to 10,

    Integration by mid-point method. Partition = 10

    Integration by mid-point method. Partition = 10

    Much better! But now, let’s try the other methods… left-point,

    Integration by left-point method. Partition = 10

    Integration by left-point method. Partition = 10

    The right-point,

    Integration by right-point method. Partition = 10

    Integration by right-point method. Partition = 10

    The upper-point,

    Integration by upper-point method. Partition = 10

    Integration by upper-point method. Partition = 10

    The lower-point,

    Integration by lower-point method. Partition = 10

    Integration by lower-point method. Partition = 10

    The trapezoid method,

    Integration by Trapezoid method. Partition = 10

    Integration by Trapezoid method. Partition = 10

    which is one of the best.

    But finally the Simpson method,

    Integration by Simpson method. Partition = 10

    Integration by Simpson method. Partition = 10

    Impressive!!!

    So, I think it’s a good idea to give a try to the interactive mode in SAGE, and if you go thru the code you’ll find out it’s not as difficult as it seems.

    Enjoy!

    Dox

    Read Full Post »

    Older Posts »