# Category : Science and Education

Archive : SCIEQS13.ZIP

Filename : SCIEQS.DOC

SCIENTIFIC EQUATION SOLVER

==========================

Scientific Equation Solver (SCIEQS) acts as a sophisticated scientific

calculator. It can perform double precision floating point arithmetic

using an assignment statement syntax similar to BASIC or FORTRAN.

Variables may be assigned values in one statement and then used on the

right-hand side of another statement.

Almost every built-in function found on scientific calculators has

been included: trigonometric, hyperbolic, exponential, logarithmic,

factorial, and square/cube root functions. Even advanced functions

such as erf(x) and gamma(x) have been included. You can also define

your own functions with any number of arguments.

There is also an equation solver built into the program. This feature

allows the program to solve for any variable in a given equation.

Suppose you needed to solve for the variable 'x', where

(3 * x) + exp(x+1) = 99 .

By entering the command

!solve x, [0,100] : (3 * x) + exp(x+1) = 99 ,

the solution 3.483559695247 comes up on your screen in seconds.

SCIEQS also supports numerical integration (also known as quadrature).

This feature allows the program to approximate the values of definite

integrals. Suppose you needed to evaluate the following integral:

2

ô

³ (x^2 * sqrt(x^3 + 1)) dx .

õ

0

By entering the command

!quad x, [0,2] : x^2 * sqrt(x^3 + 1) ,

the value 5.7777777777778 comes up on your screen in seconds.

HOW TO START SCIEQS

===================

To begin SCIEQS, type the following command at the MS-DOS command

prompt:

SCIEQS

The program reads its input from the standard input and writes its

output to the standard output so you may use the data redirection

symbols >, >>, <, and | from the MS-DOS command line. For example,

the following command reads commands from file POLY.EQS and writes the

results to file RESULTS.TXT:

SCIEQS

EXPRESSIONS IN SCIEQS

=====================

SCIEQS is an expression oriented language. Expressions typed by the

user are interpreted, evaluated, and displayed immediately by SCIEQS.

Most commands are of the form

variable = expression

or simply

expression

The first form is the assignment statement. It assigns the expression

on the right side of the equals sign to the variable named on the left

side and also displays the value of the expression. The second form

simply evaluates the expression and displays its value.

Examples: 2+3 area = pi()*R^2 b = c*d

x^2 sqrt(2) (2+3)!

Expressions are composed of numbers, variables, function references,

and arithmetic operators. Following are the rules for forming

expressions.

Numbers follow a conventional decimal notation, with optional decimal

point. A power-of-ten scale factor can be included as a suffix. This

is similar to the number notations used in the computer languages

BASIC and FORTRAN. The range of numbers is approximately 1E-308 to

1E+308 with approximately 15 significant digits.

Examples: 1.2 +.8 -788 1E6

4. 1256 -7.3E-5

Variable names and function names must start with a letter and may be

followed by any number of letters, digits, and underscores. However,

only the first 31 characters of the name are remembered. SCIEQS is

not case-sensitive so it treats upper and lower case letters as the

same character. The variable names "Answer" and "answer" refer to the

same variable.

Examples: SUM x days_in_month xYzzY

An arithmetic expression can be any expression preceded by unary + or

-, two expressions linked by a binary operator (+ - * / % ^), or any

expression followed by unary !.

Arithmetic operators are (from high to low precedence):

Factorial !

Unary plus and minus + -

Exponentiation ^

Mult, Div, and Modulus * / %

Addition and Subtraction + -

Examples: x+3 -t^2 tan(x)/y 6! 4^2^3 (evaluates to 65536)

Operations at the same precedence level are performed from left to

right except for series of exponentiations, which are performed from

right to left. The factorial operator appears on the right of the

expression on which it operates. The order of operations may be

controlled by enclosing expressions in parentheses.

There are two main categories of functions in SCIEQS: built-in and

