Lenny

30 Reputation

3 Badges

4 years, 84 days

MaplePrimes Activity


These are questions asked by Lenny

Hello Everyone,

I am currently in the process of building a user interface where a user can input a ply layup for a composite part which needs to be calculated. I want to forbid the use of non-numerical value in the matrix which represents my ply layup, before it gets sent to be calculated, but I am wondering how to check if my matrix has non-numerical values in it. 

At best, it would not only check if the matrix has non-numerical entries, but also give me the indices where exactly that value is present. I have yet been unsuccessful trying to find a fitting command. Do you perhaps know something that might work.
For clairification, allowable entries are in a range of -90 to 90, so it should not look for the "-" in the matrix. 

Best Regards,
Lennart

Hello Everyone,

So I am currently plotting some data within an embedded plot component using the following code:

SetProperty("DeterminantenRaumPlot1", value, dataplot(DetAnalysisNx2, DetAnalysisDeterm2));

Which is working just fine, DetAnalysisNx2 and DetAnalysisDeterm2 are single rows vectors with numbers in it.

However I need the plot to be in logarithmic mode for the vertical axis, but I do not know how to achieve this. I can set it manually, but when I save and reopen the document and re-do the calculation it turns back to linear vertical axis.

What kind of code segment am I missing? I have tried adding this like 'mode = log' but it is not working with dataplot. Maybe I need a different kind of plot? But then my Vectors will not work anymore, dataplot makes it so easy to use and the setting is available manually.

 

Any help would be fantastic!
Thanks and best regards,
Lennart

Hello Everyone,

I have an equation system which is under-determined and thus yields infinite solutions. 
These usually come in the form of "_t1[1]" or similar variables. Mostly one, sometimes even two.
I am also working on a script for automated solving of a buckling problem and the solution yields of course these t-variables.
Everytime the code run, I get a different t-variable, which makes automation harder.

Please see attached code. (Of course simplified, not my actual code.)

It starts with a random matrix and a solution vector for the equation system.
The system is solved and its coefficients transfered to an equation.
However every time I hit "Enter" on the LinearSolve command, the name of the _t4[1] variable changes.

Is there a way to keep getting the same variable name? How do you work with this?

Best Regards,
Lennart

A := Matrix(4, 4, {(1, 1) = 1, (1, 2) = 3, (1, 3) = 4.5, (1, 4) = 7, (2, 1) = 0, (2, 2) = 2, (2, 3) = 5, (2, 4) = 9, (3, 1) = 0, (3, 2) = 0, (3, 3) = 0, (3, 4) = 0, (4, 1) = 0, (4, 2) = 0, (4, 3) = 0, (4, 4) = 0}); B := Vector(4, {(1) = 0, (2) = 0, (3) = 0, (4) = 0}); C := LinearAlgebra[LinearSolve](A, B)

Vector[column](%id = 18446746248681490062)

(1)

W1 := C[1]; W2 := C[2]; W3 := C[3]; W4 := C[4]; Q := W1*x^4+W2*x^3+W3*x^2+W1

(HFloat(3.0)*_t4[2]+HFloat(6.5)*_t4[1])*x^4+(-HFloat(2.5)*_t4[2]-HFloat(4.5)*_t4[1])*x^3+_t4[2]*x^2+HFloat(3.0)*_t4[2]+HFloat(6.5)*_t4[1]

(2)

restart

``


 

Download MultipleTCoefficients.mw

Hello Everyone,

I am currently trying to tidy up my worksheet and hide all of the script/code that I wrote in the Maple 2D-Math within the execution script of buttons etc.
Was going well so far until I started transferring code where I was using a lot of symbolic math (if I understood correctly)
There is one instance where I have a variable chi which equals x divided by a.
a being a number, e.g. 5000, while x is and remains a variable.
No problem in 2D-Math as the unknown x is dragged through all following equations.

Not so in the code editor, I think. Doing the calculation results not in x/5000, but in this:


It keeps getting worse because this term will be derived, assembled into a matrix, etc. where the expressions are getting ridiculous:


Without getting into the details of what my script should do, I believe this is a very general issue, not specific to my code.

Is the code editor / "Code when Used/Clicked" not capable of symbolic math? Oder is there some setting that could potentially help me?

Best Regards,
Lennart
 

Hello Everyone,

Me Again... So I have been working do create a procedure, but I started the coding without encasing it in the proc() / end proc; brackets, thinking I could add it later.
What the script does is take parameters and create a matrix and determines the determinant of that matrix.
When I let the script run on its own, it is working perfectly, but when I activate the proc() / end proc; brackets it suddenly gives me a number of errors, telling me the matrix is not square or that the if-loop misses its 2nd argument.

I am kind of suspecting this happens because I take the variable "NumberPlies" from a Table that exists outside the proc(), but on the same work sheet, but I am not 100% sure.
I have uploaded the code, so one of you experts could perhaps have a look and tell me where I am wrong. Why is the script behaving differently on its own compared to when I call it as a procedure?

