How can I convert from syms to double in this code
Show older comments
t=.01:1:100;
for fh=.167
for i=1:length(t)
U=1;
tc(i)=(erfcinv((1-fh)/exp(t(i))))^2;
G(i)=2*sqrt(t(i)/pi)-1+(exp(tc(i))*erfc(t(i)));
syms x
f(i) =(exp(x)*erfc(sqrt(x)))/sqrt(t(i)-x);
A(i)=int(f(i),[0 tc(i)]);
fInt(i) = int(f(i),[0 tc(i)]);
fVpa(i) = vpa(fInt(i))
E(i)=(G(i)+(1-fh)*(U*(t(i)-tc(i))/sqrt(pi))*(2*sqrt(t(i))-2*(1-fh)*sqrt(t(i)-tc(i))-sqrt(pi)*G(i)-fVpa(i)))
end
plot(t,E(i),'*');
end
Answers (1)
Star Strider
on 30 Mar 2019
t=.01:1:100;
fh=.167
for i=1:length(t)
U=1;
tc(i)=(erfcinv((1-fh)/exp(t(i))))^2;
G(i)=2*sqrt(t(i)/pi)-1+(exp(tc(i))*erfc(t(i)));
f = @(x) (exp(x).*erfc(sqrt(x)))./sqrt(t(i)-x);
fInt(i) = integral(f, 0, tc(i));
E(i) = (G(i)+(1-fh)*(U*(t(i)-tc(i))/sqrt(pi))*(2*sqrt(t(i))-2*(1-fh)*sqrt(t(i)-tc(i))-sqrt(pi)*G(i)-fInt(i)));
end
plot(t,real(E))
It might be possible to vectorise your code to make it significantly more efficient. Whether that would be worthwhile depends on how frequently you need to run it.
Experiment to get the result you want.
Categories
Find more on Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!