MaplePrimes Questions

Hi MaplePrime-ers!

I've been using the Maple(17) toolbox in Matlab(2012b) to quickly enumerate systems of equations by: (i) solving them symbolically, (ii) using unapply to make them functions, (iii) then supplying the points (driver equations) to get the system solution.  Speed is a must, because there may be 3 million+ systems to solve.  Symbolics is also very important because I am evaluating topology, so the structure of the equations may change, and therefore a functional approach will not work.

I have had success (seen in the first code snippet).  I would like similiar behaviour in the second code snippet, but sometimes I get 'solutions may be lost' as an error message,  or 'Error, (in unapply) variables must be unique and of type name'

The system of equations include:  Linear equations, 5th order polynomials, absolute functions, and pieceiwse functions.

Here is code with a topology that solves:

#Interconnection Equations
eq2[1] := FD_T + EM2_T = 0;
eq2[2] := ICE_T + GEN_T = 0;
eq2[3] := EM2_A + GEN_A + BAT_A = 0;
eq2[4] := -FD_W + EM2_W = 0;
eq2[5] := -ICE_W + GEN_W = 0;
eq2[6] := -EM2_V + GEN_V = 0;
eq2[7] := -EM2_V + BAT_V = 0;

#ICE
eq_c[1] := ICE_mdot_g=((671.5) + (-21.94)*ICE_T + (0.1942)*ICE_W + (0.5113)*ICE_T^2 + (-0.01271)*ICE_T*ICE_W + ( -0.0008761)*ICE_W^2 + (-0.006071)*ICE_T^3 + (9.867e-07)*ICE_T^2*ICE_W + (5.616e-05)*ICE_T*ICE_W^2 + (1.588e-06)*ICE_W^3 + (3.61e-05)*ICE_T^4 + (8.98e-07)*ICE_T^3*ICE_W + (-2.814e-07)*ICE_T^2*ICE_W^2 + (-8.121e-08)*ICE_T*ICE_W^3 + ( -8.494e-08 )*ICE_T^5 + (-2.444e-09)*ICE_T^4*ICE_W + (-9.311e-10)*ICE_T^3*ICE_W^2 + ( 5.835e-10)*ICE_T^2*ICE_W^3 ) *1/3600/1000 * ICE_T * ICE_W;

#BAT
eq_c[2] := BAT = 271;

#EM2
EM2_ReqPow_eq := (-148.3) + (4.267)*abs(EM2_W) + (12.77)*abs(EM2_T) + (-0.0364)*abs(EM2_W)^2 + ( 1.16)*abs(EM2_W)*abs(EM2_T) + (-0.258)*abs(EM2_T)^2 + ( 0.0001181)*abs(EM2_W)^3 + (-0.0005994)*abs(EM2_W)^2*abs(EM2_T) + ( 0.0001171)*abs(EM2_W)*abs(EM2_T)^2 + (0.001739 )*abs(EM2_T)^3 + (-1.245e-07 )*abs(EM2_W)^4 + ( 1.2e-06)*abs(EM2_W)^3*abs(EM2_T) + ( -1.584e-06)*abs(EM2_W)^2*abs(EM2_T)^2 + ( 4.383e-07)*abs(EM2_W)*abs(EM2_T)^3 + (-2.947e-06)*abs(EM2_T)^4;
eq_c[3] := EM2_P = piecewise( EM2_T = 0, 0, EM2_W = 0, 0, EM2_W*EM2_T < 0,-1 * EM2_ReqPow_eq, EM2_ReqPow_eq);
eq_c[4] := EM2_A = EM2_P/EM2_V;

#GEN
GEN_ReqPow_eq:= (-5.28e-12) + ( 3.849e-14)*abs(GEN_W) + (-71.9)*abs(GEN_T) + (-1.168e-16)*abs(GEN_W)^2 +(1.296)*abs(GEN_W)*abs(GEN_T) + (2.489)*abs(GEN_T)^2 + (1.451e-19)*abs(GEN_W)^3 + (0.0001326)*abs(GEN_W)^2*abs(GEN_T) + (-0.008141)*abs(GEN_W)*abs(GEN_T)^2 + (-0.004539)*abs(GEN_T)^3 +(-6.325e-23)*abs(GEN_W)^4 + (-2.091e-07)*abs(GEN_W)^3*abs(GEN_T) + ( 3.455e-06)*abs(GEN_W)^2*abs(GEN_T)^2 + ( 2.499e-05)*abs(GEN_W)*abs(GEN_T)^3 + (-5.321e-05)*abs(GEN_T)^4;
eq_c[5] := GEN_P = piecewise( GEN_T = 0, 0, GEN_W = 0, 0, GEN_W*GEN_T < 0,-1 * GEN_ReqPow_eq, GEN_ReqPow_eq);
eq_c[6] := GEN_A = GEN_P/GEN_V;

