Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

Hi MaplePrimers!

I have a simulation in MapleSIM, exported as a compiled procedure in maple using -LinkModel(), and -GetCompiledProc.

I'm trying to do parameter estimation on my MapleSIM model.  Within a optimization scheme, I call the MapleSIM model, and it will output a curve.  Using a least squares method, I compare this measurements to synthetic experimental data (I know the actual values), and generate an objective function.  The optimization algorithm will try different parameter values, and try to minimze the objective function.  When the curves are exactly the same, the objective function will be zero.

The problem I am having is certain parameter sets will cause the model to require very small steps.  I wish to put a timeout on these experiments, because speed is important.  However, I would also like to see the results up to the point of requiring very small steps.  For timeout, I was using code along the lines of:

out:= timelimit(30,cProc(params = PData)); #simulate with 30s limit

where PData are the parameter guessses, and cProc is the compiled MapleSim model.

I would like 'out' to be assigned whatever the results were after 30 seconds, even if the model had not finished integrating.

 

Thanks in advance for any help!

I want to define a band matrix using n vectors. Detial given maple sheet. please help me

Help.mw

I want to define a matrix of M by M which have some condition. detail given in maple file. please help me.

Help_Maple-1.mw

I wan to define a square matrix for M and r detial given in Maple sheet. Please Help....Help_Maple.mwHelp_Maple.mw

FirstEigenVector := Matrix(3, 1, {(1, 1) = -.736895432967255+0.*I, (2, 1) = -.588906969844997+0.*I, (3, 1) = -.331924240964690+0.*I});
SecondEigenVector := Matrix(3, 1, {(1, 1) = -.589856901397123+0.*I, (2, 1) = .320280857681335+0.*I, (3, 1) = .741275257969058+0.*I});
ThirdEigenVector := Matrix(3, 1, {(1, 1) = .330233185410229+0.*I, (2, 1) = -.742030156443046+0.*I, (3, 1) = .583384341736151+0.*I});
LHS := ProjOfEigenVector;
LHS := Matrix(3, 3, {(1, 1) = -.736895432967255+0.*I, (1, 2) = -.589856901397123+0.*I, (1, 3) = .330233185410229+0.*I, (2, 1) = -.588906969844997+0.*I, (2, 2) = .320280857681335+0.*I, (2, 3) = -.742030156443046+0.*I, (3, 1) = -.331924240964690+0.*I, (3, 2) = .741275257969058+0.*I, (3, 3) = .583384341736151+0.*I});
RHS := c1*FirstEigenVector+c2*SecondEigenVector+c3*ThirdEigenVector;
RHS := Matrix(3, 1, {(1, 1) = (-.736895432967255+0.*I)*c1+(-.589856901397123+0.*I)*c2+(.330233185410229+0.*I)*c3, (2, 1) = (-.588906969844997+0.*I)*c1+(.320280857681335+0.*I)*c2+(-.742030156443046+0.*I)*c3, (3, 1) = (-.331924240964690+0.*I)*c1+(.741275257969058+0.*I)*c2+(.583384341736151+0.*I)*c3});
solve([LHS[1][1] = RHS[1][1], LHS[2][2] = RHS[2][1], c1^2+c2^2+c3^2 = 1], [c1, c2, c3]);

 

after calculated the projection matrix, 

it is a 3*3 matrix on left hand side

however, combination of eigenvectors on right hand side is 3*1 matrix

when calculated c1,c2,c3 under the condition c1^2+c2^2+c3^2 = 1

how to know whether LHS[1][1] = RHS[1][1], or LHS[1][2] = RHS[1][1] or

LHS[1][3] = RHS[1][1]

How to create a borel set from a list of decimal

if i interpolate three decimal number and solve it, 

if any number substitute into this result which is a inverse function, can the results be said borel set?

When i look into 'maple help' for Pade approximation, it only show a code for solving equation involving 1 variable only..what is the code for equation involving 2 or more variable for pade approximation?

superposition said that a vector is a linear combination of other vectors

but even if i calculated the coefficient, i do not know which vector is which other vectors's linear combination

how to prove?

