## 75 Reputation

5 years, 261 days

## Boolean algebra in combination with "for...

Maple 2016

Hi there!

I am trying to tell Maple to print something one time once a condition has been met for a variable that ranges from a to b, let's say from 1 to 9 in this case. Testbestanden is to be printed, if (F[i]+F[i+1]<20) is true for every i, and Durchgefallen is to be printed as soon as one counterexample is found. The following code illustrates what I need, it doesn't work, however. What is the correct syntax? Switching the lines "if (F[i]+F[i+1]<20)" and "for i from 1 to 9" leads to Maple printing "Testbestanden" for every i that fulfils the statement which is not what I need either.

for i from 1 to 10 do
F[i]:=i
end do;

if (F[i]+F[i+1]<20)
for i from 1 to 9
then print(Testbestanden)

else print(Durchgefallen)
end if
end do

## On making LinearAlgebra[LinearSolve] ret...

Hi there:

I have a short question. For an algorithm, I need a solution to a linear equation, and I use LinearAlgebra[LinearSolve]. In the case of

0            0                    0

=

5            0                    0

for example, there are infinitely many, however, so Maple returns (_t2,0). My algorithm just needs one solution, if there are multiple ones, then any (except for _t2=0) is fine. However, if (_t2,0) is the saved solution, the algorithm later breaks down, since it does not expect the extra variable. Is there any way to tell Maple to replace every variable with, say, 1 when solving such an equation?

## Subprocedure spits out the answer of the...

Maple 2016

This is my code:

NEUZMinus:= proc(Unten, Oben, f,G,Liste,n)::real;
#Unten:= Untere Intervallgrenze; Oben:= Obere Intervallgrenze; f:= zu integrierende Funktion;
#G:= Gewicht; n:= Hinzuzufügende Knoten;
local i;
with(LinearAlgebra);
with(ListTools);
Basenwechsel:=proc(Dividend, m);

print(Anfang,Dividend,p[m]);
Koeffizient:=quo(Dividend, p[m],x);

Rest:=rem(Dividend, p[m],x);

if m=0 then
Basenwechsel:=[Koeffizient];
else

Basenwechsel:=[Koeffizient,op(Basenwechsel(Rest,m-1))];

end if;

end proc;
p[-1]:=0;
p[0]:=1;
for i from 1 to (numelems(Liste)+n)*2 do
print(p[i]);
c[i-1]:=coeff(p[i],x,i)/coeff(p[i-1],x,i-1);
d[i-1]:=(coeff(p[i],x,(i-1))-coeff(p[i-1],x,(i-2)))/coeff(p[i-1],x,(i-1));
if i <> 1 then
e[i-1]:=coeff(p[i]-(c[i-1]*x+d[i-1])*p[i-1],x,i-2)/coeff(p[i-2],x,i-2);
else
e[i-1]:=0;
end if;
end do;
print(Liste[1],numelems(Liste));
Hn:=mul(x-Liste[i],i=1..numelems(Liste));
print(Hn);
Koeffizienten:=Reverse(Basenwechsel(Hn,n)); #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
print(Koeffizienten,HIER);

print(c,d,e);
a[0][0]:=1;
a[1][0]:=x;
a[1][1]:=-e[1]*c[0]/c[1]+(d[0]-d[1]*c[0]/c[1])*x+c[0]/c[1]*x^2;
for s from 2 to numelems(Liste)+n do
a[s][0]:=x^s;
a[s][1]:=-e[s]*c[0]/c[s]*x^(s-1)+(d[0]-d[s]*c[0]/c[s])*x^s+c[0]/c[s]*x^(s+1);
print (coeff(a[s][1],x,s),as1s);
end do;
for s from 2 to numelems(Liste)+n do
for j from 2 to s do

print(c[j-1]*sum(coeff(a[s][j-1],x,k-1)/c[k-1]*x^k,k=abs(s-j)+2..s+j));  print(sum((d[j-1]-c[j-1]*d[k]/c[k])*coeff(a[s][j-1],x,k)*x^k,k=abs(s-j)+1..s+j-1));  print(c[j-1]*sum(e[k+1]*coeff(a[s][j-1],x,k+1)/c[k+1]*x^k,k=abs(s-j)..s+j-2));print(e[j-1]*sum(coeff(a[s][j-2],x,k)*x^k,k=s-j+2..s+j-2));

