home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
utility
/
sm22a.zip
/
SYMBMATH.H13
< prev
next >
Wrap
Text File
|
1993-03-30
|
7KB
|
228 lines
13.18 Learning from Users
One of the most important feature of SymbMath is its ability
to deduce and expand its knowledge. If the user provides it with the
necessary facts, SymbMath can solve many problems that it was unable
to solve before. The followings are several ways in which SymbMath is
able to learn from the user.
13.8.1 Learning indefinite and definite integrals from a derivative
If the user provides the derivative of a known or unknown
function, SymbMath can deduce the indefinite and definite integrals of
that function. Usually finding derivative of the function are much
easier than finding integral of that function.
Example 13.18.1.1 :
If we know a derivative of an function f(x) (f(x) is a known or
unknown function), SymbMath can learn the integrals of that function
from its derivative.
First check SymbMath wether or not it had already known
indefinite and definite integrals of an unknown function f(x).
In the input window type :
inte(f(x), x)
inte(f(x), x, 1, 2)
end
In the output window you'll see :
inte(f(x), x)
inte(f(x), x, 1, 2)
end
As the output windows displayed only what was typed in the input
windows without any computed results, imply that SymbMath has no
knowlege of the indefinite and definite integrals of the functions
in question. Now teach SymbMath the derivative of f(x) on the first
line, and then run the program again.
Input:
d(f(x_), x_) = exp(x)/x
inte(f(x), x)
inte(f(x), x, 1, 2)
end
Output:
d(f(x_), x_) = e^x/x
constant + x*f(x) - e^x
e - f(1) + 2*f(2) - e^2
As demonstrated, the user only supplied the derivative of the function
and in exchange SymbMath logically deduced its integral.
Example 13.18.1.2 :
Integrate asin(x). First check if the integral or the derivative
of asin(x) had already been stored in the memory of SymbMath.
Input window :
d(asin(x), x)
inte(asin(x), x)
end
Output window :
d(asin(x), x)
inte(asin(x), x)
As the output window displayed no results, provide the derivative of the
function on the first line, and run the program.
Input window :
d(asin(x_), x_) = 1/sqrt(1-x^2)
inte(asin(x), x)
end
Output window :
d(asin(x_), x_) = 1/sqrt(1-x^2)
constant + x*asin(x) +1/sqrt(1 - x^2)
13.18.2 Learning complicated indefinite integrals from a simple
indefinite integral
The user supplies a simple indefinite integral, and in return, SymbMath
will perform the related complicated integrals.
Example 13.8.2.1 :
Check whether SymbMath already knowns the following integrals or not.
Input window :
inte(tan(x)^2, x)
inte((2*tan(x)^2+x), x)
inte(inte(tan(x)^2+y), x), y)
end
Output window :
inte(tan(x)^2, x)
inte((2*tan(x)^2+x), x)
inte(inte(tan(x)^2+y), x), y)
Supply like in the previous examples the following in information
integral of tan (x) is tan (x) - x; then ask the indefinite integral
of 2*tan(x)^2+x, and a double indefinite integral of 2*tan (x)^2 + x,
and a double indefinite integral of respect to both x and y. Change
the first line, and then the program again.
Input window :
inte(tan(x)^2, x) = tan(x) - x
inte((2*tan(x)^2+x), x)
inte(inte(tan(x)^2+y), x), y)
end
Output window :
inte(tan(x)^2, x) = tan(x) - x
2 (tan(x) - x) + 1/2*x^2
tan(x)*y - x*y + x*y^2
The User can also ask SymbMath to perform the following
integrals: inte(inte(tan(x)^2+y^2), x), y),
inte(inte(tan(x)^2*y), x), y), inte(x*tan(x)^2, x),
triple integral of tan(x)^2-y+z, or others.
13.18.3 Learning definite integral from indefinite integral
The user continues to ask indefinite integral.
Input window :
inte(inte(tan(x)^2+y, x from 0 to 1), y from 0 to 2)
end
Output:
2 tan(1)
13.18.4 Learning complicated derivative from simple derivative
SymbMath can learn complicated derivatives from a simple derivative
even thought the function to be differentiated is any function, not
standard function.
Example 13.8.4.1 :
Differentiate ci(x^2)^6, where ci(x) is a cosine integral function
instead of a standard function.
Input:
d(ci(x^2)^6, x)
end
Output:
12*x*ci(x^2)^5*d(ci(x^2), x^2)
It output only the part derivative. d(ci(x^2), x^2) in the output
suggest that the user should teach SymbMath d(ci(x_), x_) = cos(x)/x,
do so and run it again.
Input:
d(ci(x_), x_) = cos(x)/x
d(ci(x^2)^6, x)
end
Output:
d(ci(x_), x_) = cos(x)/x
12*ci(x^2)^5*cos(x)
This time we get complete derivative.
13.18.5 Learning integration from algebra
If the user shows SymbMath algebra, SymbMath can learn integrals.
Example 13.8.5.1 :
Input sin(x)^2=1/2-1/2*cos(2*x), then ask for the integral of sin(x)^2.
Input window :
sin(x)^2=1/2-1/2*cos(2*x)
inte(sin(x)^2, x)
end
Output window :
sin(x)^2 = 1/2 - 1/2*cos(2*x)
1/2*x - 1/4*sin(2*x)
SymbMath is very flexible, It learned to solve these problems, even though
the types of problems are different, e.g. learning integrals from
derivatives or algebra.
13.18.6 Learning complicated algebra from simple algebra
SymbMath has the ability to learn complicated algebra from simple algebra.
Example F1 :
Transform sin(x)/cos(x) into tan(x) in an expression.
input window:
sin(x)/cos(x) = tan(x)
x+sin(x)/cos(x)+a
Output window :
sin(x)/cos(x) = tan(x)
a + x + tan(x)
The difference between learning and programming is as follows :
the learning process of SymbMath is very similar to the way human
beings learn, and that is accomplished by knowing certain rule that
can be applied to several problems. Programming is diffrent in the way
that the programmer have to accomplish many tasks before he can begin
to solve a problem. First, the programmer defines many subroutines for
the individual integrands (e.g. tan(x)^2, tan(x)^2+y^2, 2*tan(x)^2+x,
x*tan(x)^2, etc.), and for individual integrals (e.g. the indefinite
integral, definite integral, the indefinite double integrals,
indefinite triple integrals, definite double integrals, definite
triple integrals, etc.), second, write many lines of program for the
individual subroutines, (i.e. to tell the computer how to calculate
these integrals), third, load these subroutines, finally, call these
subroutines. That is precisely what SymbMath do not ask the user to do.
In one word, programming means that programmers must
provide step-by-step procedures telling the computer how to solve
each problems. By contrast, learning means that users need only supply
the necessary facts, SymbMath will determine how to go about
solutions.
If the learning is saved into the initial file init.sm, the
learning will become the knowledge of the SymbMath system, users need
not to teach SymbMath again when users run SymbMath next time.