InputMatrix3 := Matrix([[close3(t), close3(t+1) , close3(t+2) , close3(t+3) , close3(t+4) , close3(t+5)],
[close3(t+1) , close3(t+2) , close3(t+3) , close3(t+4) , close3(t+5) , close3(t+6)],
[close3(t+2) , close3(t+3) , close3(t+4) , close3(t+5) , close3(t+6) , 0],
[close3(t+3) , close3(t+4) , close3(t+5) , close3(t+6) , 0 , 0],
[close3(t+4) , close3(t+5) , close3(t+6) , 0 , 0 , 0],
[close3(t+5) , close3(t+6) , 0 , 0 , 0, 0],
[close3(t+6) , 0 , 0 , 0, 0, 0]]):
EigenValue1 := Eigenvalues(MatrixMatrixMultiply(Transpose(InputMatrix3), InputMatrix3)):
Asso_eigenvector := Eigenvectors(MatrixMatrixMultiply(Transpose(InputMatrix3), InputMatrix3)):
AEigenVector[tt+1] := Asso_eigenvector;

Matrix(6, 6, {(1, 1) = .514973850028629+0.*I, (1, 2) = .510603608194333+0.*I, (1, 3) = .469094659512372+0.*I, (1, 4) = .389872713818831+0.*I, (1, 5) = .279479324327359+0.*I, (1, 6) = -.154682461176604+0.*I, (2, 1) = .493994413154560+0.*I, (2, 2) = .306651336822139+0.*I, (2, 3) = -0.583656699197969e-1+0.*I, (2, 4) = -.417550308930506+0.*I, (2, 5) = -.566122865008542+0.*I, (2, 6) = .404579494288380+0.*I, (3, 1) = .449581541124671+0.*I, (3, 2) = -0.266751368453398e-1+0.*I, (3, 3) = -.529663398913996+0.*I, (3, 4) = -.359719616523673+0.*I, (3, 5) = .313717798014566+0.*I, (3, 6) = -.537405340038665+0.*I, (4, 1) = .386952162293470+0.*I, (4, 2) = -.351332186748244+0.*I, (4, 3) = -.390816901794187+0.*I, (4, 4) = .470032416161955+0.*I, (4, 5) = .231969182174424+0.*I, (4, 6) = .547134073332474+0.*I, (5, 1) = .306149178348317+0.*I, (5, 2) = -.530611390076568+0.*I, (5, 3) = .192717713961280+0.*I, (5, 4) = .291213691618787+0.*I, (5, 5) = -.562991429686901+0.*I, (5, 6) = -.431067688369314+0.*I, (6, 1) = .212576094920847+0.*I, (6, 2) = -.489443150196337+0.*I, (6, 3) = .553283259136031+0.*I, (6, 4) = -.488381938231088+0.*I, (6, 5) = .363604594054259+0.*I, (6, 6) = .195982711855368+0.*I})