user-defined functions. Built-in functions are automatically provided

every time you run SCIEQS. User-defined functions are defined by you

to handle your specific problem. To invoke a function, refer to the

function in an expression.

Example: a = tan(x)/d

Following is a list of the built-in functions.

Mathematical Constants

PI() = 3.141592653589793 ratio of circumference to diameter

E() = 2.718281828459045 base of natural logarithms

Trigonometric and Inverse Trigonometric Functions in Radians

SIN(x) Sine of x

COS(x) Cosine of x

TAN(x) Tangent of x

ASIN(x) Arc sine of x

ACOS(x) Arc cosine of x

ATAN(x) 2-quadrant arc tangent of x

ATAN2(y,x) 4-quadrant arc tangent of y/x

ANGL(x,y) Angle to point (x,y)

HYPOT(x,y) Hypotenuse of right triangle

Trigonometric and Inverse Trigonometric Functions in Degrees

SIND(x) Sine of x

COSD(x) Cosine of x

TAND(x) Tangent of x

ASIND(x) Arc sine of x

ACOSD(x) Arc cosine of x

ATAND(x) 2-quadrant arc tangent of x

ATAN2D(y,x) 4-quadrant arc tangent of y/x

ANGLD(x,y) Angle to point (x,y)

Hyperbolic and Inverse Hyperbolic Functions

SINH(x) Hyperbolic sine of x

COSH(x) Hyperbolic cosine of x

TANH(x) Hyperbolic tangent of x

ASINH(x) Hyperbolic arc sine of x

ACOSH(x) Hyperbolic arc cosine of x

ATANH(x) Hyperbolic arc tangent of x

Exponential and Logarithmic Functions

EXP(x) Number e, 2.718281828459045, raised to the xth power

LN(x) Natural (base e) logarithm of x

LOG(x) Common (base 10) logarithm of x

LOG2(x) Base 2 logarithm of x

Other Mathematical Functions

ABS(x) Absolute value of x

SQRT(x) Positive square root of x

CBRT(x) Cube root of x

ERF(x) Error function associated with normal distribution curve

ERFC(x) Complementary error function, 1 - erf(x)

GAMMA(x) Gamma function, x-1 factorial for integer x>0

RTOD(x) Convert x in radians to degrees

DTOR(x) Convert x in degrees to radians

PERM(n,r) Permutations of n items taken r at a time

COMB(n,r) Combinations of n items taken r at a time

SGN(x) Sign (-1, +1 or 0) of x

INT(x) Integer part of x

ROUND(x) Nearest integer to x

CEIL(x) Smallest integer >= x

FLOOR(x) Largest integer <= x

STEP(x,y) Returns 1 if x >= y, 0 if x < y

ASSIGNMENT STATEMENTS AND USER-DEFINED FUNCTIONS

================================================

The assignment statement is used to define variables and user-defined

functions. They have the following formats:

variable = expression

function(arguments) = expression

Once the assignment has been done, the variable or function is

associated with the given expression. For a user-defined function,

the right-side expression should use the arguments listed in the

function's argument list. If a variable or function is used in an

expression before it is defined in an assignment statement, an error

message will be displayed.

Examples:

a = 2

b = sqrt(a)

area_circle(radius) = pi() * radius ^ 2

c = area_circle(a)

Assignment in SCIEQS assigns the expression, not the value of the

expression. What this means is the value of variables can change if

the variables they depend on change. For example, after the four

assignments in the above example have been done, the values of the

variables are:

A = 2

B = 1.4142135623731

C = 12.566370614359

But suppose we change the value of variable A by assigning it the

value 3. Now the values of variables B and C change automatically

because they were defined in terms of variable A.

A = 3

B = 1.7320508075689

C = 28.274333882308

This feature is important when you want to play "What happens if..."

games. You can build a mathematical model using different formulas

and see what happens when you start changing the values of some of the

variables.

