Symbolic differentiation for very long equation
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi All,
I would like to do partial differentition for a relative long function. The function is give as following:
ni = 1;
nt = 1.4;
R_eff = Eff_Reflection(ni,nt); %Reff represents the fraction of photons that is internally diffusely reflected at the boundary.
syms f(ua,us,g,R,rho);
D = 1 / 3 / (ua + (1-g) * us);
z0 = 1 / (ua + (1 - g) * us);
zb = (1 + R)/(1 - R) * 2 * D;
u_eff = sqrt(3 * ua * (ua + (1 - g) * us));
r1 = sqrt(z0^2 + rho^2);
r2 = sqrt((z0 + 2*zb)^2 + rho^2);
f(ua,us,g,R,rho) = z0 * (u_eff + 1/r1) * exp(-u_eff * r1) / r1^2 + (z0 + 2*zb) * (u_eff + 1/r2) * exp(-u_eff * r2) / r2^2;
Df = diff(f,ua);
The answer for running the code is:
(exp(-3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)*((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2)^(1/2))*(1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))*((3^(1/2)*(2*ua - us*(g - 1)))/(2*(ua*(ua - us*(g - 1)))^(1/2)) + ((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))*(1/(ua - us*(g - 1))^2 - (4*(R + 1))/(3*(ua - us*(g - 1))^2*(R - 1))))/(rho^2 + (1/(ua - us*(g - 1)) - (4*R + 4)/(3*(ua - us*(g - 1))*(R - 1)))^2)^(3/2)))/((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2) - (exp(-3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)*((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2)^(1/2))*(1/(ua - us*(g - 1))^2 - (4*(R + 1))/(3*(ua - us*(g - 1))^2*(R - 1)))*(1/((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2)^(1/2) + 3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)))/((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2) + (exp(-3^(1/2)*(1/(ua - us*(g - 1))^2 + rho^2)^(1/2)*(ua*(ua - us*(g - 1)))^(1/2))*(1/((1/(ua - us*(g - 1))^2 + rho^2)^(3/2)*(ua - us*(g - 1))^3) + (3^(1/2)*(2*ua - us*(g - 1)))/(2*(ua*(ua - us*(g - 1)))^(1/2))))/((1/(ua - us*(g - 1))^2 + rho^2)*(ua - us*(g - 1))) - (exp(-3^(1/2)*(1/(ua - us*(g - 1))^2 + rho^2)^(1/2)*(ua*(ua - us*(g - 1)))^(1/2))*(1/(1/(ua - us*(g - 1))^2 + rho^2)^(1/2) + 3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)))/((1/(ua - us*(g - 1))^2 + rho^2)*(ua - us*(g - 1))^2) + (2*exp(-3^(1/2)*(1/(ua - us*(g - 1))^2 + rho^2)^(1/2)*(ua*(ua - us*(g - 1)))^(1/2))*(1/(1/(ua - us*(g - 1))^2 + rho^2)^(1/2) + 3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)))/((1/(ua - us*(g - 1))^2 + rho^2)^2*(ua - us*(g - 1))^4) - (exp(-3^(1/2)*(1/(ua - us*(g - 1))^2 + rho^2)^(1/2)*(ua*(ua - us*(g - 1)))^(1/2))*(1/(1/(ua - us*(g - 1))^2 + rho^2)^(1/2) + 3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2))*((3^(1/2)*(1/(ua - us*(g - 1))^2 + rho^2)^(1/2)*(2*ua - us*(g - 1)))/(2*(ua*(ua - us*(g - 1)))^(1/2)) - (3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2))/((1/(ua - us*(g - 1))^2 + rho^2)^(1/2)*(ua - us*(g - 1))^3)))/((1/(ua - us*(g - 1))^2 + rho^2)*(ua - us*(g - 1))) - (exp(-3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)*((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2)^(1/2))*(1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))*((3^(1/2)*((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2)^(1/2)*(2*ua - us*(g - 1)))/(2*(ua*(ua - us*(g - 1)))^(1/2)) - (3^(1/2)*(1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))*(1/(ua - us*(g - 1))^2 - (4*(R + 1))/(3*(ua - us*(g - 1))^2*(R - 1)))*(ua*(ua - us*(g - 1)))^(1/2))/(rho^2 + (1/(ua - us*(g - 1)) - (4*R + 4)/(3*(ua - us*(g - 1))*(R - 1)))^2)^(1/2))*(1/((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2)^(1/2) + 3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)))/((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2) + (2*exp(-3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)*((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2)^(1/2))*(1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2*(1/(ua - us*(g - 1))^2 - (4*(R + 1))/(3*(ua - us*(g - 1))^2*(R - 1)))*(1/((1/(ua - us*(g - 1)) - (4*(R + 1))/(3*(ua - us*(g - 1))*(R - 1)))^2 + rho^2)^(1/2) + 3^(1/2)*(ua*(ua - us*(g - 1)))^(1/2)))/(rho^2 + (1/(ua - us*(g - 1)) - (4*R + 4)/(3*(ua - us*(g - 1))*(R - 1)))^2)^2
The answer that matlab give is very very long, it the results trustable?
0 commentaires
Réponse acceptée
Torsten
le 18 Mar 2022
Here is a code to test MATLAB's answer:
syms ua us g R rho
D = 1 / sym('3') / (ua + (1-g) * us);
z0 = 1 / (ua + (1 - g) * us);
zb = (1 + R)/(1 - R) * sym('2') * D;
u_eff = sqrt(sym('3') * ua * (ua + (1 - g) * us));
r1 = sqrt(z0^2 + rho^2);
r2 = sqrt((z0 + 2*zb)^2 + rho^2);
f = z0 * (u_eff + 1/r1) * exp(-u_eff * r1) / r1^2 + (z0 + 2*zb) * (u_eff + 1/r2) * exp(-u_eff * r2) / r2^2;
Df = diff(f,ua)
fnum = subs(f,[us,g,R,rho],[1 2 3 4]);
Dfnum = subs(Df,[us,g,R,rho],[1 2 3 4]);
ua = 2:0.1:10;
fnum = matlabFunction(fnum);
dfnum = (fnum(ua+1e-6)-fnum(ua))*1e6;
Dfnum = matlabFunction(Dfnum);
Dfnum = Dfnum(ua);
plot(ua,[dfnum;Dfnum])
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Symbolic Math Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!