Matrix(6, 6, {(1, 1) = .515428842592397+0.*I, (1, 2) = .515531996615269+0.*I, (1, 3) = .468108280940919+0.*I, (1, 4) = -.392394120975052+0.*I, (1, 5) = -.280467124908196+0.*I, (1, 6) = -.129613084502380+0.*I, (2, 1) = .494563493180197+0.*I, (2, 2) = .301273494494509+0.*I, (2, 3) = -0.622136916501293e-1+0.*I, (2, 4) = .438383262732459+0.*I, (2, 5) = .571041594120088+0.*I, (2, 6) = .377494770878435+0.*I, (3, 1) = .450886315308369+0.*I, (3, 2) = -0.323387895921418e-1+0.*I, (3, 3) = -.527636820417566+0.*I, (3, 4) = .332744872607714+0.*I, (3, 5) = -.322934536375586+0.*I, (3, 6) = -.549772001891837+0.*I, (4, 1) = .385916641681991+0.*I, (4, 2) = -.352066020655722+0.*I, (4, 3) = -.389655495441319+0.*I, (4, 4) = -.450049711766943+0.*I, (4, 5) = -.221529986447276+0.*I, (4, 6) = .568916672007495+0.*I, (5, 1) = .305485655770791+0.*I, (5, 2) = -.528766119966973+0.*I, (5, 3) = .201065789602278+0.*I, (5, 4) = -.310329356773806+0.*I, (5, 5) = .555973984740943+0.*I, (5, 6) = -.425730045170186+0.*I, (6, 1) = .210210489500614+0.*I, (6, 2) = -.488744465076970+0.*I, (6, 3) = .553484076328700+0.*I, (6, 4) = .494245653290329+0.*I, (6, 5) = -.364390406353340+0.*I, (6, 6) = .183130120876843+0.*I})
mm1 := 1;
solve(
[AEigenVector[mm1][2][1][6] = m1*AEigenVector[mm1][2][1][1]+m2*AEigenVector[mm1][2][1][2]+m3*AEigenVector[mm1][2][1][3]+m4*AEigenVector[mm1][2][1][4]+m5*AEigenVector[mm1][2][1][5],
AEigenVector[mm1][2][2][6] = m1*AEigenVector[mm1][2][2][1]+m2*AEigenVector[mm1][2][2][2]+m3*AEigenVector[mm1][2][2][3]+m4*AEigenVector[mm1][2][2][4]+m5*AEigenVector[mm1][2][2][5],
AEigenVector[mm1][2][3][6] = m1*AEigenVector[mm1][2][3][1]+m2*AEigenVector[mm1][2][3][2]+m3*AEigenVector[mm1][2][3][3]+m4*AEigenVector[mm1][2][3][4]+m5*AEigenVector[mm1][2][3][5],
AEigenVector[mm1][2][4][6] = m1*AEigenVector[mm1][2][4][1]+m2*AEigenVector[mm1][2][4][2]+m3*AEigenVector[mm1][2][4][3]+m4*AEigenVector[mm1][2][4][4]+m5*AEigenVector[mm1][2][4][5],
m1^2 + m2^2 + m3^2 + m4^2 + m5^2 = 1], [m1, m2, m3, m4, m5]);

[m1 = .4027576723+.5022235499*I, m2 = -.5922841426-1.043213223*I, m3 = -.1130969773+.9150300317*I, m4 = .9867039883-.5082455178*I, m5 = -1.400123192+.1536850673*I], [m1 = .4027576723-.5022235499*I, m2 = -.5922841426+1.043213223*I, m3 = -.1130969773-.9150300317*I, m4 = .9867039883+.5082455178*I, m5 = -1.400123192-.1536850673*I]

mm1 := 2;
solve(
[AEigenVector[mm1][2][1][6] = m1*AEigenVector[mm1][2][1][1]+m2*AEigenVector[mm1][2][1][2]+m3*AEigenVector[mm1][2][1][3]+m4*AEigenVector[mm1][2][1][4]+m5*AEigenVector[mm1][2][1][5],
AEigenVector[mm1][2][2][6] = m1*AEigenVector[mm1][2][2][1]+m2*AEigenVector[mm1][2][2][2]+m3*AEigenVector[mm1][2][2][3]+m4*AEigenVector[mm1][2][2][4]+m5*AEigenVector[mm1][2][2][5],
AEigenVector[mm1][2][3][6] = m1*AEigenVector[mm1][2][3][1]+m2*AEigenVector[mm1][2][3][2]+m3*AEigenVector[mm1][2][3][3]+m4*AEigenVector[mm1][2][3][4]+m5*AEigenVector[mm1][2][3][5],
AEigenVector[mm1][2][4][6] = m1*AEigenVector[mm1][2][4][1]+m2*AEigenVector[mm1][2][4][2]+m3*AEigenVector[mm1][2][4][3]+m4*AEigenVector[mm1][2][4][4]+m5*AEigenVector[mm1][2][4][5],
m1^2 + m2^2 + m3^2 + m4^2 + m5^2 = 1], [m1, m2, m3, m4, m5]);

[m1 = .4262845394-.5114193433*I, m2 = -.6313720018+1.072185334*I, m3 = -0.7337582213e-1-.9580760394*I, m4 = -1.036525681-.5400714113*I, m5 = 1.412710014+.1874839516*I], [m1 = .4262845394+.5114193433*I, m2 = -.6313720018-1.072185334*I, m3 = -0.7337582213e-1+.9580760394*I, m4 = -1.036525681+.5400714113*I, m5 = 1.412710014-.1874839516*I]

