Filter löschen
Filter löschen

Why is my operation(with syms variables) too slow?

2 Ansichten (letzte 30 Tage)
javiera de la carrera
javiera de la carrera am 14 Nov. 2017
Hello! I want to solve this operation:
for l=1236:4084
i= F3(l,1);
aux2=Aux23(l,:);
aux=Aux3(l,:);
xaux=x(i,:);
xaux(aux2)=[];
x1aux=x1(i,1);
x2aux=x2(i,1);
sumxxaux=sumxx(i,1);%chicas y delta
elast33(1,3)=subs(elast(1,3),[Ba,Bu,B1,B2,B3,e],[qqB2(i,4),qqB2(i,23),qqB2(i,aux(1,1)),qqB2(i,aux(1,2)),qqB2(i,aux(1,3)),qqE(i,4)]);
elast33(2,3)=subs(elast(2,3),[Ba,Bu,B1,B2,B3,e],[qqB2(i,4),qqB2(i,23),qqB2(i,aux(1,1)),qqB2(i,aux(1,2)),qqB2(i,aux(1,3)),qqE(i,4)]);
elast33(3,3)=subs(elast(3,3),[Ba,Bu,B1,B2,B3,e],[qqB2(i,4),qqB2(i,23),qqB2(i,aux(1,1)),qqB2(i,aux(1,2)),qqB2(i,aux(1,3)),qqE(i,4)]);
elast33(4,3)=subs(elast(4,3),[Ba,Bu,B1,B2,B3,e],[qqB2(i,4),qqB2(i,23),qqB2(i,aux(1,1)),qqB2(i,aux(1,2)),qqB2(i,aux(1,3)),qqE(i,4)]);
elast33(5,3)=subs(elast(5,3),[Ba,Bu,B1,B2,B3,e],[qqB2(i,4),qqB2(i,23),qqB2(i,aux(1,1)),qqB2(i,aux(1,2)),qqB2(i,aux(1,3)),qqE(i,4)]);
PQ=[ (qqA(i,4) - qqB2(i,4).*(0.13.*x1aux) - qqE(i,4).*(0.16.*x2aux+sumxxaux))./(0.13.*x1aux)
(qqA(i,4) - qqB2(i,23).*(0.16.*x2aux) - qqE(i,4).*(0.13.*x1aux+sumxxaux))./(0.16.*x2aux)
(qqA(i,4) - qqB2(i,aux(1,1)).*xaux(1,1) - qqE(i,4).*(0.13.*x1aux+0.16.*x2aux+sumxxaux-xaux(1,1)))./(xaux(1,1))
(qqA(i,4) - qqB2(i,aux(1,2)).*xaux(1,2) - qqE(i,4).*(0.13.*x1aux+0.16.*x2aux+sumxxaux-xaux(1,2)))./(xaux(1,2))
(qqA(i,4) - qqB2(i,aux(1,3)).*xaux(1,3) - qqE(i,4).*(0.13.*x1aux+0.16.*x2aux+sumxxaux-xaux(1,3)))./(xaux(1,3))];
%PQ=PQ';
Elast1(i,1)=double(subs(elast33(1,3).*PQ(1,1)));
Elast1(i,2)=double(subs(elast33(2,3).*PQ(2,1)));
Elast1(i,3)=double(subs(elast33(3,3).*PQ(3,1)));
Elast1(i,4)=double(subs(elast33(4,3).*PQ(4,1)));
Elast1(i,5)=double(subs(elast33(5,3).*PQ(5,1)));
Elast1(i,:)=[elastd3(1,3) elastd3(2,3) elastd3(3,3) elastd3(4,3) elastd3(5,3) 0 0 0 0 0 0]; end
elast is a matrix of functions where each contains the syms variables (Ba, Bu, B1, B2..e). In this way, for each iteration of "i", a new elast33 matrix is formed depending on this i and on the values taken by the syms variables qqB2, qqA, qqE.
Then I form the PQ matrix that also depends on these last variables and others that are already defined in the problem(xaux,aux,aux2..). Then I finally multiply both matrices.
I can not find where the problem of slowness is! It takes about 1 to 1.5 minutes in each iteration and I need to do it for 15,000 iterations. elast are long functions, can there be the problem? For example, in this case elast is:
elast(:,3)=
-(3*e^4 - 2*B2*e^3 - 2*B3*e^3 - 2*Bu*e^3 - 2*B1*e^3 + B1*B2*e^2 + B1*B3*e^2 + B2*B3*e^2 + B1*Bu*e^2 + B2*Bu*e^2 + B3*Bu*e^2 - B1*B2*B3*Bu)/(3*B1*e^4 + 3*B2*e^4 + 3*B3*e^4 + 3*Ba*e^4 + 3*Bu*e^4 - 4*e^5 - 2*B1*B2*e^3 - 2*B1*B3*e^3 - 2*B2*B3*e^3 - 2*B1*Ba*e^3 - 2*B2*Ba*e^3 - 2*B3*Ba*e^3 - 2*B1*Bu*e^3 - 2*B2*Bu*e^3 - 2*B3*Bu*e^3 - 2*Ba*Bu*e^3 + B1*B2*B3*e^2 + B1*B2*Ba*e^2 + B1*B3*Ba*e^2 + B2*B3*Ba*e^2 + B1*B2*Bu*e^2 + B1*B3*Bu*e^2 + B2*B3*Bu*e^2 + B1*Ba*Bu*e^2 + B2*Ba*Bu*e^2 + B3*Ba*Bu*e^2 - B1*B2*B3*Ba*Bu);
-(3*e^4 - 2*B2*e^3 - 2*B3*e^3 - 2*Ba*e^3 - 2*B1*e^3 + B1*B2*e^2 + B1*B3*e^2 + B2*B3*e^2 + B1*Ba*e^2 + B2*Ba*e^2 + B3*Ba*e^2 - B1*B2*B3*Ba)/(3*B1*e^4 + 3*B2*e^4 + 3*B3*e^4 + 3*Ba*e^4 + 3*Bu*e^4 - 4*e^5 - 2*B1*B2*e^3 - 2*B1*B3*e^3 - 2*B2*B3*e^3 - 2*B1*Ba*e^3 - 2*B2*Ba*e^3 - 2*B3*Ba*e^3 - 2*B1*Bu*e^3 - 2*B2*Bu*e^3 - 2*B3*Bu*e^3 - 2*Ba*Bu*e^3 + B1*B2*B3*e^2 + B1*B2*Ba*e^2 + B1*B3*Ba*e^2 + B2*B3*Ba*e^2 + B1*B2*Bu*e^2 + B1*B3*Bu*e^2 + B2*B3*Bu*e^2 + B1*Ba*Bu*e^2 + B2*Ba*Bu*e^2 + B3*Ba*Bu*e^2 - B1*B2*B3*Ba*Bu);
-(3*e^4 - 2*B3*e^3 - 2*Ba*e^3 - 2*Bu*e^3 - 2*B2*e^3 + B2*B3*e^2 + B2*Ba*e^2 + B3*Ba*e^2 + B2*Bu*e^2 + B3*Bu*e^2 + Ba*Bu*e^2 - B2*B3*Ba*Bu)/(3*B1*e^4 + 3*B2*e^4 + 3*B3*e^4 + 3*Ba*e^4 + 3*Bu*e^4 - 4*e^5 - 2*B1*B2*e^3 - 2*B1*B3*e^3 - 2*B2*B3*e^3 - 2*B1*Ba*e^3 - 2*B2*Ba*e^3 - 2*B3*Ba*e^3 - 2*B1*Bu*e^3 - 2*B2*Bu*e^3 - 2*B3*Bu*e^3 - 2*Ba*Bu*e^3 + B1*B2*B3*e^2 + B1*B2*Ba*e^2 + B1*B3*Ba*e^2 + B2*B3*Ba*e^2 + B1*B2*Bu*e^2 + B1*B3*Bu*e^2 + B2*B3*Bu*e^2 + B1*Ba*Bu*e^2 + B2*Ba*Bu*e^2 + B3*Ba*Bu*e^2 - B1*B2*B3*Ba*Bu);
-(3*e^4 - 2*B3*e^3 - 2*Ba*e^3 - 2*Bu*e^3 - 2*B1*e^3 + B1*B3*e^2 + B1*Ba*e^2 + B3*Ba*e^2 + B1*Bu*e^2 + B3*Bu*e^2 + Ba*Bu*e^2 - B1*B3*Ba*Bu)/(3*B1*e^4 + 3*B2*e^4 + 3*B3*e^4 + 3*Ba*e^4 + 3*Bu*e^4 - 4*e^5 - 2*B1*B2*e^3 - 2*B1*B3*e^3 - 2*B2*B3*e^3 - 2*B1*Ba*e^3 - 2*B2*Ba*e^3 - 2*B3*Ba*e^3 - 2*B1*Bu*e^3 - 2*B2*Bu*e^3 - 2*B3*Bu*e^3 - 2*Ba*Bu*e^3 + B1*B2*B3*e^2 + B1*B2*Ba*e^2 + B1*B3*Ba*e^2 + B2*B3*Ba*e^2 + B1*B2*Bu*e^2 + B1*B3*Bu*e^2 + B2*B3*Bu*e^2 + B1*Ba*Bu*e^2 + B2*Ba*Bu*e^2 + B3*Ba*Bu*e^2 - B1*B2*B3*Ba*Bu);
-(3*e^4 - 2*B2*e^3 - 2*Ba*e^3 - 2*Bu*e^3 - 2*B1*e^3 + B1*B2*e^2 + B1*Ba*e^2 + B2*Ba*e^2 + B1*Bu*e^2 + B2*Bu*e^2 + Ba*Bu*e^2 - B1*B2*Ba*Bu)/(3*B1*e^4 + 3*B2*e^4 + 3*B3*e^4 + 3*Ba*e^4 + 3*Bu*e^4 - 4*e^5 - 2*B1*B2*e^3 - 2*B1*B3*e^3 - 2*B2*B3*e^3 - 2*B1*Ba*e^3 - 2*B2*Ba*e^3 - 2*B3*Ba*e^3 - 2*B1*Bu*e^3 - 2*B2*Bu*e^3 - 2*B3*Bu*e^3 - 2*Ba*Bu*e^3 + B1*B2*B3*e^2 + B1*B2*Ba*e^2 + B1*B3*Ba*e^2 + B2*B3*Ba*e^2 + B1*B2*Bu*e^2 + B1*B3*Bu*e^2 + B2*B3*Bu*e^2 + B1*Ba*Bu*e^2 + B2*Ba*Bu*e^2 + B3*Ba*Bu*e^2 - B1*B2*B3*Ba*Bu)
0
0
0
0
0
Please Help! I need to solve this more faster because I have to submit my investigation.
Thanks!

Antworten (0)

Kategorien

Mehr zu Formula Manipulation and Simplification finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by