Carl Love

Carl Love

28025 Reputation

25 Badges

12 years, 312 days
Himself
Wayland, Massachusetts, United States
My name was formerly Carl Devore.

MaplePrimes Activity


These are replies submitted by Carl Love

@erik10 If you show an example of each situation, I can explain why Maple responded the way that it did.

@erik10 If you show an example of each situation, I can explain why Maple responded the way that it did.

1. Remove all elements of list U from list A:

remove(`in`, A, U);

But searching a list is linear time whereas searching a set is logarithmic time because sets are stored sorted. So the above has time complexity O(|A|*|U|), but a trivial conversion of U to a set lowers the time complexity to O(|A|*ln(|U|)). This makes a huge difference in time when is large. So, change the above command to

remove(`in`, A, {U[]});

And do likewise for all the other alternatives for removing list U from list A: Replace with {U[]}.

2. Merge two lists into a list of pairs:

Use zip(`[]`, A, B) instead of zip((a,b)-> [a,b], A, B). This yields about 40% savings because `[]` is a kernel procedure whereas (a,b)-> [a,b] is, of course, user-defined.

@Markiyan Hirnyk Well, if we're having a competition for shortness,

nops([StringTools:-SearchAll("5", sprintf("%q", $1..2013))]);

@Markiyan Hirnyk Well, if we're having a competition for shortness,

nops([StringTools:-SearchAll("5", sprintf("%q", $1..2013))]);

@CarlitosVillalbaGalea I does mean the imaginary unit, sqrt(-1), but in the example above it cancels, leaving only real values. The cancellation can usually not be realized algebraically, but it can sometimes be realized through a conversion to trigonometric functions. I found a slightly simpler example:

 

(**)

p:= x^3-3*x+1;

x^3-3*x+1

(1)
(**)

fsolve(p);

-1.879385242, .3472963553, 1.532088886

(2)
(**)

discrim(p,x);

81

(3)

The discriminant is positive. There are three real roots.

(**)

Sol:= [solve](p);

[(1/2)*(-4+(4*I)*3^(1/2))^(1/3)+2/(-4+(4*I)*3^(1/2))^(1/3), -(1/4)*(-4+(4*I)*3^(1/2))^(1/3)-1/(-4+(4*I)*3^(1/2))^(1/3)+((1/2)*I)*3^(1/2)*((1/2)*(-4+(4*I)*3^(1/2))^(1/3)-2/(-4+(4*I)*3^(1/2))^(1/3)), -(1/4)*(-4+(4*I)*3^(1/2))^(1/3)-1/(-4+(4*I)*3^(1/2))^(1/3)-((1/2)*I)*3^(1/2)*((1/2)*(-4+(4*I)*3^(1/2))^(1/3)-2/(-4+(4*I)*3^(1/2))^(1/3))]

(4)
(**)

convert(Sol, trig);

[(1/2)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))+(1/2)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi)), -(1/4)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))-(1/4)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi))+((1/2)*I)*3^(1/2)*((1/2)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))-(1/2)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi))), -(1/4)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))-(1/4)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi))-((1/2)*I)*3^(1/2)*((1/2)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))-(1/2)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi)))]

(5)
(**)

simplify(%);

[2*cos((2/9)*Pi), -cos((2/9)*Pi)-3^(1/2)*sin((2/9)*Pi), -cos((2/9)*Pi)+3^(1/2)*sin((2/9)*Pi)]

(6)

All imaginary parts cancelled.

(**)

evalf(%);

[1.532088886, -1.879385242, .3472963559]

(7)

Same roots as with fsolve.

 

Now do it with your Matrix.

(**)

A4:= LinearAlgebra:-BandMatrix([[a||(1..3)], [-a1, -b1-a2, -b2-a3, -b3], [b||(1..3)]]);

Matrix(4, 4, {(1, 1) = -a1, (1, 2) = b1, (1, 3) = 0, (1, 4) = 0, (2, 1) = a1, (2, 2) = -b1-a2, (2, 3) = b2, (2, 4) = 0, (3, 1) = 0, (3, 2) = a2, (3, 3) = -b2-a3, (3, 4) = b3, (4, 1) = 0, (4, 2) = 0, (4, 3) = a3, (4, 4) = -b3})

(8)
(**)

LinearAlgebra:-CharacteristicPolynomial(A4,x);

x^4+(b3+b2+a3+b1+a2+a1)*x^3+(b2*b3+b3*b1+b3*a2+b3*a1+b1*b2+b2*a1+a3*b1+a3*a2+a3*a1+a1*a2)*x^2+(b1*b2*b3+b3*b2*a1+b3*a1*a2+a1*a2*a3)*x

(9)
(**)

p:= collect(expand(%/x),x);