a[s][j]:=c[j-1]*sum(coeff(a[s][j-1],x,k-1)/c[k-1]*x^k,k=abs(s-j)+2..s+j)+sum((d[j-1]-c[j-1]*d[k]/c[k])*coeff(a[s][j-1],x,k)*x^k,k=abs(s-j)+1..s+j-1)-c[j-1]*sum(e[k+1]*coeff(a[s][j-1],x,k+1)/c[k+1]*x^k,k=abs(s-j)..s+j-2)+e[j-1]*sum(coeff(a[s][j-2],x,k)*x^k,k=abs(s-j)+2..s+j-2);

end do;
end do;
for s from 0 to numelems(Liste)-1 do
for j from 0 to s do
print(a[s][j], Polynom[s][j]);
end do;
end do;
M:=Matrix(n,n);
V:=Vector(n);

for s from 0 to n-1 do
for j from 0 to s do
M(s+1,j+1):=sum(coeff(a[s][j],x,k)*Koeffizienten[k+1],k=0..n);
if s<>j then
M(j+1,s+1):=M(s+1,j+1);
end if;
print(M,1);
end do;
print(testb1);print(coeff(a[n][s],x,2));print(Koeffizienten[3]);print(testb2);
V(s+1):=-sum(coeff(a[n][s],x,k)*Koeffizienten[k+1],k=0..n);

print(M,V);
end do;
print(M,V);
K:=LinearSolve(M,V);
K(n+1):=1;
print(K);

print(test2,coeff(a[max(3,2)][min(1,2)],x,2));
print(Koeffizienten[3]);
for l from 0 to n do
for m from 0 to numelems(Liste)do
print(Koeffizienten[m+1]*coeff(a[7][l],x,m),a[7][l],m,Koeff,Koeffizienten[m+1])
end do;
end do;
for l from 0 to n do
end do;
fsolve(nNeu);
Hnm:=Hn*Em;
KnotenHnm:=fsolve(Hnm);
print(Hn,alt,Em,neu,Hnm);
print(Testergebnis,nNeu);
print(fsolve(Hnm),fsolve(nNeu));
KoeffizientenHnm:=Reverse(Basenwechsel(Hnm,n+numelems(Liste)));  #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
print(KoeffizientenHnm);
h0:=int(diff(G,x),x=Unten..Oben);
b[n+numelems(Liste)+2]:=0;
b[n+numelems(Liste)+1]:=0;
for i from 1 to n+numelems(Liste) do
for j from n+numelems(Liste) by -1 to 1 do
print(test21);
b[j]:=KoeffizientenHnm[j]+(d[j]+KnotenHnm[i]*c[j])*b[j+1]+e[j+1]*b[j+2];
print(test22);
end do;
print(test23);
gxi:=quo(Hnm,x-KnotenHnm[i],x);
print(test24);
Gewichte[i]:=c[1]*b[2]*h0/gxi(i);

Delta[i]:=c[1]*b[2];
end do;
print(KnotenHnm);
print(Gewichte);
sum(Knoten[k]*Gewichte[k],k=1..n+numelems(Liste));
end proc

With the first use of the subprocedure Basenwechsel, everything works fine. With the input

NEUZMinus(-1,1,x,x,[-sqrt(3/5),0,sqrt(3/5)],4)

I get the result [0,0,0,1,0] correctly.

The following time I use it, the polynomial is different, and m is 7 in that case, so the list should have 8 entries, it just returns the same [0,0,0,1,0] again, however. Changing the polynomial in the first application to say 5*Hn results in [0,0,0,5,0] in both cases again. The procedure seems to have saved the old values and never overwrites them. How can I fix this? I have highlighted the use of the procedure with exclamation marks.

P.S.: The lengthy result is this:

NEUZMinus(-1,1,x,x,[-sqrt(3/5),0,sqrt(3/5)],4)

x
2   1
x  - -
3
3   3
x  - - x
5
4   3    6  2
x  + -- - - x
35   7
5   5      10  3
x  + -- x - -- x
21     9
6    5    5   2   15  4
x  - --- + -- x  - -- x
231   11      11
7   35      105  3   21  5
x  - --- x + --- x  - -- x
429     143      13
8    7     28   2   14  4   28  6
x  + ---- - --- x  + -- x  - -- x
1287   143      13      15
9    63      84   3   126  5   36  7
x  + ---- x - --- x  + --- x  - -- x
2431     221      85       17
10    63     315   2   210  4   630  6   45  8
x   - ----- + ---- x  - --- x  + --- x  - -- x
46189   4199      323      323      19
11    33      55   3   330  5   330  7   55  9
x   - ---- x + --- x  - --- x  + --- x  - -- x
4199     323      323      133      21
12    33     198   2   2475  4   660  6   495  8   66  10
x   + ----- - ---- x  + ---- x  - --- x  + --- x  - -- x
96577   7429      7429      437      161      23
13    429       2574   3   1287  5   1716  7   429  9   78  11
x   + ------ x - ----- x  + ---- x  - ---- x  + --- x  - -- x
185725     37145      2185      805       115      25
14     143      1001   2   1001  4   1001  6   1001  8
x   - ------- + ------ x  - ---- x  + ---- x  - ---- x
1671525   111435      6555      1035      345

