Back to main page
Changes in version 1.7
This page is intended for users of previous versions.
Changed behaviour of symbols passed as argument
When a built-in functions explicitly requires a symbol to be passed as one of its arguments,
that symbol is treated as unassigned, regardless of any assigments made earlier. For example the
equation in solve(x^2+x=6,x) will be solved even when x already has a value assigned. In earlier versions
this caused a "free symbol needed as argument" error which confused new users, and made experienced users
do extra work.
To define a new function, enter the definition into the editor field and press enter.
The syntax is : [function name] ( [argument names separated by commas] ) =
[defining expression using the specified argument names]
For example you would define a cubic root function as "croot(x) = x^(1/3)" .
The right side of the assigment is not evaluated on the assigment, only when
you are using the function. (This is different from variable assignments)
There are two kind of user-defined functions. A newly defined function is tied
to the current session, and will be listed among the session definitions. It is only
available while you have the containing session open.
To make a function available from any session, you have to make it global. You do this by
opening the list of global functions by pressing the "func" button and there pressing "add new".
In the screen shown you will be able to move a function from the session to the global functions.
Once you have done this, it will appear among the built-in functions.
Earlier versions were quite limited in what you can do with matrices.
It has been significantly improved. Indices can now be symbolic expressions as long as they get
immediately evaluated to an integer number.
The "sum" function has been improved, giving you more freedom on what to put in the repeating
term. This together with the previous improvement gives you the option to do such things as
computing the average of the elements of a matrix.
You can access elements of a row or column vector by specifying only one index,
you dont have to handle it as a two-dimensional matrix. (v instead of v[2,1])
To help you with matrices and vectors the following functions have been added:
matmake to create custom matrices, coldim, rowdim and dim to query the size of matrices. The
latter ones are especially useful when defining custom matrix-handling functions.
New vector handling functions are "vdot" to compute dot products, "vcross" for cross product,
and vlen for vector length/absolute value/norm.
Other notable small improvements
- random() function
- leading zero can be omitted (.3 instead of 0.3)
- max/min functions
- option to duplicate sessions, so you can have a "template" which you use to start new ones
- copy function examples into editor to try them out
- and quite a lot of small things here and there, mostly hidden deep in the algebra system
- integration evaluates when bound is in negative infinity
- limitr/limitl fixed
- bug throwing undue "too many right parenthesis" error on long expressions have been eliminated
- fixed bug causing "i","e","pi" messing up variable names next to omitted multiplication signs
You've sent many suggestions, not all of them have been included in this version, but that doesn't mean that they have been forgotten!
If you like the update, could you take a moment to leave a review in the AppStore? Thank you!
Back to main page