home HiHW GW Tests Ancillary Software

 Free and Open-Source Software

I find the following software useful for this course (and other courses). You should be able to find versions that run on Windows, Mac-OS, Linux, or possibly even Android and IOS.

LibreOffice

https://www.libreoffice.org/

This near drop-in replacement for MS Office (Word, Excel, PowerPoint) has always been quite free (except for the Java part) and had it origins more than twenty years ago as Sun Microsystem's StarOffice. I do not recommend using the related other spin-offs like OpenOffice since LibreOffice is better supported these days. It can usually seamlessly read and save ubiquitous MS-formatted files (like Word, Excel, and PowerPoint).


Xournal - pdf annotation software

This is an annotation software that you can use to mark up pdf files. It may take some practice to get it to work right for you. The native save format is not useful for anything but xournal, but when you are done marking up a pdf file, you can "export to pdf" to save it as another pdf file.

They have a very simple homepage: xournal.sourceforge.net

This is a download place: Xournal download at sourceforge.net

It is easy to search for variations, like xournalapp, xournal++, and versions that run on Windows or MacOS.


Maxima - a computer algebra system (CAS)

Yet another simple homepage that will point to ways you can Download it: https://sourceforge.net/projects/maxima

This is a software with a fifty-year history, descended from Macsyma originally developed by MIT. It runs on just about any modern computer. It may have a steep learning curve, but I think is worth it.

It resembles the expensive and proprietary CAS known as maple (maplesoft.com), and I think is a useful alternative.


An example. Suppose we have a formula with numbers:

Find out how much time it takes for an object, initially moving with speed of $v_0=1\,\mbox{m/s}$ and accelerating with $a=3\,\mbox{m/s}^2$ through a distance of ten meters. \begin{align} x_1 &= x_0 + v_0 t + \tfrac12 a_{01}t^2 \\[1ex] (10) &= (0) + (1) t + \tfrac12 (3) t^2 \\[1ex] (0) &= -(10) + (1) t + \left(\tfrac32\right) t^2 \end{align} We end up with a quadratic in time $t=t_1-t_0$, the unknown. Using maxima:

(%i1) eq: 0 = -10 + t + t^2 * 3/2$
(%i2) solve(eq,t);

                      sqrt(61) + 1      sqrt(61) - 1
(%o2)          [t = - ------------, t = ------------]
                           3                 3
(%i3) solve(eq,t),float;

(%o3)          [t = - 2.936749891968888, t = 2.270083225302221]
From this, we can see there are two possible answers, and we pick the one after $t_0=0$, so the answer is $t_1=(\sqrt{(61)}-1)/3=2.27\,\mbox{s}$.
The dollar sign ($) suppresses output, the semicolon (;) prints output. The (%i#) and (%o#) are input and output, respectively.
Another Example. Find the roots of a polynomial (values of $x$ where $f(x)=0$): \[ f(x)=x(x-1)(x-2)(x-3)(x-4)= x^5-10x^4+35x^3-50x^2+24x \]
(%i1) g(x):=x^5-10*x^4+35*x^3-50*x^2+24*x;
                          5       4       3           2
(%o1)            g(x) := x  - 10 x  + 35 x  + (- 50) x  + 24 x

(%i2) f(x):=factor(g(x));
(%o2)                        f(x) := factor(g(x))

(%i3) f(x);
(%o3)                  (x - 4) (x - 3) (x - 2) (x - 1) x

(%i4) expand(f(x));
                        5       4       3       2
(%o4)                  x  - 10 x  + 35 x  - 50 x  + 24 x

(%i5) solve(f(x),x);
(%o5)                 [x = 0, x = 1, x = 2, x = 3, x = 4]

(%i6) g(x);
                        5       4       3       2
(%o6)                 x  - 10 x  + 35 x  - 50 x  + 24 x

(%i7) solve(g(x),x);
(%o7)                [x = 3, x = 4, x = 1, x = 2, x = 0]

As another example, suppose we happen upon the three equations \[ T_H - mg = 0 \qquad\qquad mg-T_F = ma \qquad\qquad T_F=Ma \] linear in unknowns $a$, $m$, and $M$. It is straightforward to solve these with the one-liner
(%i8) solve([Th-m*g=0,m*g-Tf=m*a,Tf=M*a],[a,m,M]);

                      (Th - Tf) g      Th         Tf Th
(%o8)           [[a = -----------, m = --, M = -----------]]
                           Th           g       (Th - Tf) g
where we can pick off the solutions, \[ a=\frac{(T_H-T_F)\,g}{T_H} \qquad\qquad m=\frac{T_H}{g} \qquad\qquad M=\frac{T_F T_H}{(T_H-T_F)\,g} \] The physics part of this example is deriving the formulas and identifying the unknowns. The mathematical part is made easier using maxima so we can double check our algebra with some confidence.

These are just indications of how it works. Maxima can be used to solve systems of equations with more unknowns and a whole lot more.


GNU Octave - mostly compatible with matlab

This project has a more fancy webpage: gnu.org/software/octave/

GNU Octave is free software and an effective clone of MathWorks matlab, or that is their goal. If you know matlab, and don't want to buy it, I would recommend you investigate octave.

This program octave has a rich, thirty-year history as they successfully implemented the matlab programming language, itself with a forty-year history. Matlab (the language) is quite popular in many fields.

It is better suited to matrix calculations but it also has a symbolic algebra plugin. Solving the previous problem (done in maxima above) but here in octave:

pkg load symbolic
syms t
solve(-10+t+t^2*3/2)
\[ \left[ \begin{matrix} \displaystyle -\frac13 + \frac{\sqrt{61}}{3} \\ \displaystyle -\frac{\sqrt{61}}{3} - \frac13 \end{matrix}\right] \]
solve(-10+t+t^2*3/2,t>0)
\[ t = -\frac13 + \frac{\sqrt{61}}{3} \]

You can see the first time I tried, I got the two answers, but in the second, I asked that $t>0$.

If you want a numerical answer to the quadratic, try the somewhat easier:

f(t) = -10 + t + t^2 *3/2;
c = [3/2, 1, -10];
roots(c)

  -2.9367
   2.2701

from which we identify the second one as the appropriate answer. The f(t) just shows how to construct the array c (for example, 3/2 is the coefficient of t2), and the semicolon seems to suppress output to the screen.
In the Atwood problem, we have pairs of masses for each group. To figure out the acceleration and string tension all at once, I can use octave like the following. First assign the masses to arrays, then calculate a and T. (The last two commands give the same answer correctly.)
octave:1> m1=[9.3, 7.4, 5.7, 8.2, 6.9, 7.1, 9.0]
m1 =

   9.3000   7.4000   5.7000   8.2000   6.9000   7.1000   9.0000

octave:2> m2=[2.1, 6.2, 3.6, 2.7, 4.1, 1.3, 2.6]
m2 =

   2.1000   6.2000   3.6000   2.7000   4.1000   1.3000   2.6000

octave:3> a=9.8*(m1.-m2)./(m1.+m2)
a =

   6.18947   0.86471   2.21290   4.94495   2.49455   6.76667   5.40690

octave:4> T=m1.*(9.8.-a)
T =

   33.578   66.121   43.246   39.811   50.408   21.537   39.538

octave:5> T=m2.*(9.8.+a)
T =

   33.578   66.121   43.246   39.811   50.408   21.537   39.538


This is just an indication of what is possible. GNU Octave can do very many things.


No FERPA-protected information (student names, grades, etc.) appears on this website.
This website does not use cookies, but it uses a little javascript mostly to render formulas, and even less php.
jones.3 (R Jones)
Last Modified 23:23:51 14-Feb-2022