[Scilab-users] fsolve including linear interpolation
paul.carrico at free.fr
paul.carrico at free.fr
Tue Apr 18 19:12:33 CEST 2017
the example I built is not relevant and it does not reflect the problem
behind... sorry for the inconvenient
Paul
Le 2017-04-18 17:20, roger.cormier at ncf.ca a écrit :
> 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
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20170418/97f5884a/attachment.htm>
More information about the users
mailing list