x^3+(b3+b2+a3+b1+a2+a1)*x^2+(b2*b3+b3*b1+b3*a2+b3*a1+b1*b2+b2*a1+a3*b1+a3*a2+a3*a1+a1*a2)*x+b1*b2*b3+b3*b2*a1+b3*a1*a2+a1*a2*a3

(10)
(**)

d:= discrim(p,x);

-2*a2^3*a1^3-2*b3^3*a1^3-2*a3^3*a1^3+a2^2*a1^4+b3^2*a1^4+b2^2*a1^4+a3^2*a1^4+a2^4*a1^2+a3^4*a1^2+b2^4*a1^2+b3^4*a1^2-2*b2^3*a1^3+6*a2*b2*b1*a1^3-8*b1*b2*b3*a1^3+4*b2*b3*a2*a1^3-4*b2*b3*a3*a1^3+2*a2^3*a3*a1^2+2*a2^3*b1*a1^2+4*a2^3*b2*a1^2+2*a2^3*b3*a1^2-6*a2^2*a3^2*a1^2+a2^2*b1^2*a1^2+6*a2^2*b2^2*a1^2-6*a2^2*b3^2*a1^2+2*a2*a3^3*a1^2+4*a2*b2^3*a1^2+2*a2*b3^3*a1^2-6*a3^3*b1*a1^2+4*a3^3*b2*a1^2+6*a3^2*b1^2*a1^2+2*b2*b3^3*a1^2-2*a2^4*a3*a1-2*a2^4*b3*a1+2*a2^3*a3^2*a1+2*a2^3*b3^2*a1+2*a2^2*a3^3*a1+2*a2^2*b3^3*a1-2*a2*a3^4*a1-2*a2*b3^4*a1+2*a3^4*b1*a1-6*a3^3*b1^2*a1+2*b1*a2^2*a1^3-6*a2*b2^2*a1^3-6*b2*a3^2*a1^3-6*a3*b2^2*a1^3+4*b1*b2^2*a1^3+4*a3^2*b1*a1^3+2*a3^2*a2*a1^3+2*b3*a2^2*a1^3+2*a3*a2^2*a1^3-6*a3*b3^2*a1^3+2*b2*b3^2*a1^3+4*b3^2*b1*a1^3+2*b3^2*a2*a1^3-2*b3*a2*a1^4+4*a3^3*b3*a1^2-2*a3*a2*a1^4+4*a3^2*b1^3*a1+4*b1^3*b2^2*a1+4*b1^3*b3^2*a1-6*b1^2*b2^3*a1-6*b1^2*b3^3*a1+2*b1*b2^4*a1+2*b1*b3^4*a1-2*b2^4*b3*a1+2*b2^3*b3^2*a1+2*b2^2*b3^3*a1-2*b2*b3^4*a1-6*a2^2*b2*a1^3+2*a3*b3*a1^4-2*b2*b3*a1^4+2*b2^2*b3*a1^3+2*b2*a3*a1^4-6*b3*a3^2*a1^3+2*a2*b2*a1^4+6*a3^2*b2^2*a1^2+6*a3^2*b3^2*a1^2+4*a3*b2^3*a1^2+4*a3*b3^3*a1^2+6*b1^2*b2^2*a1^2+6*b1^2*b3^2*a1^2-6*b1*b2^3*a1^2-6*b1*b3^3*a1^2+2*b2^3*b3*a1^2-6*b2^2*b3^2*a1^2-4*a2*b1*b2*b3^3-2*a3^3*b1*b2*b3+10*a3^2*b1^2*b2*b3-6*a3^2*b1*b2^2*b3-6*a3^2*b1*b2*b3^2-4*a3*b1^3*b2*b3+8*a3*b1^2*b2^2*b3+8*a3*b1^2*b2*b3^2-6*a3*b1*b2^3*b3-4*a3*b1*b2^2*b3^2-6*a3*b1*b2*b3^3+2*a2^3*a3*b1*b2+8*a2^3*a3*b1*b3+6*a2^3*a3*b2*b3-2*a2^3*b1*b2*b3-2*a2^2*a3^2*b1*b2-18*a2^2*a3^2*b1*b3-2*a2^2*a3^2*b2*b3+6*a2^2*a3*b1^2*b2+12*a2^2*a3*b1^2*b3+4*a2^2*a3*b1*b2^2-18*a2^2*a3*b1*b3^2+6*a2^2*a3*b2^2*b3-10*a2^2*a3*b2*b3^2-6*a2^2*b1^2*b2*b3-6*a2^2*b1*b2^2*b3+10*a2^2*b1*b2*b3^2+6*a2*a3^3*b1*b2+8*a2*a3^3*b1*b3+2*a2*a3^3*b2*b3-10*a2*a3^2*b1^2*b2-18*a2*a3^2*b1^2*b3+6*a2*a3^2*b1*b2^2+12*a2*a3^2*b1*b3^2+4*a2*a3^2*b2^2*b3+6*a2*a3^2*b2*b3^2+6*a2*a3*b1^3*b2+8*a2*a3*b1^3*b3-2*a2*a3*b1^2*b2^2-18*a2*a3*b1^2*b3^2+2*a2*a3*b1*b2^3+8*a2*a3*b1*b3^3+2*a2*a3*b2^3*b3-2*a2*a3*b2^2*b3^2+6*a2*a3*b2*b3^3-6*a2*b1^3*b2*b3-4*a2*b1^2*b2^2*b3+8*a2*b1^2*b2*b3^2-6*a2*b1*b2^3*b3+8*a2*b1*b2^2*b3^2+a2^4*a3^2+a2^4*b3^2-2*a2^3*a3^3-2*a2^3*b3^3+a2^2*a3^4+a2^2*b3^4+a3^4*b1^2-2*a3^3*b1^3+a3^2*b1^4+b1^4*b2^2+b1^4*b3^2-2*b1^3*b2^3-2*b1^3*b3^3+b1^2*b2^4+b1^2*b3^4+b2^4*b3^2-2*b2^3*b3^3+b2^2*b3^4+4*a3^3*b1^2*b2+4*a3^3*b1^2*b3-6*a3^2*b1^3*b2-6*a3^2*b1^3*b3+6*a3^2*b1^2*b2^2+6*a3^2*b1^2*b3^2+a3^2*b2^2*b3^2+2*a3*b1^4*b2+2*a3*b1^4*b3-6*a3*b1^3*b2^2-6*a3*b1^3*b3^2+4*a3*b1^2*b2^3+4*a3*b1^2*b3^3+2*a3*b2^3*b3^2+2*a3*b2^2*b3^3-2*b1^4*b2*b3+2*b1^3*b2^2*b3+2*b1^3*b2*b3^2+2*b1^2*b2^3*b3-6*b1^2*b2^2*b3^2+2*b1^2*b2*b3^3-2*b1*b2^4*b3+2*b1*b2^3*b3^2+2*b1*b2^2*b3^3-2*b1*b2*b3^4+2*a2^4*a3*b3+4*a2^3*a3^2*b1+2*a2^3*a3^2*b2-6*a2^3*a3^2*b3-6*a2^3*a3*b3^2+4*a2^3*b1*b3^2+4*a2^3*b2*b3^2-6*a2^2*a3^3*b1+2*a2^2*a3^3*b2+4*a2^2*a3^3*b3+6*a2^2*a3^2*b1^2+a2^2*a3^2*b2^2+6*a2^2*a3^2*b3^2+4*a2^2*a3*b3^3+a2^2*b1^2*b2^2+6*a2^2*b1^2*b3^2-6*a2^2*b1*b3^3+6*a2^2*b2^2*b3^2-6*a2^2*b2*b3^3+2*a2*a3^4*b1-6*a2*a3^3*b1^2+4*a2*a3^2*b1^3+2*a2*b1^3*b2^2+4*a2*b1^3*b3^2+2*a2*b1^2*b2^3-6*a2*b1^2*b3^3+2*a2*b1*b3^4+4*a2*b2^3*b3^2-6*a2*b2^2*b3^3+2*a2*b2*b3^4+12*a3*b1^2*b2*a1^2+12*a3*b1^2*b3*a1^2-18*a3*b1*b2^2*a1^2-18*a3*b1*b3^2*a1^2+8*a3*b2*b3^2*a1^2-12*b1^2*b2*b3*a1^2+6*b1*b2^2*b3*a1^2+6*b1*b2*b3^2*a1^2+8*a3^3*b1*b2*a1+8*a3^3*b1*b3*a1-2*a3^3*b2*b3*a1-18*a3^2*b1^2*b2*a1-18*a3^2*b1^2*b3*a1+12*a3^2*b1*b2^2*a1+12*a3^2*b1*b3^2*a1-6*a3^2*b2^2*b3*a1-6*a3^2*b2*b3^2*a1+8*a3*b1^3*b2*a1+8*a3*b1^3*b3*a1-18*a3*b1^2*b2^2*a1-18*a3*b1^2*b3^2*a1+8*a3*b1*b2^3*a1+8*a3*b1*b3^3*a1-6*a3*b2^3*b3*a1-6*b1*b3*a2*a1^3-6*b1*a3*a2*a1^3+8*b2*a3*b1*a1^3-4*b2*a3*a2*a1^3+8*a3*b3*b1*a1^3+4*a3*b3*a2*a1^3+8*a3*b3*b2^2*a1^2+10*a3^2*b3*b2*a1^2-18*a3^2*b3*b1*a1^2+6*a3^2*b3*a2*a1^2-6*a2^3*a3*b1*a1-6*a2^3*a3*b2*a1+4*a2^3*a3*b3*a1+2*a2^3*b1*b2*a1-6*a2^3*b1*b3*a1-8*a2^3*b2*b3*a1+8*a2^2*a3^2*b1*a1-4*a2^2*a3^2*b2*a1+6*a2^2*a3^2*b3*a1-6*a2^2*a3*b1^2*a1-6*a2^2*a3*b2^2*a1+6*a2^2*a3*b3^2*a1+4*a2^2*b1^2*b2*a1-6*a2^2*b1^2*b3*a1+6*a2^2*b1*b2^2*a1+8*a2^2*b1*b3^2*a1-12*a2^2*b2^2*b3*a1+6*a2^2*b2*b3^2*a1-4*a2*a3^3*b1*a1-4*a3*b2^2*b3^2*a1-6*a3*b2*b3^3*a1-8*b1^3*b2*b3*a1+6*b1^2*b2^2*b3*a1+6*b1^2*b2*b3^2*a1+4*b1*b2^3*b3*a1-12*b1*b2^2*b3^2*a1+4*b1*b2*b3^3*a1-4*a2^2*a3*b1*a1^2+8*a2^2*a3*b2*a1^2-12*a2^2*a3*b3*a1^2-2*a2^2*b1*b2*a1^2-4*a2^2*b1*b3*a1^2+6*a2^2*b2*b3*a1^2+8*a2*a3^2*b1*a1^2+8*a2*a3^2*b2*a1^2-6*a2*a3*b1^2*a1^2+10*a2*a3*b2^2*a1^2+6*a2*a3*b3^2*a1^2+6*a2*b1^2*b2*a1^2-6*a2*b1^2*b3*a1^2-10*a2*b1*b2^2*a1^2+8*a2*b1*b3^2*a1^2+6*a2*b2^2*b3*a1^2-12*a2*b2*b3^2*a1^2-18*a3^2*b1*b2*a1^2-6*a2*a3^3*b2*a1-8*a2*a3^3*b3*a1+10*a2*a3^2*b1^2*a1-6*a2*a3^2*b2^2*a1-12*a2*a3^2*b3^2*a1-2*a2*a3*b1^3*a1-2*a2*a3*b2^3*a1-8*a2*a3*b3^3*a1+2*a2*b1^3*b2*a1-2*a2*b1^3*b3*a1-2*a2*b1^2*b2^2*a1+10*a2*b1^2*b3^2*a1+6*a2*b1*b2^3*a1-4*a2*b1*b3^3*a1-8*a2*b2^3*b3*a1+6*a2*b2^2*b3^2*a1+4*a2*b2*b3^3*a1+8*a2^2*a3*b1*b2*b3+8*a2*a3^2*b1*b2*b3-2*a2*a3*b1^2*b2*b3-6*a2*a3*b1*b2^2*b3-2*a2*a3*b1*b2*b3^2-6*a2*a3*b1*b2*b3*a1-6*a2^2*a3*b1*b2*a1+16*a2^2*a3*b1*b3*a1+2*a2^2*a3*b2*b3*a1-8*a2^2*b1*b2*b3*a1-2*a2*a3^2*b1*b2*a1-12*a2*a3^2*b1*b3*a1-8*a2*a3^2*b2*b3*a1+8*a2*a3*b1^2*b2*a1+20*a2*a3*b1^2*b3*a1+8*a2*a3*b1*b2^2*a1-12*a2*a3*b1*b3^2*a1-8*a2*a3*b2^2*b3*a1+2*a2*a3*b2*b3^2*a1-8*a2*b1^2*b2*b3*a1+2*a2*b1*b2^2*b3*a1-4*a2*b1*b2*b3^2*a1+20*a3^2*b1*b2*b3*a1-12*a3*b1^2*b2*b3*a1-4*a3*b3*a2*b2*a1^2-12*a3*b3*b1*b2*a1^2+16*a3*b1*b2^2*b3*a1+16*a3*b1*b2*b3^2*a1-2*a2*a3*b1*b2*a1^2+16*a2*a3*b1*b3*a1^2+2*a2*b1*b2*b3*a1^2