COMMANDS IN SCIEQS

==================

Commands in SCIEQS begin with the character "!". Following is a list

of available commands and what they do.

SOLVE COMMAND

-------------

The solve command uses a numerical approximation method to solve

equations. It has the form

!solve variable , [ low, high ] : equation

Example: Solve for x where x^3 - 11*x^2 + 39*x = 27.

> !solve x, [-100,100]: x^3 - 11*x^2 + 39*x = 27

= 0.90375019315913

The variable x now has the value 0.90375019315913 for use in later

calculations.

The values in brackets [ ] represent the low and high bounds of an

interval in which to look for a solution. The approximation method

first takes a trial value at the midpoint of the specified interval

and iterates until the trial values converge on a solution. If the

equation to be solved has singularity points, choose the intervals to

avoid the singularities. SCIEQS may not be able to find a solution if

you include singularity points within the intervals.

If the equation has multiple solutions within the given interval,

SCIEQS will usually find one of them. To find multiple solutions, you

must narrow the search interval to include only one solution at a

time. You can narrow down the search intervals by plotting the

equations to find the vicinity of the solutions.

QUAD COMMAND

------------

The quadrature command uses a numerical approximation method to

evaluate definite integrals. It has the form

!quad variable , [ low, high ] : integrand

The variable indicates the "variable of integration." The values in

brackets [ ] represent the low and high limits of integration. The

integrand is the expression to be integrated. SCIEQS will integrate

the integrand from low to high limits with respect to the specified

variable of integration.

ã

ô

Example: Evaluate the definite integral ³ sin(x) dx .

õ

0

> !quad x, [0,pi()] : sin(x)

estimated error = 4.206476E-016

= 2

An estimate of the size of the actual error in the result is first

listed. If the approximation method encounters problems during the

integration, it may execute much longer than usual in an attempt to

achieve enough accuracy in the result. If the accuracy can not be

achieved, a warning message will be shown indicating the result may be

unreliable. The result of the integration is then listed below the

estimated error. The variable of integration will now have the result

of the integration for use in later calculations. In the above

example, the variable x will now contain the result.

SCIEQS may not be able to evaluate the integral if there are

singularity points within the limits of integration which cause

floating point overflows. If a floating point overflow occurs, the

program may terminate unexpectedly.

DERIV COMMAND

-------------

The derivative command uses a numerical approximation method to

evaluate the derivative of a function at a specified point. It has

the form

!deriv variable , point : function

The variable indicates the "variable of differentiation." The

derivative is taken with respect to the variable of differentiation.

Point indicates the value of the variable of differentiation where the

derivative will be evaluated. It must be a value where the function

is defined. Function indicates the function to be differentiated.

Example: Evaluate the derivative of f(x) = 3 * x^4 at x = 7.

> !deriv x, 7 : 3 * x^4

estimated error = 0

= 4116

An estimate of the size of the actual error in the result is first

listed. The result of the differentiation is then listed below the

estimated error. The variable of differentiation will now have the

result of the differentiation for use in later calculations. In the

above example, the variable x will now contain the result.

SCIEQS may not be able to evaluate the derivative if the function is

undefined near the point of evaluation. You may restrain the

numerical approximation method by using the following form of the

command.

!deriv variable , point , range : function

Range specifies the range (point - range) to (point + range). SCIEQS

will not try to evaluate the function outside of this range. The

default value of range is ABS(point / 16). If there are singularity

points within the range (even the default range), the derivative

command will probably fail to evaluate the derivative. Specifying a

very small value for range may increase the error in the

approximation.

LIST COMMAND

------------

The list command is used to display the values of all the variables

used. The command has the following forms:

!list

!list filename

The first form displays the variables on the standard output. The

second form stores the output in the named file.

DEL COMMAND

-----------

The del command is used to delete variables no longer needed. The

command has the form:

!del variable

When the del command is executed, all occurrences of the variable in