1001  10   91  12
+ ---- x   - -- x
225        27
1   (1/2)
- - 15     , 3
5
/    1   (1/2)\   /    1   (1/2)\
|x + - 15     | x |x - - 15     |
\    5        /   \    5        /
/    1   (1/2)\   /    1   (1/2)\   4   3    6  2
Anfang, |x + - 15     | x |x - - 15     |, x  + -- - - x
\    5        /   \    5        /       35   7
3   3     3   3
Anfang, x  - - x, x  - - x
5         5
2   1
Anfang, 0, x  - -
3
Anfang, 0, x
Anfang, 0, 1
[0, 0, 0, 1, 0], HIER #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
c, d, e
0, as1s
0, as1s
0, as1s
0, as1s
0, as1s
0, as1s
4   2    4
-- x  + x
15
0
4    9   2
- -- - -- x
45   35
1  2
- - x
3
9   3    5
-- x  + x
35
0
12      16  3
- --- x - -- x
175     63
1  3
- - x
3
12   2   8   4    6
--- x  + -- x  + x
175      45
0
4     8   2   25  4
- --- - --- x  - -- x
175   175      99
12   2   4   4
- --- x  - -- x
175      15
16  4    6
-- x  + x
63
0
16   2   25  4
- --- x  - -- x
245      99
1  4
- - x
3
16   3   40   5    7
--- x  + --- x  + x
245      231
0
64       640   3   36   5
- ---- x - ----- x  - --- x
3675     14553      143
64   3   4   5
- --- x  - -- x
945      15
64   2   16   4   72   6    8
---- x  + --- x  + --- x  + x
3675      385      455
0
64      144   2    40   4   49   6
- ----- - ----- x  - ---- x  - --- x
11025   13475      1001      195
24   4   9   6   144   2
- --- x  - -- x  - ---- x
539      35      8575
25  5    7
-- x  + x
99
0
400   3   36   5
- ---- x  - --- x
6237      143
1  5
- - x
3
400   4   20   6    8
---- x  + --- x  + x
6237      117
0
80   2    500   4   49   6
- ---- x  - ----- x  - --- x
4851      11583      195
20   4   4   6
- --- x  - -- x
297      15
80   3    40   5   7   7    9
---- x  + ---- x  + -- x  + x
4851      1001      45
0
64        640   3   28   5   64   7
- ----- x - ----- x  - --- x  - --- x
14553     63063      715      255
4   5   9   7    80   3
- -- x  - -- x  - ---- x
91      35      4851
64    2    640   4   16   6   160   8    10
----- x  + ----- x  + --- x  + ---- x  + x
14553      63063      455      1071
0
64      128   2    80   4   224   6   81   8
- ----- - ----- x  - ---- x  - ---- x  - --- x
43659   49049      9009      5967      323
640   4   16   6   16  8    1280   2
- ----- x  - --- x  - -- x  - ------ x
63063      405      63      305613
36   6    8
--- x  + x
143
0
100   4   49   6
- ---- x  - --- x
1573      195
1  6
- - x
3
100   5   28   7    9
---- x  + --- x  + x
1573      165
0
1600   3   336   5   64   7
- ----- x  - ---- x  - --- x
99099      7865      255
48   5   4   7
- --- x  - -- x
715      15
1600   4   28   6   144  8    10
----- x  + --- x  + --- x  + x
99099      715      935
0
320   2    140   4   2352   6   81   8
- ----- x  - ----- x  - ----- x  - --- x
77077      14157      60775      323
12   6   9   8    180   4
- --- x  - -- x  - ----- x
275      35      11011
320   3    320   5   32   7   216   9    11
----- x  + ----- x  + --- x  + ---- x  + x
77077      33033      935      1463
0
256        5120    3    1152   5    4608   7   100  9
- ------ x - ------- x  - ------ x  - ------ x  - --- x
231231     2081079      133705      124355      399
64   5   256   7   16  9    25600   3
- ---- x  - ---- x  - -- x  - ------- x
6435      6545      63      6243237
256    2    320    4    1280   6    800   8   100  10    12
------ x  + ------ x  + ------ x  + ----- x  + --- x   + x
231231      127413      153153      24871      693
0
256      64    2    32000    4    1120   6    900   8   121  10
- ------ - ----- x  - -------- x  - ------ x  - ----- x  - --- x
693693   99099      15162147      138567      24871      483
8000    4    160   6    600   8   25  10    8000    2
- ------- x  - ----- x  - ----- x  - -- x   - ------- x
3270267      18513      16093      99       7630623
49   7    9
--- x  + x
195
0
588   5   64   7
- ---- x  - --- x
9295      255
1  7
- - x
3
588   6   112  8    10
---- x  + --- x  + x
9295      663
0
980   4    5488   6   81   8
- ----- x  - ------ x  - --- x
61347      129285      323
196   6   4   8
- ---- x  - -- x
2925      15
980   5   2352   7   189   9    11
----- x  + ----- x  + ---- x  + x
61347      60775      1235
0
2240   3    84672   5    4032   7   100  9
- ------ x  - ------- x  - ------ x  - --- x
552123      8690825      104975      399
48   7   9   9    756   5
- ---- x  - -- x  - ----- x
1105      35      46475
2240   4    896   6    7776   8   40   10    12
------ x  + ----- x  + ------ x  + --- x   + x
552123      94809      230945      273
0
64    2    22400   4    127008   6   1080   8   121  10
- ----- x  - ------- x  - -------- x  - ----- x  - --- x
61347      9386091      15011425      29393      483
1792   6    48   8   16  10    2240   4
- ------ x  - ---- x  - -- x   - ------ x
182325      1235      63       552123
64    3    22400   5    1120   7    600   9   385   11    13
----- x  + ------- x  + ------ x  + ----- x  + ---- x   + x
61347      9386091      138567      19019      2691
0
256        51200    3    13440   5    2560   7    5500   9
- ------ x - -------- x  - ------- x  - ------ x  - ------ x
920205     84474819      6605027      323323      153387