#ASSUMPTIONS
assume(BAT_V::nonnegative);
assume(FD_W::nonnegative);

#FINAL EQUATIONS

sys_eqs2 := convert(eq2,set) union {eq_c[1],eq_c[2],eq_c[3],eq_c[4],eq_c[5],eq_c[6]};

#Selecting which variables to solve for:

drivers2:= { ICE_T,ICE_W,FD_T,FD_W};
symvarnames2:=select(type,indets(convert(sys_eqs2,list)),name);
notdrivers2:=symvarnames2 minus drivers2;


#Symbolic solve

sol2:=solve(sys_eqs2,notdrivers2) assuming real:
symb_sol2:=unapply(sol2,convert(drivers2,list)):


#Enumerate (there will generally be about 40, not 6)

count := 0;
for i1 from 1 to 40 do
     for i2 from 1 to 40 do
          for i3 from 1 to 40 do
               for i4 from 1 to 40 do
                    count := count + 1;
                    solsol2(count) := symb_sol2(i1,i2,i3,i4);
               od;
          od;
     od;
od;
count;



This works great!  I would like simliar output in my second code snippet, but this time with more inputs to symb_sol.  However, if I try and change the interconnection equations a little, and add a piecewise function, and another driver... (differences in bold)

#Interconnection Equations
eq1[1] := FD_T+EM2_T = 0;
eq1[2] := ICE_T+GBb_T = 0;
eq1[3] := GEN_T+GBa_T = 0;
eq1[4] := EM2_A+GEN_A+BAT_A = 0;
eq1[5] := -FD_W+EM2_W = 0;
eq1[6] := -GEN_W+GBa_W = 0;
eq1[7] := -ICE_W+GBb_W = 0;
eq1[8] := -EM2_V+GEN_V = 0;
eq1[9] := -EM2_V+BAT_V = 0;

#ICE
eq_c[1] := ICE_mdot_g=((671.5) + (-21.94)*ICE_T + (0.1942)*ICE_W + (0.5113)*ICE_T^2 + (-0.01271)*ICE_T*ICE_W + ( -0.0008761)*ICE_W^2 + (-0.006071)*ICE_T^3 + (9.867e-07)*ICE_T^2*ICE_W + (5.616e-05)*ICE_T*ICE_W^2 + (1.588e-06)*ICE_W^3 + (3.61e-05)*ICE_T^4 + (8.98e-07)*ICE_T^3*ICE_W + (-2.814e-07)*ICE_T^2*ICE_W^2 + (-8.121e-08)*ICE_T*ICE_W^3 + ( -8.494e-08 )*ICE_T^5 + (-2.444e-09)*ICE_T^4*ICE_W + (-9.311e-10)*ICE_T^3*ICE_W^2 + ( 5.835e-10)*ICE_T^2*ICE_W^3 ) *1/3600/1000 * ICE_T * ICE_W;

#BAT
eq_c[2] := BAT = 271;

#EM2
EM2_ReqPow_eq := (-148.3) + (4.267)*abs(EM2_W) + (12.77)*abs(EM2_T) + (-0.0364)*abs(EM2_W)^2 + ( 1.16)*abs(EM2_W)*abs(EM2_T) + (-0.258)*abs(EM2_T)^2 + ( 0.0001181)*abs(EM2_W)^3 + (-0.0005994)*abs(EM2_W)^2*abs(EM2_T) + ( 0.0001171)*abs(EM2_W)*abs(EM2_T)^2 + (0.001739 )*abs(EM2_T)^3 + (-1.245e-07 )*abs(EM2_W)^4 + ( 1.2e-06)*abs(EM2_W)^3*abs(EM2_T) + ( -1.584e-06)*abs(EM2_W)^2*abs(EM2_T)^2 + ( 4.383e-07)*abs(EM2_W)*abs(EM2_T)^3 + (-2.947e-06)*abs(EM2_T)^4;
eq_c[3] := EM2_P = piecewise( EM2_T = 0, 0, EM2_W = 0, 0, EM2_W*EM2_T < 0,-1 * EM2_ReqPow_eq, EM2_ReqPow_eq);
eq_c[4] := EM2_A = EM2_P/EM2_V;