hello. before I used Mapple 15. But then I`ve run Mapple 16 and now I`ve a problem. I can`t use this program. I open the program, everthing is in the rule, but if I want to write any mathemathical function, or a letter, such as- x or x+2, the program does`t give any reaction. program only gives reaction the numbers.

Please, help me. (my english isn`t very good, and I don`t know I`ve explained my opinion).

https://drive.google.com/file/d/0B2D69u2pweEvMV92SGhtRGZONFk/edit?usp=sharing

a error and code in this attachment mw

i can pdsolve it, but numeric pdsolve it get error

Hi -

 

    It is often useful useful to generate two procedures --- one to evaluate a function and one to evaluate its gradient.  The procedure codegen[GRADIENT] does not treat functions of array variables.  Why doesn't GRADIENT support array variables?  Would it be possible to replace the array variables by variables, apply GRADIENT, and then replace the array variables by variables again?

 

Best wishes,

David

 

https://drive.google.com/file/d/0B2D69u2pweEvU3NpWWQwS3U1XzQ/edit?usp=sharing
https://drive.google.com/file/d/0B2D69u2pweEvMnFabkdiX1hpYVk/edit?usp=sharing

 

a1 := Diff(x1(s,t),s$2) = a*x1(s,t)+b*x2(s,t)+c*x3(s,t)+d*u(t);
a2 := Diff(x1(s,t),t)=x1(s,t);
b1 := Diff(x2(s,t),s$2) = e*x1(s,t)+f*x2(s,t)+g*x3(s,t)+h*u(t);
b2 := Diff(x2(s,t),t)=x2(s,t);
c1 := Diff(x3(s,t),s$2) = i*x1(s,t)+j*x2(s,t)+k*x3(s,t)+l*u(t);
c2 := Diff(x3(s,t),t)=x3(s,t);
sys := [a1, a2, b1, b2, c1, c2];
sol := pdsolve(sys);

length exceed limit

Hi,

I get the error in the following code

restart:

gama1:=0.01:

zet:=0;
#phi0:=0.00789:
Phiavg:=0.02;
lambda:=0.01;
Ha:=1;


                               0
                              0.02
                              0.01
                               1
rhocu:=2/(1-zet^2)*int((1-eta)*rho(eta)*c(eta)*u(eta),eta=0..1-zet):

eq1:=diff(u(eta),eta,eta)+1/(mu(eta)/mu1[w])*(1-Ha^2*u(eta))+((1/(eta)+1/mu(eta)*(mu_phi*diff(phi(eta),eta)))*diff(u(eta),eta));
eq2:=diff(T(eta),eta,eta)+1/(k(eta)/k1[w])*(-2/(1-zet^2)*rho(eta)*c(eta)*u(eta)/(p2*10000)+( (a[k1]+2*b[k1]*phi(eta))/(1+a[k1]*phi1[w]+b[k1]*phi1[w]^2)*diff(phi(eta),eta)+k(eta)/k1[w]/(eta)*diff(T(eta),eta) ));
eq3:=diff(phi(eta),eta)+phi(eta)/(N[bt]*(1+gama1*T(eta))^2)*diff(T(eta),eta);
      /  d   /  d         \\   mu1[w] (1 - u(eta))
      |----- |----- u(eta)|| + -------------------
      \ deta \ deta       //         mu(eta)      

           /             /  d           \\               
           |      mu_phi |----- phi(eta)||               
           | 1           \ deta         /| /  d         \
         + |--- + -----------------------| |----- u(eta)|
           \eta           mu(eta)        / \ deta       /
                                /      /                        
                                |      |                        
/  d   /  d         \\     1    |      |  rho(eta) c(eta) u(eta)
|----- |----- T(eta)|| + ------ |k1[w] |- ----------------------
\ deta \ deta       //   k(eta) |      |         5000 p2        
                                \      \                        

                                /  d           \
     (a[k1] + 2 b[k1] phi(eta)) |----- phi(eta)|
                                \ deta         /
   + -------------------------------------------
                                          2     
         1 + a[k1] phi1[w] + b[k1] phi1[w]      

            /  d         \\\
     k(eta) |----- T(eta)|||
            \ deta       /||
   + ---------------------||
           k1[w] eta      ||
                          //
                                      /  d         \
                             phi(eta) |----- T(eta)|
          /  d           \            \ deta       /
          |----- phi(eta)| + ------------------------
          \ deta         /                          2
                             N[bt] (1 + 0.01 T(eta))
mu:=unapply(mu1[bf]*(1+a[mu1]*phi(eta)+b[mu1]*phi(eta)^2),eta):
k:=unapply(k1[bf]*(1+a[k1]*phi(eta)+b[k1]*phi(eta)^2),eta):
rhop:=3880:
rhobf:=998.2:
cp:=773:
cbf:=4182:
rho:=unapply(  phi(eta)*rhop+(1-phi(eta))*rhobf ,eta):
c:=unapply(  (phi(eta)*rhop*cp+(1-phi(eta))*rhobf*cbf )/rho(eta) ,eta):
mu_phi:=mu1[bf]*(a[mu1]+2*b[mu1]*phi(eta)):

a[mu1]:=39.11:
b[mu1]:=533.9:
mu1[bf]:=9.93/10000:
a[k1]:=7.47:
b[k1]:=0:
k1[bf]:=0.597:
zet:=0.5:
#phi(0):=1:
#u(0):=0:
phi1[w]:=phi0:
N[bt]:=0.2:
mu1[w]:=mu(0):
k1[w]:=k(0):

eq1:=subs(phi(0)=phi0,eq1):
eq2:=subs(phi(0)=phi0,eq2):
eq3:=subs(phi(0)=phi0,eq3):

#A somewhat speedier version uses the fact that you really need only compute 2 integrals not 3, since one of the integrals can be written as a linear combination of the other 2:
Q:=proc(pp2,fi0) local res,F0,F1,F2,a,INT0,INT10,B;
global Q1,Q2;
print(pp2,fi0);
if not type([pp2,fi0],list(numeric)) then return 'procname(_passed)' end if:
res := dsolve(subs(p2=pp2,phi0=fi0,{eq1=0,eq2=0,eq3=0,u(1)=lambda/(phi(1)*rhop/rhobf+(1-phi(1)))*D(u)(1),D(u)(0)=0,phi(1)=phi0,T(1)=0,D(T)(1)=1}), numeric,output=listprocedure):
F0,F1,F2:=op(subs(res,[u(eta),phi(eta),T(eta)])):
INT0:=evalf(Int((1-eta)*F0(eta),eta=0..1-zet));
INT10:=evalf(Int((1-eta)*F0(eta)*F1(eta),eta=0..1-zet));
B:=(-cbf*rhobf+cp*rhop)*INT10+ rhobf*cbf*INT0;
a[1]:=2/(1-zet^2)*B-10000*pp2;
a[2]:=INT10/INT0-Phiavg;
Q1(_passed):=a[1];
Q2(_passed):=a[2];
if type(procname,indexed) then a[op(procname)] else a[1],a[2] end if
end proc;
#The result agrees very well with the fsolve result.
#Now I did use a better initial point. But if I start with the same as in fsolve I get the same result in just about 2 minutes, i.e. more than 20 times as fast as fsolve:

Q1:=proc(pp2,fi0) Q[1](_passed) end proc;
Q2:=proc(pp2,fi0) Q[2](_passed) end proc;
Optimization:-LSSolve([Q1,Q2],initialpoint=[6.5,exp(-1/N[bt])]);


proc(pp2, fi0)  ...  end;
proc(pp2, fi0)  ...  end;
proc(pp2, fi0)  ...  end;
              HFloat(6.5), HFloat(0.006737946999)

 

 

the error is :

Error, (in Optimization:-LSSolve) system is singular at left endpoint, use midpoint method instead

how can I fix it.

Thanks

 

Amir

First 234 235 236 237 238 239 240 Last Page 236 of 2255