Fit data with a given equation for 3 variables
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Tesla
 el 24 de Mayo de 2022
  
    
    
    
    
    Comentada: Tesla
 el 24 de Mayo de 2022
            I want to fit my data to the following equation, but I dont know how to force the program to take the b values which i have, instead of calculating them automatically, I attached here my code which i wrote
fy = @(a,b,x) ((1-(x/a)).^(-a*b));
x = [0,0.1, 0.2, 0.3, 0.4, 0.46, 0.55, 0.6];
y = [0.001,	0.00111499,	0.0011926,	0.0013699,	0.00161633,	0.00192075,	0.00274991,	0.00357156]; 
b = [0,	1.1499,	0.963,	1.233,	1.540825,	2.001630435,	3.181654545,	4.285933333];
B = fmincon(@(c) norm(y - fy(c(1),c(2),x)), [1; 1], [],[],[],[], [0 0],[1 90]);
fprintf('PhiMax  = %.15f\nVisco = %.15f\n', B)
xv = linspace(min(x), max(x));
figure(1)
plot(x, y, 'pg')
hold on
plot(xv, fy(B(1),B(2),xv), '-r')
hold off
grid
2 comentarios
  Torsten
      
      
 el 24 de Mayo de 2022
				How should it be possible to have the value for b if you don't know the value for a ?
Respuesta aceptada
  Torsten
      
      
 el 24 de Mayo de 2022
        
      Editada: Torsten
      
      
 el 24 de Mayo de 2022
  
      Your function is not suited to reflect your data. 
x = [0,0.1, 0.2, 0.3, 0.4, 0.46, 0.55, 0.6];
y = [0.001,	0.00111499,	0.0011926,	0.0013699,	0.00161633,	0.00192075,	0.00274991,	0.00357156]; 
b = [0,	1.1499,	0.963,	1.233,	1.540825,	2.001630435,	3.181654545,	4.285933333];
p0 = 1;
B = lsqnonlin(@(a)fy(a,x,y,b),p0,max(x),Inf)
fprintf('PhiMax  = %.15f\nVisco = %.15f\n', B)
figure(1)
plot(x, y, 'pg')
hold on
plot(x, fy(B(1),x,y,b)+y, '-r')
hold off
grid
function res = fy(a,x,y,b)
  res = ((1-(x/a)).^a).^b - y;
end
Más respuestas (1)
  Hiro Yoshino
    
 el 24 de Mayo de 2022
        How about this?
You only need to think about c as follows:
fy = @(a,b,x) ((1-(x/a)).^(-a*b));
x = [0,0.1, 0.2, 0.3, 0.4, 0.46, 0.55, 0.6];
y = [0.001,	0.00111499,	0.0011926,	0.0013699,	0.00161633,	0.00192075,	0.00274991,	0.00357156]; 
b = [0,	1.1499,	0.963,	1.233,	1.540825,	2.001630435,	3.181654545,	4.285933333];
B = fmincon(@(c) norm(y - fy(c,b,x)),1,[],[],0,1)
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!