#GEN
GEN_ReqPow_eq:= (-5.28e-12) + ( 3.849e-14)*abs(GEN_W) + (-71.9)*abs(GEN_T) + (-1.168e-16)*abs(GEN_W)^2 +(1.296)*abs(GEN_W)*abs(GEN_T) + (2.489)*abs(GEN_T)^2 + (1.451e-19)*abs(GEN_W)^3 + (0.0001326)*abs(GEN_W)^2*abs(GEN_T) + (-0.008141)*abs(GEN_W)*abs(GEN_T)^2 + (-0.004539)*abs(GEN_T)^3 +(-6.325e-23)*abs(GEN_W)^4 + (-2.091e-07)*abs(GEN_W)^3*abs(GEN_T) + ( 3.455e-06)*abs(GEN_W)^2*abs(GEN_T)^2 + ( 2.499e-05)*abs(GEN_W)*abs(GEN_T)^3 + (-5.321e-05)*abs(GEN_T)^4;
eq_c[5] := GEN_P = piecewise( GEN_T = 0, 0, GEN_W = 0, 0, GEN_W*GEN_T < 0,-1 * GEN_ReqPow_eq, GEN_ReqPow_eq);
eq_c[6] := GEN_A = GEN_P/GEN_V;

#GB
FiveSpeedGearbox_R := proc(ig)
local i ,eq;
i[1]:=3.32;
i[2]:=2;
i[3]:=1.36;
i[4]:=1.01;
i[5]:=0.82;
eq:= piecewise(ig=1,i[1],ig=2, i[2],ig=3,i[3],ig=4,i[4],ig=5,i[5],1);
return eq(ig);
end proc;


eq_c[7] := GBb_T = -1/GB_R * GBa_T;
eq_c[8] := GBb_W = GB_R * GBa_W;
eq_c[9] := GB_R = FiveSpeedGearbox_R(ig);

 

#System Equations
sys_eqs := convert(eq1,set) union convert(eq_c,set);

 

 #Solve for variables
symvarnames:=select(type,indets(convert(sys_eqs,list)),name);
drivers:= {ig, ICE_T,ICE_W,FD_T,FD_W};
not_drivers := symvarnames minus drivers;

#Assumptinons

assume(BAT_V::nonnegative);
assume(FD_W::nonnegative);

sol:=(solve(sys_eqs,not_drivers) assuming real);

symb_sol:=unapply(sol,convert(drivers,list)): ---> Error, (in unapply) variables must be unique and of type name

Subsequent parts don't work...

count := 0;
for i1 from 1 to 40 do
     for i2 from 1 to 40 do
          for i3 from 1 to 40 do
               for i4 from 1 to 40 do
                    for i5 from 1 to 40 do
                         count := count + 1;
                         solsol2(count) := symb_sol2(i1,i2,i3,i4,5);
                    od;
               od; 
          od;
     od;
od;
count;

While running the last line sol:, 1 of 2 things will happen, depending on the solver. Maple17 will take a long time (30+ minutes) to solve, then report nothing, or sol will solve, but will report "some solutions have been lost".

Afterwards, evaluating symb_sol(0,0,0,0,0) will return a viable solution (real values for each of the variables).  Whereas evaluating symb_sol(0,X,0,0,0), where X <> 0, will return and empty list [].

Does anyone know how to (i) speed up the symbolic solve time?  (ii) Return ALL of the solutions?

 

Thanks in advance for reading this.  I've really no idea why this isn't working.  I've also attached two worksheets with the code: noGB.mw   withGB.mw

 Adam