(11)

It would be extremely difficult to determine in general when the discriminant is positive, hence when the roots are real.

 

Set all parameters to 1.

(**)

Evals:= [a||(1..3), b||(1..3)] =~ [1$6];

[a1 = 1, a2 = 1, a3 = 1, b1 = 1, b2 = 1, b3 = 1]

(12)
(**)

fsolve(eval(p, Evals));

-3.41421356237310, -2., -.585786437626905

(13)
(**)

eval(d, Evals);

32

(14)
(**)

 

 

 

Download cubic.mws

@CarlitosVillalbaGalea I does mean the imaginary unit, sqrt(-1), but in the example above it cancels, leaving only real values. The cancellation can usually not be realized algebraically, but it can sometimes be realized through a conversion to trigonometric functions. I found a slightly simpler example:


(**)

p:= x^3-3*x+1;

x^3-3*x+1

(1)
(**)

fsolve(p);

-1.87938524157182, .347296355333861, 1.53208888623796

(2)
(**)

discrim(p,x);

81

(3)

The discriminant is positive. There are three real roots.

(**)

Sol:= [solve](p);

[(1/2)*(-4+(4*I)*3^(1/2))^(1/3)+2/(-4+(4*I)*3^(1/2))^(1/3), -(1/4)*(-4+(4*I)*3^(1/2))^(1/3)-1/(-4+(4*I)*3^(1/2))^(1/3)+((1/2)*I)*3^(1/2)*((1/2)*(-4+(4*I)*3^(1/2))^(1/3)-2/(-4+(4*I)*3^(1/2))^(1/3)), -(1/4)*(-4+(4*I)*3^(1/2))^(1/3)-1/(-4+(4*I)*3^(1/2))^(1/3)-((1/2)*I)*3^(1/2)*((1/2)*(-4+(4*I)*3^(1/2))^(1/3)-2/(-4+(4*I)*3^(1/2))^(1/3))]

