How to apply looping in iteration process ?
    5 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hi everyone, 
I required to apply diffrent initail guess for iterative solutions. For a single solution, the following script works perfectly. 
L = readmatrix('R_bounds_0.01.csv'); (coloumn matrix with 1986 rows)
for i=1:length(L);
f = @(n)((n+1)*log(n+1)-n)/n^2 - L(i);
n0 = 100; % Initial guess
n(i) = fzero(f,n0 );
disp(n );
end
nn=n';
csvwrite('N_lower_100.csv',nn);
However, i need to try with different values of initial guesses [0, 10, 100, 1000] etc. Someone suggets me a modified script but that is still not working, 
A = readmatrix('R_mean_value_0.01.csv');
m = length(A) ; 
IG = [0, 10, 100, 1000] ;    % initial guess 
n = length(IG) ;
nn = zeros(m,n) ; 
for i = 1:n
    n0 = IG(i) ; 
    for j=1:m
        f = @(n)((n+1)*log(n+1)-n)/n^2 - A(j);    
        nn(i,j) = fzero(f,n0 );
        disp(nn(i,j) );
    end
end
csvwrite('N_mean_10000.csv',nn);
May someone suggest me any possibel solution. 
Thank you!
6 Commenti
  Torsten
      
      
 il 17 Mar 2022
				The implementation is correct.
I think the task of the assignment was to show you that the rootfinder may fail if the initial guess is far off. So there is nothing wrong with your code if fzero does not converge in all test cases.
Risposte (1)
  Walter Roberson
      
      
 il 17 Mar 2022
        If your initial guess is not between about -1 and about +40 then you might not get a solution.
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/930814/R_mean_value_0.01%20.csv';
A = readmatrix(filename);
syms N
f = @(n)((n+1)*log(n+1)-n)/n^2;
baseeqn = f(N);
fplot(baseeqn, [-1.5 40])
hold on
minA = min(A)
maxA = max(A)
yline([minA, maxA]);
ylim([minA-1/4, maxA+1/4])
hold off
sol1 = vpasolve(baseeqn - A(1), 0.5)
fplot(baseeqn, [32 40]); hold on; 
yline([minA]);
hold off
6 Commenti
  Mathieu NOE
      
 il 18 Mar 2022
				hello 
a very minor bug in the first code posted is the initialization of nn is done with the wrong dimensions (flip m and n)
I have no problel running the corected  code - attached the output file
of course the IG must contains only values strictly above -1 (otherwise log(n+1) is complex) and different from zero (division by zero)
A = readmatrix('R_mean_value_0.01.csv');
m = length(A) ; 
IG = [0.0001,0.001, 0.01, 0.1, 1, 10, 100, 1000] ;      % initial guess (n> - 1) and (n # 0)
n = length(IG) ;
nn = zeros(n,m) ; % mod here
for i = 1:n
    n0 = IG(i) ; 
    for j=1:m
        f = @(n)((n+1)*log(n+1)-n)/n^2 - A(j);    
        nn(i,j) = fzero(f,n0 );
        disp(nn(i,j) );
    end
end
csvwrite('N_mean_10000.csv',nn);
Vedere anche
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