When running setup file Maple18WindowsX64Installer.exe (user has administative permissions), white blank window with no elements (buttons,menus,etc) appears and nothing happens (link to screenshot -http://s020.radikal.ru/i711/1403/d5/f33ac2f06181.png ). This problem seems due the Bitrock InstallBuilder packer which is used in last version of Maple installers for Windows. Is it possible to fix this problem? If no, could you please provide link to Maple installer prepared by previous packers?

hi all.
i have a system of ODE's including 9 set of coupled OED's . 

 

How do I know if I have the latest Maple build id?  What is it now?

How do i write Hassell equation: Xn+1=(Ro*Xn)/(1+Xn)^4 in maple? I need that specific syntax as a procedure with three inputs (Xo, Ro, n), so it will calculate X up to n (X1,X2, X3 and so on up to 50). I already try it and i used for loop but it doesn't work. Any ideas? Thank you.

Dear all;

I have a simple question about round and floor. Please read these line.

I have an interval [0,a].  For a given step size h=a/N; N is an integrer.

all the noeuds in this interval are X[i]:=i*h; must be in the interval [0,a].

If we make a procedure with input h, and a. ANd the oupt put x[i]. I try this

 

sol:=proc(h,a)

local x, N, i;

x[0]:=0;

## My question how we define the N in the next line.  N:=floor(a/N); or N:=round(a/h);

N:=round(a/h);

for i from 0 to N-1 do:

x[i+1]:=x[i]+h;

end do:

seq([[x[i]], i=0..N);

end proc;

 

 

for example

a*b v a^-1 = b

i guess Disj or Conj are Max or Min respectively

however i do not know how to max(a,b) where a and b are permutation group

reference from L group in 

http://books.google.com.hk/books/about/Lattice_Ordered_Groups.html?id=_qAFX38-pKkC&redir_esc=y

 

if can not calculate this, do not know how to determine whether equal in a*b v a^-1 = b

After simulate the model of MapleSim, I can only know the curve of where I need to know about. I need the specific parameter(each point value), like a piece of sheet. How I can put it of in an Excel of Word?

Hi,

I have a problem with export value from module.

Could you somene check?,

Thank's in advance.

 

test.mw

 

wz

computer the Gram-Schmidt orthogonal of (22,11,5),(13,6,3),(-5,-2,-1) belong to R^3.

Hi all,

By solving cubic equation in maple (version 17), I got

restart

``

-0.363700352e-2*y^3-.4041941000*y^2+3.397775673*y-2.377540486 = 0

-0.363700352e-2*y^3-.4041941000*y^2+3.397775673*y-2.377540486 = 0

(1)

"(->)"

[[y = .7709248124], [y = 7.123944371], [y = -119.0286907]]

(2)

``

Now I want to find these roots through the formula.

 

I solve it generally in Maple.. 

 

``# Suppose

A*y^3+B*y^2+C*y+E = 0

A*y^3+B*y^2+C*y+E = 0

(3)

NULL

A := -0.363700352e-2:

B := -.4041941000:

C := 3.397775673:

E := -2.377540486:

``

A*y^3+B*y^2+C*y+E = 0

 

A*y^3+B*y^2+C*y+E = 0

(4)

``

y1 := (1/6)*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3)/A-(2/3)*(3*A*C-B^2)/(A*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3))-(1/3)*B/A

-45.82526955*(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3)-36.74197467/(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3)-37.04460717

(5)

"(=)"

-119.0286907-0.1e-8*I

(6)

y2 := y = -(1/12)*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3)/A+(1/3)*(3*A*C-B^2)/(A*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3))-(1/3)*B/A+(1/2*I)*sqrt(3)*((1/6)*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3)/A+(2/3)*(3*A*C-B^2)/(A*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3)))

y = 22.91263477*(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3)+18.37098733/(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3)-37.04460717+((1/2)*I)*3^(1/2)*(-45.82526955*(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3)+36.74197467/(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3))

(7)

"(=)"

y = .770924807+0.1772050808e-7*I

(8)

y3 := y = -(1/12)*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3)/A+(1/3)*(3*A*C-B^2)/(A*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3))-(1/3)*B/A-(1/2*I)*sqrt(3)*((1/6)*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3)/A+(2/3)*(3*A*C-B^2)/(A*(-108*E*A^2+36*A*B*C+12*sqrt(3)*sqrt(27*A^2*E^2-18*A*B*C*E+4*A*C^3+4*B^3*E-B^2*C^2)*A-8*B^3)^(1/3)))

y = 22.91263477*(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3)+18.37098733/(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3)-37.04460717-((1/2)*I)*3^(1/2)*(-45.82526955*(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3)+36.74197467/(.7114884222-(0.5542993294e-1*I)*3^(1/2))^(1/3))

(9)

"(=)"

y = 7.123944373-0.1692050808e-7*I

(10)

``


y1, y2, y3 formulas are computed by Maple by solving it for general formula.
But, now I got answers in real and imaginery parts, i.e

 

y1 = -119.0286907-1.*10^(-9)*I

y2 = .770924807+1.772050808*10^(-8)*I

y3 = 7.123944373-1.692050808*10^(-8)*I

 

Why, is it so?

 

 

I want answers in simple forum directly only by using these formulas. As i have to show the proof!

Thanks in advance

 