Any help would be fantastic!

Best Regards,
Lennart
 

Download Test_GetDet_MaplePrimes.mw
 

Maple*des*zur*Berechnung*Beulverhaltens*Composite*Programm*symmetrischer-LEVY*Platten*nach
Anzahl Lagen des Laminates (Ohne Mittellage, eine Seite der Symmetrie):


Lastfall-Definition:

Maple*des*zur*Berechnung*Beulverhaltens*Composite*Programm*symmetrischer-LEVY*Platten*nach

(1)

 

restart; interface(warnlevel = 0); with(DocumentTools); with(LinearAlgebra); with(DocumentTools); with(LinearAlgebra); E1 := 125000; E2 := 10000; v12 := .3; G12 := 5000; t := .25; v21 := E2*v12/E1; Q11 := E1/(-v12*v21+1); Q22 := E2/(-v12*v21+1); Q12 := v21*E1/(-v12*v21+1); Q66 := G12; NumberPlies := GetProperty('ComboBox1', 'selectedindex'); A11 := 0; A12 := 0; A16 := 0; A21 := 0; A22 := 0; A26 := 0; A61 := 0; A62 := 0; A66 := 0; B11 := 0; B12 := 0; B16 := 0; B21 := 0; B22 := 0; B26 := 0; B61 := 0; B62 := 0; B66 := 0; D11 := 0; D12 := 0; D16 := 0; D21 := 0; D22 := 0; D26 := 0; D61 := 0; D62 := 0; D66 := 0; for i to NumberPlies do CurrentAngle := PlyTable1[i, 1]; CurrentHeight := t*i; CurrentHeight := CurrentHeight-.5*t*NumberPlies; CurrentAngleRad := (1/180)*Pi*CurrentAngle; CurrentQMatrix := Matrix(3, 3, {(1, 1) = Q11, (1, 2) = Q12, (1, 3) = 0, (2, 1) = Q12, (2, 2) = Q22, (2, 3) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = Q66}); TurnMatrix := Matrix(3, 3, {(1, 1) = cos(CurrentAngleRad)^2, (1, 2) = sin(CurrentAngleRad)^2, (1, 3) = -2*cos(CurrentAngleRad)*sin(CurrentAngleRad), (2, 1) = sin(CurrentAngleRad)^2, (2, 2) = cos(CurrentAngleRad)^2, (2, 3) = 2*cos(CurrentAngleRad)*sin(CurrentAngleRad), (3, 1) = -2*cos(CurrentAngleRad)*sin(CurrentAngleRad), (3, 2) = 2*cos(CurrentAngleRad)*sin(CurrentAngleRad), (3, 3) = cos(CurrentAngleRad)^2-sin(CurrentAngleRad)^2}); CurrentQMatrixTurned := Multiply(TurnMatrix, Multiply(CurrentQMatrix, Transpose(TurnMatrix))); Q_11 := CurrentQMatrixTurned[1, 1]; Q_12 := CurrentQMatrixTurned[1, 2]; Q_16 := CurrentQMatrixTurned[1, 3]; Q_21 := CurrentQMatrixTurned[2, 1]; Q_22 := CurrentQMatrixTurned[2, 2]; Q_26 := CurrentQMatrixTurned[2, 3]; Q_61 := CurrentQMatrixTurned[3, 1]; Q_62 := CurrentQMatrixTurned[3, 2]; Q_66 := CurrentQMatrixTurned[3, 3]; A11 := A11+Q_11*(CurrentHeight-CurrentHeight+t); A12 := A12+Q_12*(CurrentHeight-CurrentHeight+t); A16 := A16+Q_16*(CurrentHeight-CurrentHeight+t); A21 := A21+Q_21*(CurrentHeight-CurrentHeight+t); A22 := A22+Q_22*(CurrentHeight-CurrentHeight+t); A26 := A26+Q_26*(CurrentHeight-CurrentHeight+t); A61 := A61+Q_61*(CurrentHeight-CurrentHeight+t); A62 := A62+Q_62*(CurrentHeight-CurrentHeight+t); A66 := A66+Q_66*(CurrentHeight-CurrentHeight+t); B11 := B11+.5*Q_11*(CurrentHeight^2-(CurrentHeight-t)^2); B12 := B12+.5*Q_12*(CurrentHeight^2-(CurrentHeight-t)^2); B16 := B16+.5*Q_16*(CurrentHeight^2-(CurrentHeight-t)^2); B21 := B21+.5*Q_21*(CurrentHeight^2-(CurrentHeight-t)^2); B22 := B22+.5*Q_22*(CurrentHeight^2-(CurrentHeight-t)^2); B26 := B26+.5*Q_26*(CurrentHeight^2-(CurrentHeight-t)^2); B61 := B61+.5*Q_61*(CurrentHeight^2-(CurrentHeight-t)^2); B62 := B62+.5*Q_62*(CurrentHeight^2-(CurrentHeight-t)^2); B66 := B66+.5*Q_66*(CurrentHeight^2-(CurrentHeight-t)^2); D11 := D11+(1/3)*Q_11*(CurrentHeight^3-(CurrentHeight-t)^3); D12 := D12+(1/3)*Q_12*(CurrentHeight^3-(CurrentHeight-t)^3); D16 := D16+(1/3)*Q_16*(CurrentHeight^3-(CurrentHeight-t)^3); D21 := D21+(1/3)*Q_21*(CurrentHeight^3-(CurrentHeight-t)^3); D22 := D22+(1/3)*Q_22*(CurrentHeight^3-(CurrentHeight-t)^3); D26 := D26+(1/3)*Q_26*(CurrentHeight^3-(CurrentHeight-t)^3); D61 := D61+(1/3)*Q_61*(CurrentHeight^3-(CurrentHeight-t)^3); D62 := D62+(1/3)*Q_62*(CurrentHeight^3-(CurrentHeight-t)^3); D66 := D66+(1/3)*Q_66*(CurrentHeight^3-(CurrentHeight-t)^3) end do; A = (Matrix(3, 3, {(1, 1) = A11, (1, 2) = A12, (1, 3) = A16, (2, 1) = A21, (2, 2) = A22, (2, 3) = A26, (3, 1) = A61, (3, 2) = A62, (3, 3) = A66})); B = (Matrix(3, 3, {(1, 1) = B11, (1, 2) = B12, (1, 3) = B16, (2, 1) = B21, (2, 2) = B22, (2, 3) = B26, (3, 1) = B61, (3, 2) = B62, (3, 3) = B66})); D = (Matrix(3, 3, {(1, 1) = D11, (1, 2) = D12, (1, 3) = D16, (2, 1) = D21, (2, 2) = D22, (2, 3) = D26, (3, 1) = D61, (3, 2) = D62, (3, 3) = D66})); Nx := 200; Ny := 0; Nxy := 0; a := 500; b := 500; m := 1; chi := x/a; eta := y/b; alpha := a/b; alphaD := a*(D22/D11)^(1/4)/b; betaM := m*Pi/alphaD; betaD := (D12+2*D66)/sqrt(D11*D22); etaD := D12/sqrt(D11*D22); nyD := etaD/betaD; kx := Nx*b^2/(Pi^2*sqrt(D11*D22)); ky := Ny*b^2/(Pi^2*D22); kxy := Nxy*b^2/(Pi^2*(D11*D22^3)^(1/4)); Omega := betaD^2-1+kx*(alphaD/m)^2; if kx > (m/alphaD)^2 then lambda1 := m*Pi*sqrt(betaD+sqrt(Omega))/alphaD; lambda3 := m*Pi*sqrt(sqrt(Omega)-betaD)/alphaD; GenFunc := W1*cosh(lambda1*eta)+W2*sinh(lambda1*eta)+W3*cos(lambda3*eta)+W4*sin(lambda3*eta); Status := 1 elif kx < (m/alphaD)^2*(-betaD^2+1) then omegaklein := sqrt(.5*(sqrt(betaD^2-Omega)+betaD)); phi := sqrt(.5*(sqrt(betaD^2-Omega)-betaD)); GenFunc := W1*cosh(omegaklein*eta)*cos(phi*eta)+W2*sinh(omegaklein*eta)*cos(phi*eta)+W3*cosh(omegaklein*eta)*sin(phi*eta)+W4*sinh(omegaklein*eta)*sin(phi*eta); Status := 5 elif (m/alphaD)^2 > kx then if kx > (m/alphaD)^2*(-betaD^2+1) then lambda1 := m*Pi*sqrt(betaD+sqrt(Omega))/alphaD; lambda3 := m*Pi*sqrt(sqrt(Omega)-betaD)/alphaD; GenFunc := W1*cosh(lambda1*eta)+W2*sinh(lambda1*eta)+W3*cosh(lambda3*eta)+W4*sinh(lambda3*eta); Status := 3 end if end if; y := 0; EQ1 := GenFunc = 0; unassign('y'); GenFunc; EQHelp := diff(GenFunc, `$`(y, 1)); y := 0; EQ2 := EQHelp = 0; unassign('y')*GenFunc; y := b; EQ3 := GenFunc = 0; unassign('y'); GenFunc; EQHelp2 := diff(GenFunc, `$`(y, 1)); y := b; EQ4 := EQHelp2 = 0; unassign('y'); Test := GenerateMatrix({EQ1, EQ2, EQ3, EQ4}, {W1, W2, W3, W4}); Determinant(Test[1]); return Determinant(Test[1])

HFloat(-0.2442128895120277)

(2)

GetDet

GetDet

(3)

GetDet()

Error, (in LinearAlgebra:-Determinant) matrix must be square

 

``


 

Download Test_GetDet_MaplePrimes.mw

 

Test_GetDet_MaplePrimes.mw

1 2 Page 1 of 2