Richard, that's great help, thank you!
Indeed I'm trying to make Maxima solve integrals the "human way" for
learning purposes.
If you have any additional information/hints on that topic (maybe it has
even been done already?), I'd be very grateful.
Regards,
David
Am 13.09.2013 03:19, schrieb Richard Fateman:
> On 9/12/2013 1:09 AM, David Scherfgen wrote:
>> Hello,
>>
>> I've stumpled upon the following behavior:
>>
>> (%i1) matchdeclare(f, true);
>> defmatch(df_over_f, diff(f, x) / f);
>> defmatch(df_times_f, diff(f, x) * f);
>> df_over_f(cos(x) / sin(x));
>> df_times_f(cos(x) * sin(x));
>> (%o1) done
>> (%o2) df_over_f
>> (%o3) df_times_f
>> (%o4) [f=sin(x)]
>> (%o5) false
>>
>> In other words:
>> The pattern matcher correctly recognizes cos(x)/sin(x), but fails to
>> recognize cos(x)*sin(x) - the only difference being the operator.
> just a guess, but in sin(x)*cos(x), there are 2 ways of matching f.
> f=sin(x) and f=cos(x).
> If the wrong choice is made, then the diff(f,x) will not match the
> other term.
>
> If you want to find a way to detect if the derivative of one term
> exactly divides the other, you
> have to sequence through all the terms, or do something equivalent.
> The defmatch
> mechanism does not do exhaustive search.
>
>
> A paper which describes how to achieve what you want (almost very
> explicitly your issue, I think) is
>
> www.cs.berkeley.edu/~*fateman*/papers/partition.pdf
>
>
>>
>> It also fails for the very simple case of 1 and x:
>>
>> (%i2) df_over_f(1 / x);
>> df_times_f(1 * x);
>> (%o6) [f=x]
>> (%o7) false
>>
>> Am I doing something wrong here?
> 1*x is indistinguishable from x. There is no "*" in it at all.
>
>>
>> Regards,
>> David
>> _______________________________________________
>> Maxima mailing list
>> Maxima at math.utexas.edu
>> http://www.math.utexas.edu/mailman/listinfo/maxima
>