Download qstn.mw

computer a Gröbner basis for <f_[1] = x^2*y - 2*y*z + 1, f_[2] = x*y^2-z^2+ 2*x,  f_[3] = y^2*z - x^2+ 5 > belong to Q[x,y,z], using ≺= <_grlex with x≺y≺z. compare your output to the Gröbner basis the Maple computers with a different order.

I have no idea where to start with this problem.

I know how to create arrays, but I want to assign characteristics to each position in the array; the array being a population with each member having a set of characteistics like height, weight etc. I want to be able to have some of the characteristics able to change with time, and some remain constant (those that change with time will be defined by generic equations)

I have tried looking on maplesoft for answers, and the help within maple 16, but have been unable to make any progress.

 

Sorry if the question is not specific enough.

 

Thanks in advance x

Please I need programme to solve this nonlinear couple ode with values of k_1 from 1.5 to 2.5 and eta from 0.0 to 2.0 real_work_3.mw Thanks for your help.

When I check the length of the optimal tour found by TravelingSalesman (GraphTheory package), it's different from the given result. What goes wrong?

See attached file.

``

restart: with(GraphTheory):

G := GRAPHLN(undirected,weighted,[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,

14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],Array(1..25, [{17, 19},{10, 22

},{10, 14, 23},{6, 12, 14},{6, 7, 19},{4, 5},{5, 13, 15, 16},{12, 13, 14, 15},

{20, 25},{2, 3},{22, 25},{4, 8, 13},{7, 8, 12},{3, 4, 8},{7, 8, 21, 23},{7, 17

, 18},{1, 16, 18, 19},{16, 17, 25},{1, 5, 17},{9, 21, 22},{15, 20, 24},{2, 11,

20, 24},{3, 15, 24},{21, 22, 23},{9, 11, 18}]),`GRAPHLN/table/2`,Matrix(25, 25

, {(12, 13) = 137, (14, 4) = 920, (3, 14) = 902, (5, 6) = 561, (17, 18) = 443,

(22, 11) = 670, (16, 17) = 573, (19, 17) = 330, (18, 17) = 280, (10, 2) = 1630

, (16, 18) = 727, (23, 15) = 760, (17, 1) = 900, (4, 6) = 1216, (16, 7) = 600,

(14, 8) = 260, (12, 4) = 580, (1, 19) = 665, (4, 12) = 733, (19, 5) = 750, (8,

14) = 368, (11, 25) = 1366, (24, 22) = 300, (17, 19) = 495, (21, 15) = 930, (6

, 4) = 1110, (11, 22) = 1049, (12, 8) = 100, (15, 21) = 995, (17, 16) = 520, (

1, 17) = 866, (15, 23) = 833, (5, 19) = 930, (9, 20) = 184, (19, 1) = 630, (7,

15) = 598, (13, 8) = 110, (24, 21) = 250, (3, 10) = 471, (24, 23) = 550, (2,

10) = 1682, (13, 12) = 80, (8, 12) = 202, (21, 24) = 287, (23, 3) = 590, (15,

8) = 410, (14, 3) = 800, (23, 24) = 688, (7, 13) = 526, (8, 15) = 477, (20, 21

) = 245, (2, 22) = 547, (15, 7) = 990, (22, 20) = 420, (10, 3) = 300, (4, 14)

= 933, (5, 7) = 690, (18, 25) = 328, (25, 18) = 270, (21, 20) = 130, (25, 9) =

240, (7, 16) = 406, (20, 9) = 140, (6, 5) = 380, (8, 13) = 236, (20, 22) = 452

, (22, 2) = 500, (9, 25) = 227, (13, 7) = 640, (7, 5) = 670, (25, 11) = 1640,

(3, 23) = 518, (22, 24) = 495, (18, 16) = 700}, storage = sparse));

GRAPHLN(undirected, weighted, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], Array(%id = 4487072130), `GRAPHLN/table/2`, Matrix(%id = 4488755818))

(1)

P:=TravelingSalesman(G);

15471, [1, 19, 5, 6, 4, 14, 3, 10, 2, 22, 11, 25, 9, 20, 21, 24, 23, 15, 8, 12, 13, 7, 16, 18, 17, 1]

(2)

add(GetEdgeWeight(G,{P[2][i],P[2][i+1]}),i=1..nops(P[2])-1);

16570

(3)

 

 

``


Download traveling_salesman_e.mw

First 1455 1456 1457 1458 1459 1460 1461 Last Page 1457 of 2434