(4)
(**)

convert(Sol, trig);

[(1/2)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))+(1/2)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi)), -(1/4)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))-(1/4)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi))+((1/2)*I)*3^(1/2)*((1/2)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))-(1/2)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi))), -(1/4)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))-(1/4)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi))-((1/2)*I)*3^(1/2)*((1/2)*4^(1/2)*(cos((2/9)*Pi)+I*sin((2/9)*Pi))-(1/2)*4^(1/2)*(cos((2/9)*Pi)-I*sin((2/9)*Pi)))]

(5)
(**)

simplify(%);

[2*cos((2/9)*Pi), -3^(1/2)*sin((2/9)*Pi)-cos((2/9)*Pi), 3^(1/2)*sin((2/9)*Pi)-cos((2/9)*Pi)]

(6)

All imaginary parts cancelled.

(**)

evalf(%);

[1.53208888623796, -1.87938524157182, .347296355333861]

(7)

Same roots as with fsolve.

 

Now do it with your Matrix.

(**)

A4:= LinearAlgebra:-BandMatrix([[a||(1..3)], [-a1, -b1-a2, -b2-a3, -b3], [b||(1..3)]]);

Matrix(%id = 18446744073913204870)

(8)
(**)

LinearAlgebra:-CharacteristicPolynomial(A4,x);

