0
我試圖用符號(syms
)表達式求解方程,然後使用eval
對其進行求值。該程序運行良好,但需要很長時間。我知道使用syms
會降低速度,有沒有什麼辦法可以加快這個過程?我想知道如何使用一個函數來將符號表達式放在裏面,然後調用這個函數。我不知道這是否會有幫助,或者如何去做。任何其他建議,非常感謝。加速求解帶符號表達式的公式
我用下面的代碼
clear;
clc;
syms A B C D E ;
R=((4*B*A)/((D-C)^2+(B+A)^2));
R1=((4*B*A)/((D+C)^2+(B+A)^2));
F1 = ellipticK(R);
I1 = ellipticE(R);
F2 = ellipticK(R1);
I2 = ellipticE(R1);
P= ((((A*B)^(1/2))/(2*E*(R^(1/2))))*(((2 - R)*F1) -...
(2*I1)))-(((((A*B)^(1/2))/(2*E*(R1^(1/2)))))* ...
(((2 - R1)*F2) - (2*I2)));
P1=feval(symengine,'simplify',P,'IgnoreAnalyticConstraints');
X=(1/B)*(diff(P1,D));
X1=feval(symengine,'simplify',X,'IgnoreAnalyticConstraints');
M(:)=0;
for i=1:10000
A=L1(i);B=L2(i);C=L3(i);D=L4(i);E=L5(i);
M(i) = (eval(X1))*0.13;
end
那你覺得你做的時候'達到A = A(I); ...'在循環? 'A'不是被定義爲一個矩陣,所以不知道'A(i)'是什麼,然後即使它是你通過分配來摧毀它? – Wolfie
@Wolfie。謝謝。這是代碼的一部分。我從L1,L2,L3,L4和L5中得到這些是一維矩陣。我更新了代碼 – user6052232