144  11
- --- x
575
22400   5    4320   7   1000   9   25  11    56000    3
- ------- x  - ------ x  - ----- x  - -- x   - -------- x
9386091      508079      27027      99       54660177
256    2     7168    4    13440   6    80000    8   100   10
------ x  + -------- x  + ------- x  + -------- x  + ---- x
920205      11471889      6605027      10669659      3289

504   12    14
+ ---- x   + x
3575
0
256       3072    2    112000    4    112000   6    8100    8
- ------- - -------- x  - --------- x  - -------- x  - ------- x
2760615   19119815      217965891      59445243      1062347

264   10   169  12
- ---- x   - --- x
7475       675
89600    4    13440   6    21600   8   140   10   36   12
- --------- x  - ------- x  - ------- x  - ---- x   - --- x
149134557      6605027      2719717      3887       143

768    2
- ------- x
2924207
1, Polynom[0][0]
x, Polynom[1][0]
1    2
- + x , Polynom[1][1]
3
2
x , Polynom[2][0]
4       3
-- x + x , Polynom[2][1]
15
4   2    4   4
-- x  + x  + --, Polynom[2][2]
21           45
Matrix(%id = 18446745693991291350), 1
testb1
0
0
testb2
Matrix(%id = 18446745693991291350),

Vector[column](%id = 18446745693991291470)
Matrix(%id = 18446745693991291350), 1
Matrix(%id = 18446745693991291350), 1
testb1
0
0
testb2
Matrix(%id = 18446745693991291350),

Vector[column](%id = 18446745693991291470)
Matrix(%id = 18446745693991291350), 1
Matrix(%id = 18446745693991291350), 1
Matrix(%id = 18446745693991291350), 1
testb1
16
---
245
0
testb2
Matrix(%id = 18446745693991291350),

Vector[column](%id = 18446745693991291470)
Matrix(%id = 18446745693991291350), 1
Matrix(%id = 18446745693991291350), 1
Matrix(%id = 18446745693991291350), 1
Matrix(%id = 18446745693991291350), 1
testb1
0
0
testb2
Matrix(%id = 18446745693991291350),

Vector[column](%id = 18446745693991291470)
Matrix(%id = 18446745693991291350),