x^4+(b3+b2+a3+b1+a2+a1)*x^3+(a1*a2+a1*a3+a1*b2+a1*b3+a2*a3+a2*b3+a3*b1+b1*b2+b1*b3+b2*b3)*x^2+(a1*a2*a3+a1*a2*b3+a1*b2*b3+b1*b2*b3)*x

(9)
(**)

p:= collect(expand(%/x),x);

x^3+(b3+b2+a3+b1+a2+a1)*x^2+(a1*a2+a1*a3+a1*b2+a1*b3+a2*a3+a2*b3+a3*b1+b1*b2+b1*b3+b2*b3)*x+a1*a2*a3+a1*a2*b3+a1*b2*b3+b1*b2*b3

(10)
(**)

d:= discrim(p,x);

a1^4*a2^2-2*a1^4*a2*a3+2*a1^4*a2*b2-2*a1^4*a2*b3+a1^4*a3^2+2*a1^4*a3*b2+2*a1^4*a3*b3+a1^4*b2^2-2*a1^4*b2*b3+a1^4*b3^2-2*a1^3*a2^3+2*a1^3*a2^2*a3+2*a1^3*a2^2*b1-6*a1^3*a2^2*b2+2*a1^3*a2^2*b3+2*a1^3*a2*a3^2-6*a1^3*a2*a3*b1-4*a1^3*a2*a3*b2+4*a1^3*a2*a3*b3+6*a1^3*a2*b1*b2-6*a1^3*a2*b1*b3-6*a1^3*a2*b2^2+4*a1^3*a2*b2*b3+2*a1^3*a2*b3^2-2*a1^3*a3^3+4*a1^3*a3^2*b1-6*a1^3*a3^2*b2-6*a1^3*a3^2*b3+8*a1^3*a3*b1*b2+8*a1^3*a3*b1*b3-6*a1^3*a3*b2^2-4*a1^3*a3*b2*b3-6*a1^3*a3*b3^2+4*a1^3*b1*b2^2-8*a1^3*b1*b2*b3+4*a1^3*b1*b3^2-2*a1^3*b2^3+2*a1^3*b2^2*b3+2*a1^3*b2*b3^2-2*a1^3*b3^3+a1^2*a2^4+2*a1^2*a2^3*a3+2*a1^2*a2^3*b1+4*a1^2*a2^3*b2+2*a1^2*a2^3*b3-6*a1^2*a2^2*a3^2-4*a1^2*a2^2*a3*b1+8*a1^2*a2^2*a3*b2-12*a1^2*a2^2*a3*b3+a1^2*a2^2*b1^2-2*a1^2*a2^2*b1*b2-4*a1^2*a2^2*b1*b3+6*a1^2*a2^2*b2^2+6*a1^2*a2^2*b2*b3-6*a1^2*a2^2*b3^2+2*a1^2*a2*a3^3+8*a1^2*a2*a3^2*b1+8*a1^2*a2*a3^2*b2+6*a1^2*a2*a3^2*b3-6*a1^2*a2*a3*b1^2-2*a1^2*a2*a3*b1*b2+16*a1^2*a2*a3*b1*b3+10*a1^2*a2*a3*b2^2-4*a1^2*a2*a3*b2*b3+6*a1^2*a2*a3*b3^2+6*a1^2*a2*b1^2*b2-6*a1^2*a2*b1^2*b3-10*a1^2*a2*b1*b2^2+2*a1^2*a2*b1*b2*b3+8*a1^2*a2*b1*b3^2+4*a1^2*a2*b2^3+6*a1^2*a2*b2^2*b3-12*a1^2*a2*b2*b3^2+2*a1^2*a2*b3^3+a1^2*a3^4-6*a1^2*a3^3*b1+4*a1^2*a3^3*b2+4*a1^2*a3^3*b3+6*a1^2*a3^2*b1^2-18*a1^2*a3^2*b1*b2-18*a1^2*a3^2*b1*b3+6*a1^2*a3^2*b2^2+10*a1^2*a3^2*b2*b3+6*a1^2*a3^2*b3^2+12*a1^2*a3*b1^2*b2+12*a1^2*a3*b1^2*b3-18*a1^2*a3*b1*b2^2-12*a1^2*a3*b1*b2*b3-18*a1^2*a3*b1*b3^2+4*a1^2*a3*b2^3+8*a1^2*a3*b2^2*b3+8*a1^2*a3*b2*b3^2+4*a1^2*a3*b3^3+6*a1^2*b1^2*b2^2-12*a1^2*b1^2*b2*b3+6*a1^2*b1^2*b3^2-6*a1^2*b1*b2^3+6*a1^2*b1*b2^2*b3+6*a1^2*b1*b2*b3^2-6*a1^2*b1*b3^3+a1^2*b2^4+2*a1^2*b2^3*b3-6*a1^2*b2^2*b3^2+2*a1^2*b2*b3^3+a1^2*b3^4-2*a1*a2^4*a3-2*a1*a2^4*b3+2*a1*a2^3*a3^2-6*a1*a2^3*a3*b1-6*a1*a2^3*a3*b2+4*a1*a2^3*a3*b3+2*a1*a2^3*b1*b2-6*a1*a2^3*b1*b3-8*a1*a2^3*b2*b3+2*a1*a2^3*b3^2+2*a1*a2^2*a3^3+8*a1*a2^2*a3^2*b1-4*a1*a2^2*a3^2*b2+6*a1*a2^2*a3^2*b3-6*a1*a2^2*a3*b1^2-6*a1*a2^2*a3*b1*b2+16*a1*a2^2*a3*b1*b3-6*a1*a2^2*a3*b2^2+2*a1*a2^2*a3*b2*b3+6*a1*a2^2*a3*b3^2+4*a1*a2^2*b1^2*b2-6*a1*a2^2*b1^2*b3+6*a1*a2^2*b1*b2^2-8*a1*a2^2*b1*b2*b3+8*a1*a2^2*b1*b3^2-12*a1*a2^2*b2^2*b3+6*a1*a2^2*b2*b3^2+2*a1*a2^2*b3^3-2*a1*a2*a3^4-4*a1*a2*a3^3*b1-6*a1*a2*a3^3*b2-8*a1*a2*a3^3*b3+10*a1*a2*a3^2*b1^2-2*a1*a2*a3^2*b1*b2-12*a1*a2*a3^2*b1*b3-6*a1*a2*a3^2*b2^2-8*a1*a2*a3^2*b2*b3-12*a1*a2*a3^2*b3^2-2*a1*a2*a3*b1^3+8*a1*a2*a3*b1^2*b2+20*a1*a2*a3*b1^2*b3+8*a1*a2*a3*b1*b2^2-6*a1*a2*a3*b1*b2*b3-12*a1*a2*a3*b1*b3^2-2*a1*a2*a3*b2^3-8*a1*a2*a3*b2^2*b3+2*a1*a2*a3*b2*b3^2-8*a1*a2*a3*b3^3+2*a1*a2*b1^3*b2-2*a1*a2*b1^3*b3-2*a1*a2*b1^2*b2^2-8*a1*a2*b1^2*b2*b3+10*a1*a2*b1^2*b3^2+6*a1*a2*b1*b2^3+2*a1*a2*b1*b2^2*b3-4*a1*a2*b1*b2*b3^2-4*a1*a2*b1*b3^3-8*a1*a2*b2^3*b3+6*a1*a2*b2^2*b3^2+4*a1*a2*b2*b3^3-2*a1*a2*b3^4+2*a1*a3^4*b1-6*a1*a3^3*b1^2+8*a1*a3^3*b1*b2+8*a1*a3^3*b1*b3-2*a1*a3^3*b2*b3+4*a1*a3^2*b1^3-18*a1*a3^2*b1^2*b2-18*a1*a3^2*b1^2*b3+12*a1*a3^2*b1*b2^2+20*a1*a3^2*b1*b2*b3+12*a1*a3^2*b1*b3^2-6*a1*a3^2*b2^2*b3-6*a1*a3^2*b2*b3^2+8*a1*a3*b1^3*b2+8*a1*a3*b1^3*b3-18*a1*a3*b1^2*b2^2-12*a1*a3*b1^2*b2*b3-18*a1*a3*b1^2*b3^2+8*a1*a3*b1*b2^3+16*a1*a3*b1*b2^2*b3+16*a1*a3*b1*b2*b3^2+8*a1*a3*b1*b3^3-6*a1*a3*b2^3*b3-4*a1*a3*b2^2*b3^2-6*a1*a3*b2*b3^3+4*a1*b1^3*b2^2-8*a1*b1^3*b2*b3+4*a1*b1^3*b3^2-6*a1*b1^2*b2^3+6*a1*b1^2*b2^2*b3+6*a1*b1^2*b2*b3^2-6*a1*b1^2*b3^3+2*a1*b1*b2^4+4*a1*b1*b2^3*b3-12*a1*b1*b2^2*b3^2+4*a1*b1*b2*b3^3+2*a1*b1*b3^4-2*a1*b2^4*b3+2*a1*b2^3*b3^2+2*a1*b2^2*b3^3-2*a1*b2*b3^4+a2^4*a3^2+2*a2^4*a3*b3+a2^4*b3^2-2*a2^3*a3^3+4*a2^3*a3^2*b1+2*a2^3*a3^2*b2-6*a2^3*a3^2*b3+2*a2^3*a3*b1*b2+8*a2^3*a3*b1*b3+6*a2^3*a3*b2*b3-6*a2^3*a3*b3^2-2*a2^3*b1*b2*b3+4*a2^3*b1*b3^2+4*a2^3*b2*b3^2-2*a2^3*b3^3+a2^2*a3^4-6*a2^2*a3^3*b1+2*a2^2*a3^3*b2+4*a2^2*a3^3*b3+6*a2^2*a3^2*b1^2-2*a2^2*a3^2*b1*b2-18*a2^2*a3^2*b1*b3+a2^2*a3^2*b2^2-2*a2^2*a3^2*b2*b3+6*a2^2*a3^2*b3^2+6*a2^2*a3*b1^2*b2+12*a2^2*a3*b1^2*b3+4*a2^2*a3*b1*b2^2+8*a2^2*a3*b1*b2*b3-18*a2^2*a3*b1*b3^2+6*a2^2*a3*b2^2*b3-10*a2^2*a3*b2*b3^2+4*a2^2*a3*b3^3+a2^2*b1^2*b2^2-6*a2^2*b1^2*b2*b3+6*a2^2*b1^2*b3^2-6*a2^2*b1*b2^2*b3+10*a2^2*b1*b2*b3^2-6*a2^2*b1*b3^3+6*a2^2*b2^2*b3^2-6*a2^2*b2*b3^3+a2^2*b3^4+2*a2*a3^4*b1-6*a2*a3^3*b1^2+6*a2*a3^3*b1*b2+8*a2*a3^3*b1*b3+2*a2*a3^3*b2*b3+4*a2*a3^2*b1^3-10*a2*a3^2*b1^2*b2-18*a2*a3^2*b1^2*b3+6*a2*a3^2*b1*b2^2+8*a2*a3^2*b1*b2*b3+12*a2*a3^2*b1*b3^2+4*a2*a3^2*b2^2*b3+6*a2*a3^2*b2*b3^2+6*a2*a3*b1^3*b2+8*a2*a3*b1^3*b3-2*a2*a3*b1^2*b2^2-2*a2*a3*b1^2*b2*b3-18*a2*a3*b1^2*b3^2+2*a2*a3*b1*b2^3-6*a2*a3*b1*b2^2*b3-2*a2*a3*b1*b2*b3^2+8*a2*a3*b1*b3^3+2*a2*a3*b2^3*b3-2*a2*a3*b2^2*b3^2+6*a2*a3*b2*b3^3+2*a2*b1^3*b2^2-6*a2*b1^3*b2*b3+4*a2*b1^3*b3^2+2*a2*b1^2*b2^3-4*a2*b1^2*b2^2*b3+8*a2*b1^2*b2*b3^2-6*a2*b1^2*b3^3-6*a2*b1*b2^3*b3+8*a2*b1*b2^2*b3^2-4*a2*b1*b2*b3^3+2*a2*b1*b3^4+4*a2*b2^3*b3^2-6*a2*b2^2*b3^3+2*a2*b2*b3^4+a3^4*b1^2-2*a3^3*b1^3+4*a3^3*b1^2*b2+4*a3^3*b1^2*b3-2*a3^3*b1*b2*b3+a3^2*b1^4-6*a3^2*b1^3*b2-6*a3^2*b1^3*b3+6*a3^2*b1^2*b2^2+10*a3^2*b1^2*b2*b3+6*a3^2*b1^2*b3^2-6*a3^2*b1*b2^2*b3-6*a3^2*b1*b2*b3^2+a3^2*b2^2*b3^2+2*a3*b1^4*b2+2*a3*b1^4*b3-6*a3*b1^3*b2^2-4*a3*b1^3*b2*b3-6*a3*b1^3*b3^2+4*a3*b1^2*b2^3+8*a3*b1^2*b2^2*b3+8*a3*b1^2*b2*b3^2+4*a3*b1^2*b3^3-6*a3*b1*b2^3*b3-4*a3*b1*b2^2*b3^2-6*a3*b1*b2*b3^3+2*a3*b2^3*b3^2+2*a3*b2^2*b3^3+b1^4*b2^2-2*b1^4*b2*b3+b1^4*b3^2-2*b1^3*b2^3+2*b1^3*b2^2*b3+2*b1^3*b2*b3^2-2*b1^3*b3^3+b1^2*b2^4+2*b1^2*b2^3*b3-6*b1^2*b2^2*b3^2+2*b1^2*b2*b3^3+b1^2*b3^4-2*b1*b2^4*b3+2*b1*b2^3*b3^2+2*b1*b2^2*b3^3-2*b1*b2*b3^4+b2^4*b3^2-2*b2^3*b3^3+b2^2*b3^4

