Christian Wolinski

MaplePrimes Activity

These are answers submitted by Christian Wolinski

This is not a complete solution but you will find it useful:


A := cos(2*Pi*(x+y-2*z))+cos(2*Pi*(y+z-2*x))+cos(2*Pi*(z+x-2*y)) = 0;
B := {0 <= x, x <= 1, y <= 1, z <= 1, x < y, y < z};
V := [op](map2(op, 1, indets(A, trig)));
E0 := [n || ($1..3)] =~ V;
E := eliminate(E0, {x, y, z, n1});
A2 := add(cos(n), n = factor(subs(E[1], V)));
S := subs(E[1], B);

solve(S, {n2, n3});

solve(A2, {n2, n3});
#solve(A2, {n2, n3}, allsolutions=true);

Thumb if you like.

I believe this code is satisfactory for this task:


F := proc ()
local S, E, L, Lexc, Linc, i, s;
E, S := selectremove(type, {args}, identical({}));
L := [op](S);
S := NULL;
for i to nops(L) do
   Linc, Lexc := selectremove(member, L[i], `union`(S));
   if Linc = {} then S := S, Lexc
      else S := seq(
         proc ()
            local X;
            X := [`intersect`, `minus`](s, Linc);
            if X[1] = {} then E := {{}} end if;
            op(remove(type, X, identical({})))
         end proc(),
         s = [S]), `if`(Lexc <> {}, Lexc, NULL)
   end if
end do;
end proc;


But I still am wondering if there is existing Maple function to carry out calculation of this combinatorial problem.

I would attempt this:


Sol[1] := {solve}(sys, vars, explicit = false):
Sol[2] := factor(map(proc(E, S) solve(E union {b <> c, 0 < a^2 - b^2 + c^2}, vars, useassumptions = true, tryhard = false, explicit = true) assuming b::real, a::real, c::real, b <> c, 0 < a^2 - b^2 + c^2; end proc, Sol[1])):
Cases := Sol[2]:
for j do
td := Cases;
for i in Cases do td := map(proc(S, T) if evalb((S intersect T) = {}) then S else S intersect T, S minus T end if; end proc, td, i) end do;
if td = Cases then break else Cases := td end if;
end do:

for j from 3 by -1 to 1 do print(op(select(nops = j, Cases))) end do;

Every subcase statement is a selection from these 90 statements.


Thumb if you like.

You should familiarize yourself with Maple's evaluation rules first. B(4) is a function call. The result of a call (or the assignment) will be respresented without further valuation. To see this in action inject this print command before the fsolve:


print(B(4) = eval(B(4)));
A(p) := fsolve(B(4), x, ':-complex');

Replace B(4) with eval(B(4)).

Thumb if you like.

I think what you are trying to do is:

S := seq(u[k] = u[k](x,y,t),k = 1 .. 4), seq(a[k] = a[k](x,y,t),k = 1 .. 4);

Observe the contents of S.


Thumb if You like.


Also, you may want to take a look at
evalc(x^(1/3)); #and
solve(evalc(Im(x^(1/3))), {x});

Since the result is clearly a real number I presume you seek an algebraic computation on real values only:


Thumb if You like.


If you are trying to view text form of your formula then lprint it.

Can you verify this formula?

((product(q^i - 1, i = n + 1 - r .. n - 1))^2*((-(q^n - q - 1)^2 + q + 1)/(q^r)
   + ((q^n - 1)^2*(q^n - q)^2)/((q^r - 1)*(q^n)^2) - ((q^n)^2)/((q^r)^2))*
  q^(1/2*r^2)*q^(- 1/2*r)*(q^n)^2)/((product(q^i - 1, i = 1 .. r - 1))*q^2);

Thumb if You like.

I think your second code is equivalent to the following;

It should have been:

If you want to use solve in your example then you can simply use this option:
[solve]({0 < 272*c^3-213*c^2+52*c-4}, c, real, explicit = false); evalf(%); evalc(convert(%%, radical));

Thumb if You like.

Is this form more acceptable:

Your expression is always a root (in lambda) of one of these:



Thumb if You like.


How about this:

sys := {w = -2*Pi*i*k_2*v + 2*Pi*i*k_2*(4*K^2)/(5*Pi)*u, z = -2*Pi*i*k_1*v + 2*Pi*i*k_1*(4*K^2)/(5*Pi)*u, p*s*x = -2*Pi*i*k_1*u - 4*Pi^2*(k_1^2 + k_2^2)*x + a_1, p*s*y = -2*Pi*i*k_2*u - 4*Pi^2*(k_1^2 + k_2^2)*y + a_2, k_1*z + k_2*w = 0, k_1*x + k_2*y = 0};
sys union {-RootOf(_Z^2+1)*z-w, RootOf(_Z^2+1)*x+y};
solve(% union {w<>0});
map2(remove, evalb, [%]);
eliminate(%[1], {x, y, z, u, v, w});
collect(%, [Pi, K], factor);

In the title.

4 5 6 7 8 9 10 Last Page 6 of 21