How to do parameter fitting for a system of equations with 3 independent variables?
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Balan
 el 18 de Ag. de 2015
  
    
    
    
    
    Comentada: Amaya
 el 25 de Mayo de 2017
            I have a system of 3 equations with 3 independent variables( x1,x2,x3) and correspondingly 3 dependent variables( y1,y2,y3) as follows:
- y1=((b1*x1)/(1+(b1*x1)+(b2*x2)+(b3*x3))) + ((b4*x1)/(1+(b1*x1)+(b2*x2)+(b3*x3)));
- y2=((b2*x2)/(1+(b1*x1)+(b2*x2)+(b3*x3))) + ((b5*x2)/(1+(b1*x1)+(b2*x2)+(b3*x3)));
- y3=((b3*x3)/(1+(b1*x1)+(b2*x2)+(b3*x3))) + ((b6*x3)/(1+(b1*x1)+(b2*x2)+(b3*x3)));
x and y data are available.
I need to fit 6 parameters( b1,b2,b3,b4,b5,b6) in this system.
I tried using nlinfit but couldn't make it work for this case. Suggest me how to solve this problem. Thank you.
0 comentarios
Respuesta aceptada
  Torsten
      
      
 el 18 de Ag. de 2015
        
      Editada: Torsten
      
      
 el 18 de Ag. de 2015
  
      xdata = horzcat(x1,x2,x3);
ydata = horzcat(y1,y2,y3);
fun=@(b,xdata) horzcat((b(1)+b(4))*x1./(1+b(1)*x1+b(2)*x2+b(3)*x3),(b(2)+b(5))*x2./(1+b(1)*x1+b(2)*x2+b(3)*x3),(b(3)+b(6))*x3./(1+b(1)*x1+b(2)*x2+b(3)*x3));
b0=[1 ; 1 ; 1 ; 1 ; 1 ; 1];
[x,resnorm] = lsqcurvefit(fun,b0,xdata,ydata);
Best wishes
Torsten.
1 comentario
  Amaya
 el 25 de Mayo de 2017
				I tried doing this on a similar problem and the extimated x output changes with the initial guess, even when setting a very low tolerance:
    % code
opts = optimset('TolX',1e-15);
[vestimated,resnorm] = lsqcurvefit(fun,x0,xdata,ydata,[],[],opts);%
how does lsqcurvefit pass x1,x2 and x3 into fun?, shouldn't fun be expressed in terms of
    xdata(initial_index:final_index).
rather than in terms of x1,x2 and x3?
Thanks
Más respuestas (1)
Ver también
Categorías
				Más información sobre Linear and Nonlinear Regression 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!