(11)

It would be extremely difficult to determine in general when the discriminant is positive, hence when the roots are real.

 

Set all parameters to 1.

(**)

Evals:= [a||(1..3), b||(1..3)] =~ [1$6];

[a1 = 1, a2 = 1, a3 = 1, b1 = 1, b2 = 1, b3 = 1]

(12)
(**)

fsolve(eval(p, Evals));

-3.41421356237310, -2., -.585786437626905

(13)
(**)

eval(d, Evals);

32

(14)
(**)

 

 


Download cubic.mws

After reading the help page, which has far too few examples, and also reading the long thread referred to by PatrickT, I would think that you could achieve what you what by using pre(x(t)), that being the previous value of x(t). But I can't make it work. Perhaps pre only works with discrete variables. Specifically, I don't understand why events= [[abs(pre(x(t)) - x(t)) - 1e-8, halt]] does not work.

Could you give an example of code that does not work in Maple 16, i.e. a manifestation of the bug? The example I gave works in Maple 16.02/64/Standard.

Could you give an example of code that does not work in Maple 16, i.e. a manifestation of the bug? The example I gave works in Maple 16.02/64/Standard.

Can you give an example please?

If the dependent variable is not changing much over an interval of width h, that corresponds with its derivative being small. So, you can make the events like this (assuming that de is in the form with the derivative on the lhs):