Vector[column](%id = 18446745693991291470)
Vector[column](%id = 18446745693991291830)
9
test2, --
35
0
7
0, x , 0, Koeff, 0
7
0, x , 1, Koeff, 0
7
0, x , 2, Koeff, 0
7
0, x , 3, Koeff, 1
49   6    8
0, --- x  + x , 0, Koeff, 0
195
49   6    8
0, --- x  + x , 1, Koeff, 0
195
49   6    8
0, --- x  + x , 2, Koeff, 0
195
49   6    8
0, --- x  + x , 3, Koeff, 1
195
112  7    9   588   5
0, --- x  + x  + ---- x , 0, Koeff, 0
663           9295
112  7    9   588   5
0, --- x  + x  + ---- x , 1, Koeff, 0
663           9295
112  7    9   588   5
0, --- x  + x  + ---- x , 2, Koeff, 0
663           9295
112  7    9   588   5
0, --- x  + x  + ---- x , 3, Koeff, 1
663           9295
2352   6   189   8    10    980   4
0, ----- x  + ---- x  + x   + ----- x , 0, Koeff, 0
60775      1235            61347
2352   6   189   8    10    980   4
0, ----- x  + ---- x  + x   + ----- x , 1, Koeff, 0
60775      1235            61347
2352   6   189   8    10    980   4
0, ----- x  + ---- x  + x   + ----- x , 2, Koeff, 0
60775      1235            61347
2352   6   189   8    10    980   4
0, ----- x  + ---- x  + x   + ----- x , 3, Koeff, 1
60775      1235            61347
896   5    7776   7   40   9    11    2240   3
0, ----- x  + ------ x  + --- x  + x   + ------ x , 0, Koeff, 0
94809      230945      273            552123
896   5    7776   7   40   9    11    2240   3
0, ----- x  + ------ x  + --- x  + x   + ------ x , 1, Koeff, 0
94809      230945      273            552123
896   5    7776   7   40   9    11    2240   3
0, ----- x  + ------ x  + --- x  + x   + ------ x , 2, Koeff, 0
94809      230945      273            552123
2240    896   5    7776   7   40   9    11    2240   3
------, ----- x  + ------ x  + --- x  + x   + ------ x , 3,
552123  94809      230945      273            552123

Koeff, 1
0
0
0
0
0
/    1   (1/2)\   /    1   (1/2)\       155   10  2    4
|x + - 15     | x |x - - 15     |, alt, --- - -- x  + x , neu,
\    5        /   \    5        /       891   9

/    1   (1/2)\   /    1   (1/2)\ /155   10  2    4\
|x + - 15     | x |x - - 15     | |--- - -- x  + x |
\    5        /   \    5        / \891   9         /
Testergebnis,

2459840   5    80254400        188027200   3    2240   7
- --------- x  - ----------- x + ----------- x  + ------ x
193795173      44766684963     19185722127      552123
-0.9604912687, -0.7745966692, -0.4342437493, 0., 0.4342437493,

0.7745966692, 0.9604912687, -1.435338337, -0.8946894490,

-0.5176357564, 0., 0.5176357564, 0.8946894490, 1.435338337
[0, 0, 0, 1, 0] #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
test21
Error, (in NEUZMinus) invalid subscript selector

## Making unspecified items of a list retur...

Maple

Hi there!

I am trying to save the coefficients of a polynomial in a list to work with them in a rather complicated procedure. It is about representing a polynomial via a set of orthogonal polynomials phi_n which change depending on the input. For example, phi_s*phi_0=1*phi_s, so the coefficient of phi_s is 1 and the rest is 0. I save this as a[s][0][s]:=1. In this procedure, however, the coefficient of phi_{s+1} or phi_{s+10} might come up, and I have not declared them as 0, so the procedure stops whenever something like a[s][0][s+2] or a[s][0][s+10] appears. I could work with polynomials I guess, saving x^s for the result of

phi_s*phi_0 and working with coeff (x^s,n), which would indeed return 0 if n is not s instead of aborting the entire procedure, however, to me, it's not quite beautiful coding to encrypt the needed coefficients in another polynomial instead of just extracting them into a list. Is there a way to tell Maple that anything unspecified, a[s][j][x], shall just be 0?

## Problem: Sum with greater "lower" number...

Maple

Hi there!

Essentially, sum(sqrt(-2),x=2..1) is, as it should be, 0. My issue is, that e.g. sum(sqrt(-2),x=2..0) or sum(sqrt(-2),x=2..-1)  are declared by Maple as -I*sqrt(2) and -(2*I)*sqrt(2), which, to my knowledge, is not true, and should be 0 as well. I need those results for a rather complicated algorithm to be 0, otherwise it doesn't work.