formulas and function definitions are replaced by the variable's

current numerical value. Here is an example:

a = 2

b = 5 * a

!del a

!list

The list command will not show variable 'a'. Variable 'b' will have a

value of 10 since the del command replaced the "5 * a" with "5 * 2".

ECHO/NOECHO COMMANDS

--------------------

The echo and noecho commands control the echoing of the input commands

to the output destination. They have the following forms:

!echo

!noecho

The echo command turns on input command echoing while the noecho

command turns it off. SCIEQS starts out with echoing turned off. You

may wish to turn on echoing when sending output to a file so the

output file will contain a record of the input as well as the results.

SYS COMMAND

-----------

The sys command allows you to execute MS-DOS commands from within

SCIEQS. It has the following forms:

!sys

!sys MS-DOS_command

The first form starts the MS-DOS command shell underneath SCIEQS. You

must type "EXIT" at the MS-DOS command prompt to return to SCIEQS.

The second form executes the given MS-DOS command and automatically

returns to SCIEQS after the command finishes.

EXIT/QUIT COMMANDS

------------------

Both commands terminate SCIEQS execution. They have the forms

!exit

!quit

COMMAND FILES IN SCIEQS

=======================

SCIEQS supports the inclusion of input from command files. These

command files are ASCII text files which contain data, numerical

operations, and commands for SCIEQS to interpret. You may think of

them as "include" files. To include a file, give the following

command:

@filename

SCIEQS will open the file named after the "@" character and start

getting its input from that file. When the end of file is reached,

SCIEQS will resume getting its input from the original source. You

may specify a directory pathname if the file is not in the current

directory. You may nest command files within other command files, but

MS-DOS may limit you in the number of files you may open at any one

time.

COMMENTS IN SCIEQS

==================

Comments can be included in the input to help document your work. A

comment begins with a semicolon and continues to end of the line. You

can put a comment after an expression to explain the operation on that

line. You can also start a line with a comment in which case the

entire line is a comment.

Examples: cbrt(x) ;taking the cube root of variable x

; This entire line is a comment.

MATH COPROCESSOR USAGE

======================

The SCIEQS program will automatically detect the presence of an 8087,

80287, or 80387 math coprocessor in your computer and use it for

calculations if available. If a math coprocessor is not available,

the program will still work, but at a slower execution speed.

UPDATE HISTORY

==============

Version 1.0: Initial release.

Version 1.1: Added feature to evaluate definite integrals.

Version 1.2: Added feature to evaluate derivatives.

Version 1.3: Added command to delete variables.

Improved comb() and perm() functions.

Fixed bug in hypot() function.

DISCLAIMER

==========

The SCIEQS program and associated files are provided "as is" without

any warranty or guarantee, including no warranty of fitness for a

particular purpose. You assume the entire risk as to the results

generated through your use of this software.

DISTRIBUTION

============

The shareware version of SCIEQS is distributed on electronic bulletin

boards and by computer clubs. You may use the software and make

multiple backup copies. Versions of SCIEQS designated as "shareware"

may be given to friends and uploaded to electronic bulletin boards

provided no changes have been made to the distribution package. Do

not distribute copies of the program which do not have the initial

screen explaining the shareware concept.

If you find this program useful, please feel free to give consideration

for my time and effort in developing this tool. Please send $6.00 to

the address below and ask for SCIEQS registration. The file ORDER.ME

contains a registration form that can be printed on your printer if

you wish. In return, you will receive a floppy disk with the latest

version of SCIEQS. The introductory screen along with its keyboard

entry will NOT appear in the copy of the program you will receive upon

registration. There will be no advertising in your registered copy.

Please upload the shareware version of this program onto as many local

bulletin boards as possible. You will be helping me make this tool

available to many more people giving me incentive to make further

improvements to the program.

Send contributions to: George Yee

1847 N. Frances Blvd.

Tucson, AZ 85712

Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/