Regarding improving efficiency of the code using fzero and int (integral) function in for loop
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi ,
I am working on data generation based on user input values using probability distribution functions. I have to repetatively solve an equation with single variable , which sometimes involves integration too. I used the 'fzero' and' int' function in the code in the 'for' loop. I am facing 2 problems here:
- The fzero function gets stuck in a loop , as it cannot find a real and finite solution
- In case , even if it finds a solution , the program takes long time to generate the data.
I have attached the code for your reference. Run the 'f_example.m' file to check the code.
0 Commenti
Risposte (1)
darova
il 29 Mag 2020
I tried to plot your function
c1 = .9;
c2 = 0.7;
c3 = 0.6;
x = -1:0.1:1;
f = @(x) c1 - exp(c2*x).*(1-c3*x);
plot(x,f(x))
As you can see you can have only 2 roots max
So this piece of a code needs to be improved
while (isnan(k(i1)) || isinf(k(i1)) )
x_sol_0=rand;
if isreal(fun(x_sol_0))
k(i1) = fzero(fun,x_sol_0);
end
end
Especially this line
x_sol_0=rand;
Maybe this way
x_sol_0=-x_sol;
Are you sure there are always roots that meet condition?
4 Commenti
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!