[Scilab-users] fsolve including linear interpolation

roger.cormier at ncf.ca roger.cormier at ncf.ca
Tue Apr 18 17:20:22 CEST 2017


Paul:

It appears that you're solving for y given theta and x, but y is a linear function of theta and x.

I don't have a good knowledge of what you are trying to solve, but when I solve nonlinear problems I normally either have a form of first-order derivative (scalar or a Jacobian), or some form of branching/discontinuity from which I need to choose the "best" solution. For linear interpolation, I find that it's easier to simply write a function myself than try to figure out how to make a given built-in function works.

I'm going fishing here: in your function, theta is 8x1 but your arguments for interpl are theta(:,1),theta(:,2), which presumes that theta is 8x2, so that could be a place to start looking at why fsolve is giving your grief.

Regards,


Roger.

______________________________________________
Dr. Roger Cormier, P.Eng.
Home Tel. & Fax: 613-823-7299


Am mar. 18 avr. 2017 um 09:03 schrieb paul.carrico at free.fr:

> Hi All
> 
> I'm wondering what is the way to solve the following study (but at the same time I'm not sure that the problem has been correctly posed) ... I'm a bit "disrupted" by theta scalar that depends itself on x value.
>  
> The problem seems to be non linear and I tried (but I failed) in using fsolve.
>  
> Any suggestion where I've to see to?
>  
> Thanks for your time and help
>  
> Paul
>  
>  
>  
> #################################################
> function y=calculus(x)
>    
>     
> theta = [ 1 100 200 300
> 
>     
> 1000 1200 1500 2000]';
>  
> 
>     
> theta_interp = interp1(theta(:,1),theta(:,2),x,'linear');
> 
>     
> y = -theta_interp * 0.268 + 120 -x; //pause
> 
>     
>     
> // if theta = 1 : y = 0 -> x = 120 - 0.268 = 119.73
> 
>     
> // if theta = 100 : y = 0 -> x = 120 - 26.8 = 93.2
> 
>     
> // if theta = 200 : x = 66.4
> 
>     
> // if theta = 300 : x = 120 - 0.268 = 39.6
> 
>     
>     
> // can we say that y belongs to [39.6 , 119.73] ?
> 
> 
> 
> endfunction
> 
> 
> 
> [x,v,info] = fsolve(0,calculus)
> 
> 
> 
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users




More information about the users mailing list