[Maxima] Fourier elimination

Barton Willis willisb at unk.edu
Fri Dec 7 06:51:09 CST 2007

```-----maxima-bounces at math.utexas.edu wrote: -----
>Thanks for working on the Fourier elimination code.
>It's OK by me if you want to commit it on the release branch if you have
>not done so already, or, if you don't want to deal with cvs, someone else
>could do it too.

If somebody wants to put my FE code in the release branch, that's OK. I
don't know how to do this.

>Just a minor comment about the format of the result.
>
>>   (%i17) fourier_elim(abs(x) + abs(x/2) + abs(x / 3) # 1,[x]);
>>   (%o17) [x = 0] or [0 < x,x < 6/11] or [-6/11 < x,x < 0] or [6/11 < x]
>or
>> [x < -6/11]
>
>I guess I'd like to see the results represented in a more obvious way.
>Instead of lists of conditions [a, b] how about explicit conjunctions
>a and b ?

If a user wants "and" instead of a list, subst("and","[", [xxx]) will
do the conversion (yes, it's  obscure).  Maxima has many tools for
working with lists, so I think lists are not a terrible choice.

(%i7) fourier_elim([x+y < 1, x - y > 5],[x,y]);
(%o7) [y+5<x,x<1-y,y<-2]

(%i8) subst("and","[",%);
(%o8) y+5<x and x<1-y and y<-2

The FE code does work for "and" and "or" inputs, by the way

(%i9) fourier_elim(%,[x,y]);
(%o9) [y+5<x,x<1-y,y<-2]

>or stuff like foo < x and x < bar could be turned into interval objects,
>
>x = 0 or x in open_interval (0, 6/11) or ...
>
>Or maybe the result should be a set?
>
>{x = 0, x in open_interval (0, 6/11), x in open_interval (...), ...}
>
>Just some ideas. Thanks again for this contribution.
>

Yeah, we'd have to modify and extend many parts of Maxima to be able
to do anything useful with interval objects. It's a big project, I think.

Barton
```