events= [[abs(rhs(de))  - 1e-4, halt]]

@spradlig See ?list or ?set (it's the same page), especially the 7th and 8th paragraphs of "Description":

Appending an element x to a list L is done by [op(L), x].  Inserting an element x to a set S is done using the union operator S union {x}.
Replacing the i-th element of a list L by x can be done by subsop(i=x, L). Deleting the i-th element of a list L is subsop(i=NULL, L). Deleting an element x from a set S is done using the minus operator S minus {x}.  Note that inserting and deleting from a list or set causes a new list or set to be created rather than modifying the original in-place.

@abbeykabir Enclose the equations with curly braces { } when passing to fsolve. It probably will use Newton's Method and the Jacobian.

Here's an example. I can't cut-and-paste your equations, so I generated random similar examples.

'randpoly([y[k] $ k= 1..5], degree= 3, sparse) + randpoly([y[k] $ k= 1..5], degree= 1)' $ 5;


fsolve({%});


@abbeykabir Enclose the equations with curly braces { } when passing to fsolve. It probably will use Newton's Method and the Jacobian.

Here's an example. I can't cut-and-paste your equations, so I generated random similar examples.

'randpoly([y[k] $ k= 1..5], degree= 3, sparse) + randpoly([y[k] $ k= 1..5], degree= 1)' $ 5;


fsolve({%});


First 627 628 629 630 631 632 633 Last Page 629 of 708