sand15

1344 Reputation

15 Badges

11 years, 29 days

MaplePrimes Activity


These are replies submitted by sand15

@Thomas Dean 

Why do you talk about Maplet and where the message in your initial question comes from?
I don't see any Maplet command  in your code.

There is no Maple restriction.

But having already encountered this problem in my professional activities I can tell you that since Windows10 such a limitation is imposed by the OS (and defined by the value [that you can change] of variable MAX_PATH).
Neither Mac OSX not Linux impose a limitation to the lenth of a path.

First point: replace your last line by this one

obj := add((stress[i]-true_stress[i])^2, i = 1 .. 10)

Next it would be usefull you provode ranges of variation for the seven parameters (G1,G2,G3,tau1,tau2,tau3, strain) for a crude attempt to minimize obj lead to non numeric values.

@Ahmed111 

You will find in the attached file:

  • A correct construction of M (if I'm not mistaken).
     
  • A synthetic representation of its characteristic polynomia (formula (6), valid for any value of N).
     
  • The expression CharacteristicPolynomial provides and a few ways to express this lengthy formula in a more synthetic form (while less tractable than (formula (6))

restart

with(LinearAlgebra):

V := (N, s) -> Vector(N, symbol=s):
J := N -> IdentityMatrix(N):

n := 4:


M := I *~ (
             DiagonalMatrix( < -2*lambda, V(n, a) > )
             +
            (lambda+m__0) *~ IdentityMatrix(n+1)
          ):

M[n+1, 1..n] := -V(n, c)^+:
M[1..n, n+1] :=  V(n, c):

M


A pretty formula for the characteristic polynomial
 

# Step 0: define X this way

X := eta *~ IdentityMatrix(n+1) - eval(M, lambda=theta-m__0)

X := Matrix(5, 5, {(1, 1) = eta-I*(-theta+2*`#msub(mi("m"),mi("0"))`), (1, 2) = 0, (1, 3) = 0, (1, 4) = 0, (1, 5) = -c[1], (2, 1) = 0, (2, 2) = eta-I*(a[1]+theta), (2, 3) = 0, (2, 4) = 0, (2, 5) = -c[2], (3, 1) = 0, (3, 2) = 0, (3, 3) = eta-I*(a[2]+theta), (3, 4) = 0, (3, 5) = -c[3], (4, 1) = 0, (4, 2) = 0, (4, 3) = 0, (4, 4) = eta-I*(a[3]+theta), (4, 5) = -c[4], (5, 1) = c[1], (5, 2) = c[2], (5, 3) = c[3], (5, 4) = c[4], (5, 5) = eta-I*(a[4]+theta)})

(1)

# Step 1: write each diagonal element this way

for i from 1 to n+1 do
  X[i, i] := eta-u[i]
end do:

X;

Matrix([[eta-u[1], 0, 0, 0, -c[1]], [0, eta-u[2], 0, 0, -c[2]], [0, 0, eta-u[3], 0, -c[3]], [0, 0, 0, eta-u[4], -c[4]], [c[1], c[2], c[3], c[4], eta-u[5]]])

(2)

# Step 2: look to thexhape of the minots of W wrt to its rightmost column

for i from 1 to n+1 do
  Minor(X, i, n+1) * X[i, n+1] * (-1)^(i-1)
end do;

c[1]^2*(eta-u[2])*(eta-u[3])*(eta-u[4])

 

(eta-u[1])*c[2]^2*(eta-u[3])*(eta-u[4])

 

(eta-u[1])*(eta-u[2])*(eta-u[4])*c[3]^2

 

(eta-u[1])*(eta-u[2])*(eta-u[3])*c[4]^2

 

(eta-u[1])*(eta-u[2])*(eta-u[3])*(eta-u[4])*(eta-u[5])

(3)

# Step 3: then the determinant of X writes

det := add(Minor(X, i, n+1) * X[i, n+1] * (-1)^(i-1), i=1..n+1);
 

c[1]^2*(eta-u[2])*(eta-u[3])*(eta-u[4])+(eta-u[1])*c[2]^2*(eta-u[3])*(eta-u[4])+(eta-u[1])*(eta-u[2])*(eta-u[4])*c[3]^2+(eta-u[1])*(eta-u[2])*(eta-u[3])*c[4]^2+(eta-u[1])*(eta-u[2])*(eta-u[3])*(eta-u[4])*(eta-u[5])

(4)

# Step 4: simplify this expression bt setting Z[i] = eta-u[i]

expand( eval(det, [seq(eta-u[i]=Z[i], i=1..n+1)]) / mul(Z[i], i=1..n+1) );

1+c[4]^2/(Z[4]*Z[5])+c[3]^2/(Z[3]*Z[5])+c[2]^2/(Z[2]*Z[5])+c[1]^2/(Z[1]*Z[5])

(5)

# Step 5: Thus this representation of the characteristic polynomial as a rational fraction

det := (-1)^'n' * Product(Z[k], k=1..'n'+1) * (1 + Sum(c[k]^2/Z[k]/Z[k+1], k=1..'n'));

print():
k := 'k':
reminder := Z[k] = eval(eta-u[k], u[k] = 'M[k, k]');

(-1)^n*(Product(Z[k], k = 1 .. n+1))*(1+Sum(c[k]^2/(Z[k]*Z[k+1]), k = 1 .. n))

 

 

Z[k] = eta-M[k, k]

(6)


A direct use of  CharacteristicPolynomial

# With CharacteristicPolynomial:

CP := CharacteristicPolynomial(eval(X, eta=0), eta);

eta^5-(-u[5]-u[4]-u[3]-u[2]-u[1])*eta^4-(-c[1]^2-c[2]^2-c[3]^2-c[4]^2-u[1]*u[2]-u[1]*u[3]-u[1]*u[4]-u[1]*u[5]-u[2]*u[3]-u[2]*u[4]-u[2]*u[5]-u[3]*u[4]-u[3]*u[5]-u[4]*u[5])*eta^3-(-c[1]^2*u[2]-c[1]^2*u[3]-c[1]^2*u[4]-c[2]^2*u[1]-c[2]^2*u[3]-c[2]^2*u[4]-c[3]^2*u[1]-c[3]^2*u[2]-c[3]^2*u[4]-c[4]^2*u[1]-c[4]^2*u[2]-c[4]^2*u[3]-u[1]*u[2]*u[3]-u[1]*u[2]*u[4]-u[1]*u[2]*u[5]-u[1]*u[3]*u[4]-u[1]*u[3]*u[5]-u[1]*u[4]*u[5]-u[2]*u[3]*u[4]-u[2]*u[3]*u[5]-u[2]*u[4]*u[5]-u[3]*u[4]*u[5])*eta^2-(-c[1]^2*u[2]*u[3]-c[1]^2*u[2]*u[4]-c[1]^2*u[3]*u[4]-c[2]^2*u[1]*u[3]-c[2]^2*u[1]*u[4]-c[2]^2*u[3]*u[4]-c[3]^2*u[1]*u[2]-c[3]^2*u[1]*u[4]-c[3]^2*u[2]*u[4]-c[4]^2*u[1]*u[2]-c[4]^2*u[1]*u[3]-c[4]^2*u[2]*u[3]-u[1]*u[2]*u[3]*u[4]-u[1]*u[2]*u[3]*u[5]-u[1]*u[2]*u[4]*u[5]-u[1]*u[3]*u[4]*u[5]-u[2]*u[3]*u[4]*u[5])*eta+c[1]^2*u[2]*u[3]*u[4]+c[2]^2*u[1]*u[3]*u[4]+c[3]^2*u[1]*u[2]*u[4]+c[4]^2*u[1]*u[2]*u[3]+u[1]*u[2]*u[3]*u[4]*u[5]

(7)

# A more synthetic form

with(LargeExpressions):

Synthetic_form := collect(CP, eta, Veil[T]);
 

eta^5+eta^4*T[2]+eta^3*T[3]+eta^2*T[4]+eta*T[5]+T[1]

(8)

# Where the coefficients are:

Coefficients_are := [ seq(T[i] = Unveil[T](T[i]), i=1..LastUsed[T]) ]:
print~(Coefficients_are):

T[1] = c[1]^2*u[2]*u[3]*u[4]+c[2]^2*u[1]*u[3]*u[4]+c[3]^2*u[1]*u[2]*u[4]+c[4]^2*u[1]*u[2]*u[3]+u[1]*u[2]*u[3]*u[4]*u[5]

 

T[2] = u[5]+u[4]+u[3]+u[2]+u[1]

 

T[3] = c[1]^2+c[2]^2+c[3]^2+c[4]^2+u[1]*u[2]+u[1]*u[3]+u[1]*u[4]+u[1]*u[5]+u[2]*u[3]+u[2]*u[4]+u[2]*u[5]+u[3]*u[4]+u[3]*u[5]+u[4]*u[5]

 

T[4] = c[1]^2*u[2]+c[1]^2*u[3]+c[1]^2*u[4]+c[2]^2*u[1]+c[2]^2*u[3]+c[2]^2*u[4]+c[3]^2*u[1]+c[3]^2*u[2]+c[3]^2*u[4]+c[4]^2*u[1]+c[4]^2*u[2]+c[4]^2*u[3]+u[1]*u[2]*u[3]+u[1]*u[2]*u[4]+u[1]*u[2]*u[5]+u[1]*u[3]*u[4]+u[1]*u[3]*u[5]+u[1]*u[4]*u[5]+u[2]*u[3]*u[4]+u[2]*u[3]*u[5]+u[2]*u[4]*u[5]+u[3]*u[4]*u[5]

 

T[5] = c[1]^2*u[2]*u[3]+c[1]^2*u[2]*u[4]+c[1]^2*u[3]*u[4]+c[2]^2*u[1]*u[3]+c[2]^2*u[1]*u[4]+c[2]^2*u[3]*u[4]+c[3]^2*u[1]*u[2]+c[3]^2*u[1]*u[4]+c[3]^2*u[2]*u[4]+c[4]^2*u[1]*u[2]+c[4]^2*u[1]*u[3]+c[4]^2*u[2]*u[3]+u[1]*u[2]*u[3]*u[4]+u[1]*u[2]*u[3]*u[5]+u[1]*u[2]*u[4]*u[5]+u[1]*u[3]*u[4]*u[5]+u[2]*u[3]*u[4]*u[5]

(9)

 

# In these expressions of T[i] we recognize:

T[1] = Determinant(eval(X, eta=0));
T[2] = -Trace(eval(X, eta=0));;
T[3] = - expand( 1/2*(Trace(eval(X, eta=0)^2) - Trace(eval(X, eta=0))^2) )

T[1] = -c[1]^2*u[2]*u[3]*u[4]-c[2]^2*u[1]*u[3]*u[4]-c[3]^2*u[1]*u[2]*u[4]-c[4]^2*u[1]*u[2]*u[3]-u[1]*u[2]*u[3]*u[4]*u[5]

 

T[2] = u[5]+u[4]+u[3]+u[2]+u[1]

 

T[3] = c[1]^2+c[2]^2+c[3]^2+c[4]^2+u[1]*u[2]+u[1]*u[3]+u[1]*u[4]+u[1]*u[5]+u[2]*u[3]+u[2]*u[4]+u[2]*u[5]+u[3]*u[4]+u[3]*u[5]+u[4]*u[5]

(10)

# and so on, those are classical formulas.

Download CP_2.mw

@Ahmed111 

I'm sorry, I didn't see the comma in

diag(-2*lambda, a)

and read

diag(-2*lambda . a)

To get the matrix you want  you have to write (a being a vector of size N) write

M11 := DiagonalMatrix( < -2*lambda, V(n, a) > )


Nevertheless you need to me more precise: what is exactly the shape ofthe matrix M you want to build (write it by hand for N=2 to provide an example)?

A few interpretations are fiven in the attached file (each corresponds to an input text of different color)
Whatever, assuming c has length N+1, here is a correction (inputs in black at the end of the file)
CP.mw

@Hahn Hahn 

Look here to see how you can check your inputs Check_your_inputs.mw
(as I use an "old" version of Maple I had to write g := (x,q) -> ... for it doesn't accept your syntax)

@Thomas Richard, please excuse me for intervening.

@sursumCorda 

With the linalg package the eigenvectors are returned this way

linalg:-eigenvectors(m);
                   [-1, 1, {Vector[row](2, {(1) = -1, (2) = 1})}], [7, 1, {Vector[row](2, {(1) = 1, (2) = 1})}]

But for the LinearAlgebra package you get a vector of eigenvalues and the matrix of eigenvectors.
If you set _EnvLinalg95 to true, use the option output='list' in  LinearAlgebra:-Eigenvectors (which then returns the eigenvectors under the form linalg-eigenvectors does):

_EnvLinalg95 := true:
LinearAlgebra:-Eigenvectors(m, output='list');
[[7, 1, {Vector(2, {(1) = 1, (2) = 1})}], [-1, 1, {Vector(2, {(1) = -1, (2) = 1})}]]

You have 3 indeterminates (x, y, z) and 2 equations (notice there is no f nor g as you say in the text).
Could you be more precise?

@Carl Love 

I tried hard, not enough obviously, to prove the equality by hand.

For the record the left hand side of rel(n) is a consequence of another relation, one can get on several papers, which is said to be "true for all integers larger than 3".
I observed it was also true for n=2, for any negative integer... and for any real number but 1 (so what is it to write the previous sentence?).
This puzzled me and then started simplifying rel(n), rewritting some terms differently and so on, thinking that assume/assuming would be of no help.
Thanks again for this Martin Gardner's Ahah intuition.

@acer @vv

Thanks to both us for your quick reply.

@Carl Love 

Sorry, I missed it.
But its notations remain confusing, not to say meaningless.

@Rouben Rostamian  

ContoursWithLabels is Kitonum's code see_here

@C_R 

Thanks for your return.

Go here help(dsolve[numeric]), search for 'known', try to understand hot to proceed from examples dsol8 and dsol8b.

@Muhammad Usman 

Does this suit you?

plots[display](
  PP
  , size = [500, 400]
  , axis[1]=[tickmarks=[seq(k=k/10., k=0..20, 5)]]
  , axis[2]=[tickmarks=[seq(k=k/10., k=0..20, 5)]]
);

But given L=1 and T=2, it seems to me that this

plots[display](
  PP
  , size = [500, 400]
  , axis[1]=[tickmarks=[seq(k=evalf(k*`&Delta:x`), k=0..20, 5)]]
  , axis[2]=[tickmarks=[seq(k=evalf(k*`&Delta:t`), k=0..20, 5)]]
);

would be more correct.

What is the structure of the data you want to send to Tecplot?
I guess it is a collection of contours, each contour being a collection of segments, that is a collection of 2x2 matrices.
The question is what structure Tecplot can manage? Once defined, the corresponding structure can be build in Maple.
But the "precision" of a contour of a given length is defined by the number of segments which approximate this contour. So the drawing in Tecplot of a contour made of, for instance, 100 segments constructed in Maple, will not have an higher resolution than thesame contour directly drawn in Maple.

First 14 15 16 17 18 19 20 Last Page 16 of 36