maple2015

120 Reputation

6 Badges

4 years, 297 days

MaplePrimes Activity


These are questions asked by maple2015

Hi
I have the serious problem with time consuming integrations!
Is there a way to calculate the integrations in less possible time?

restart;

m := 40:

L := 5:

E :=70*(1-(y+0.5)^2)+380*(y+0.5)^2:

beta := Pi^2/L^2:

phi := add(a[n]*y^n, n = 0 .. m):

Eq := diff(phi, y$2)+(diff(E, y))*(diff(phi, y))/E+((diff(E, y$2))/E-((diff(E, y))/E)^2)*phi-2*beta*(1.3)*(phi-1):

st := [seq(coeftayl(Eq, y = 0, j), j = 0 .. m-2)]:

for k to m-1 do

a[m-k+1] := solve(st[m-k], a[m-k+1])

end do:

phi := subs(solve({eval(phi, y = -sqrt(-z^2+1)), eval(phi, y = sqrt(-z^2+1))}, {a[0], a[1]}), phi):

# One of the following integrations must be computed:

# Cartesian

int(int(E*phi, z = -sqrt(-y^2+1) .. sqrt(-y^2+1)), y = -1 .. 1);

# Polar

int(int(subs(z = r*cos(t), y = r*sin(t), E*phi*r), r = 0 .. 1), t = 0 .. 2Pi);

_____________________________________________________________________________

Moreover, I had the same problem before:

https://www.mapleprimes.com/questions/223886-Time-Consuming-Integration

 

Dear Friends
Is there a way to solve a complicated integration in less possible time?

Thanks

_________________________________________________________________________________
 

restart;
Digits := 100:
tm := time():
with(LinearAlgebra):

m := 6:
a := 0.1:
b := 10*a:
E := 1:
h := 1:
nu := 0.3:

w := (r-b)^2*(r-a)^2*add(add(W[n, i]*r^n*t^(i-n), n = 0 .. i), i = 0 .. m):
ur := -z*(diff(w, r)):
ut := -z*(diff(w, t))/r:
er := diff(ur, r)+(1/2)*(diff(w, r))^2:
et := ur/r+(diff(ut, t))/r+(diff(w, t))^2/(2*r^2):
grt := diff(ut, r)-ut/r+(diff(ur, t))/r+(diff(diff(w, t), r))/r:
u := -(1/2)*E*(2*er*et*nu+er^2+et^2)/(nu^2-1)+(1/2)*E*grt^2/(2*(1+nu)):

PI := int(int(int(u*r, z = -(1/2)*h .. (1/2)*h), t = 0 .. 2*Pi), r = a .. b)-0.5*P*(int(int(r*(diff(w, r))^2, r = a .. b), t = 0 .. 2*Pi)):

Time = time()-tm;

Hi

Please download and check the attached file.
It seems when you run the code more than one time, various results are obtained each time.

What is the reason? How it can be fixed?

Thanks


 

restart; Digits := 20; tm := time(); with(LinearAlgebra); m := 6; a := .1; b := 10*a; E := 1; h := 1; nu := .3; ur := -w*z+u0; u0 := 0; ut := add(add(T[n, i]*r^n*t^(i-n), n = 0 .. i), i = 0 .. m); w := (r-b)^2*(r-a)^2*add(add(W[n, i]*r^n*t^(i-n), n = 0 .. i), i = 0 .. m); er := diff(ur, r); et := ur/r+(diff(ut, t))/r; ert := 1/2*(diff(ut, r)-ut/r+(diff(ur, t))/r); u := -(1/2)*E*(2*er*et*nu+er^2+et^2)/(nu^2-1)+2*E*ert^2/(2+2*nu); N := sum(i+1, i = 0 .. m); PI := int(int(int(u*r, z = -(1/2)*h .. (1/2)*h), t = 0 .. 2*Pi), r = a .. b)-.5*P*(int(int(r*(diff(w, r))^2, r = a .. b), t = 0 .. 2*Pi)); s1 := seq(indets(add(add(T[n, i], n = 0 .. i), i = 0 .. m))[k] = c[k], k = 1 .. N); s2 := seq(indets(add(add(W[n, i], n = 0 .. i), i = 0 .. m))[k] = c[k+N], k = 1 .. N); PI := subs(s1, s2, PI); for k to 2*N do diff(PI, c[k]); if % = 0 then ex := `union`({}, {k}) else eq[k] := % end if end do; NE := seq(ex[j], j = 1 .. numelems(ex)); M := GenerateMatrix([`$`(eq[j], j = 1 .. 2*N)], [`$`(c[j], j = 1 .. 2*N)])[1]; M := DeleteColumn(DeleteRow(M, NE), NE); Determinant(M); 12*fsolve(%, P = 0 .. 1)*(-nu^2+1)*a^2/(E*h^3); Time = time()-tm

Time = 85.363

(1)

``


 

Download Stability.mw

# Bending Moment Envelope Curve for Isostatic Two-Span Beam

restart:

with(plots):

with(Optimization):
PD:= proc (L1, L2, L3, N)

local l, R, Y, M, M1, M2, V:

R[1]:= piecewise(x <= L1, (L1-x)/L1, 0):

l[1]:=L1:

l[2]:=L2:

l[3]:=L3:

solve([add(R[i], i = 1 .. 3) = 1, add(R[j]*add(l[i], i = 1 .. j), j = 2 .. 3) = x], [R[2], R[3]]):

R[2]:=rhs(%[1][1]):

R[3]:= rhs(`%%`[1][2]):

M1:=piecewise(y <= add(l[i], i = 1 .. 2), R[1]*y, `and`(add(l[i], i = 1 .. 2) < y, y <= add(l[i], i = 1 .. 3)), R[1]*y+R[2]*(y-add(l[i], i = 1 .. 2))):

M2:=piecewise(y <= x, 0, x-y):

for Y to N do eval(M1+M2, y = Y*add(l[j], j = 1 .. 3)/N):

M[Y]:=Maximize(abs(%),x=0..add(l[j],j=1..3))[1]

end do:

pointplot(`<,>`(seq(i*add(l[j], j = 1 .. 3)/N, i = 1 .. N)), `<,>`(seq(M[i], i = 1 .. N)), color = red, symbol = asterisk):

display(%, axis = [gridlines = [10, color = black]], size = [700, "golden"], axesfont = [Times, 16])

end proc:

Hi

I use some commands like the evalf[10]

But they don't work for the definite double integral in attached file.

It leads to "Error, (in type/algfun) too many levels of recursion"

Please help me to find the answer

Thank You Very Much

Double-Int.mw

 

3 4 5 6 7 8 9 Page 5 of 11