fit pressure temperature data in antoine equation using the command lsqnonlin
    16 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Devyani
 el 12 de Jun. de 2014
  
    
    
    
    
    Comentada: Star Strider
      
      
 el 21 de Sept. de 2022
            I want to fit pressure temperature data in antoine equation using the command lsqnonlin.The objective function is the minimization of the data available and data computed using the equation.The parameters of the equation are estimated after the minimization is done using this command.
Pressure=[1 5 10 20 40 60 100 200 400 760]
temp=[-59.4 -40.5 -31.1 -20.8 -9.4 -2.0 7.7 22.7 39.5 56.5]
Antoine eqaution:
ln P=A+B/(T+C)
where A,B and C are the parameters to be estimated. I am not able to write the function file properly.When i call the function file to the command lsqnonlin ,it shows error. help on the use of this command with the mention of the function file
3 comentarios
Respuesta aceptada
  Star Strider
      
      
 el 12 de Jun. de 2014
        First, lsqnonlin isn’t primarily intended for curve fitting. The lsqcurvefit function is, so use it instead.
I restated your ‘Antione’ function as a more convenient ‘anonymous function’, and used lsqcurvefit:
x=[-59.4 -40.5 -31.1 -20.8 -9.4 -2.0 7.7 22.7 39.5 56.5];
y=[1 5 10 20 40 60 100 200 400 760];
Antoine = @(c0,x) exp(c0(1)+(c0(2)./(x+c0(3))));
c0 = ones(3,1);
C0 = lsqcurvefit(Antoine, c0, x, y)
to produce:
C0 =
       5.1897e+000
       3.8765e+000
       1.9997e+000
7 comentarios
  Star Strider
      
      
 el 13 de Jun. de 2014
				Again, my pleasure!
I still recommend lsqcurvefit for the sort of study you’re doing. Easier.
Más respuestas (2)
  Carsten
 el 7 de Jul. de 2014
        
      Editada: Carsten
 el 7 de Jul. de 2014
  
      I don't think that this is the solution for the problem. If i use the C0 values to calculate the antoine equation, it doesn't fit the given data.
x=[-59.4 -40.5 -31.1 -20.8 -9.4 -2.0 7.7 22.7 39.5 56.5];
y=[1 5 10 20 40 60 100 200 400 760];
Antoine = @(c0,x) exp(c0(1)+(c0(2)./(x+c0(3))));
c0 = ones(3,1);
C0 = lsqcurvefit(Antoine, c0, x, y)
ant=exp(C0(1)+(C0(2)./(x+C0(3))));
figure
hold on
grid
set(gca,'FontSize',14)
plot(x,y,'b');
plot(x,ant,'r');

0 comentarios
  Luiz Augusto Meleiro
 el 21 de Sept. de 2022
        This method is highly sensitive to initial guess.
Try this:
A = 10;
B = -2000;
C = 200;
c0 = [ A; B; C ];
1 comentario
  Star Strider
      
      
 el 21 de Sept. de 2022
				‘This method is highly sensitive to initial guess.’  
That is a characteristic of all nonlinear parameter estimation techniques.  In the eight years since this appeared, I now routinely use the ga and similar approaches in the Global Optimization Toolbox to determine the best parameter estimates.  It helps to know the approximate parameter magnitudes and ranges at the outset to be certain the estimated parameters are realistic.  
Ver también
Categorías
				Más información sobre Get Started with Curve Fitting Toolbox en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