NEUZMinus:= proc(Unten, Oben, f,G,Liste,n)::real;
#Unten:= Untere Intervallgrenze; Oben:= Obere Intervallgrenze; g:= zu integrierende Funktion;
#G:= Gewicht; n:= Hinzuzufügende Knoten;

Basenwechsel:=proc(Dividend, m);

print(Anfang,Dividend,p[m]);
Koeffizient:=quo(Dividend, p[m],x);

Rest:=rem(Dividend, p[m],x);

if m=0 then
Basenwechsel:=[Koeffizient];
else

Basenwechsel:=[Koeffizient,op(Basenwechsel(Rest,m-1))];

end if;

end proc;
p[-1]:=0;
p[0]:=1;
for i from 1 to max(n,numelems(Liste)) do
print(p[i]);
c[i-1]:=lcoeff(p[i],x)/lcoeff(p[i-1],x);
d[i-1]:=coeff(p[i],x,(i-1))/coeff(p[i-1],x,(i-1));
if i <> 1 then
e[i-1]:=coeff(p[i]-(c[i-1]*x+d[i-1])*p[i-1],x,i-2)/coeff(p[i-2],x,i-2);
else
e[i-1]:=1;
end if;
end do;
print(Liste[1],numelems(Liste));
Hn:=mul(x-Liste[i],i=1..numelems(Liste));
print(Hn);
Koeffizienten:=Basenwechsel(Hn,numelems(Liste));
print(Koeffizienten);
for j from 0 to numelems(Liste)-1 do
a[s][j][j]:=1;
end do;
for s from 1 to numelems(Liste)-1 do
a[s][0]:=[1];
a[s][1]:=[-e[s]*c[0]/c[s],d[0]-d[s]*c[0]/c[s],c[0]/c[s]];
for j from 2 to numelems(Liste)-1 do
print(1);
a[s][j][abs(s-j)]:=sum(-c[j-1]*e[i+1]*a[s][j-1][i+1]/c[i+1],i=abs(s-j)..min(abs(s-j),s+j-2));
print(2);
a[s][j][abs(s-j)+1]:=sum(d[j-1]-c[j-1]*d[i]/c[i])*a[s][j-1][i],i=abs(s-j)+1..min(abs(s-j)+1,s+j-1)+sum(-c[j-1]*e[i+1]*a[s][j-1][i+1]/c[i+1],         i=abs(s-j)+1..min(abs(s-j)+1,s+j-2));
print(3);
for i from abs(s-j)+2 to s+j-2 do
a[s][j][i]:=c[j-1]*a[s][j-1][i-1]/c[i-1]+(d[j-1]-c[j-1]*d[i]/c[i])*a[s][j-1][i]-c[j-1]*e[i+1]*a[s][j-1][i+1]/c[i+1]+e[j-1]*a[s][j-2][i];

print(4);
end do;
a[s][j][s+j-1]:=sum(c[j-1]*a[s][j-1][i-1]/c[i-1],i=max(s-j+2,s+j-1)..s+j-1)+sum((d[j-1]-c[j-1]*d[i]/c[i])*a[s][j-1][i],i=max(s-j+1,s+j-1));
print(5);
a[s][j][s+j]:=sum(c[j-1]*a[s][j-1][i-1]/c[i-1],i=max(s-j+2,s+j)..s+j);
print(6);
end do;
end do

end proc

In the case of

a[s][j][abs(s-j)+1]:=sum(d[j-1]-c[j-1]*d[i]/c[i])*a[s][j-1][i],i=abs(s-j)+1..min(abs(s-j)+1,s+j-1)+sum(-c[j-1]*e[i+1]*a[s][j-1][i+1]/c[i+1],         i=abs(s-j)+1..min(abs(s-j)+1,s+j-2));

for example, the
i=abs(s-j)+1..min(abs(s-j)+1,s+j-2) clause in the end checks, wether the term should be added or not. I basically just need a way to tell Maple wether to add a term or not, depending on wether abs(s-j)+1 is not greater than s+j-2 in this case, without using if-clauses if possible. The problem here is, that min(abs(s-j)+1,s+j-2) can become 0, Maple then tries to calculate something instead of returning 0, and then complains when something inside the term is not properly defined (c[j-1] can become c[-1] for example when j=0) and aborts the entire procedure. How can I tell it to just assign 0?

 1 2 3 4 Page 3 of 4
﻿