# [R] optimize

David Winsemius dwinsemius at comcast.net
Mon Jan 3 17:19:41 CET 2011

```On Jan 3, 2011, at 11:09 AM, Muhammad Rahiz wrote:

> Josh's recommendation to use predict works. At the same time, I'll
> work on your suggestions, David.
>
> Thanks.
>
> Researcher & DPhil Candidate (Climate Systems & Policy)
> School of Geography & the Environment
> University of Oxford
>
> On Mon, 3 Jan 2011, David Winsemius wrote:
>
>>
>> On Jan 3, 2011, at 9:52 AM, Muhammad Rahiz wrote:
>>
>>> Hi all,
>>>
>>> I'm trying to get the value of y when x=203 by using the intersect
>>> of three curves. The horizontal curve does not meet with the other
>>> two. How can I rectify the code below?
>>>
>>> Thanks
>>>
>>>
>>> ts <- 1:10
>>> dd <- 10:1
>>>
>>> ts <- seq(200,209,1)
>>> dd <- c(NA,NA,NA,NA,1.87,1.83,1.86,NA,1.95,1.96)
>>>
>>> plot(ts,dd,ylim=c(1.5,2))
>>> abline(lm(dd~ts),col="blue",lty=2)
>>> abline(v=203,col="blue",lty=2)
>>>
>>> xy <- lm(dd~ts)
>>> fc <- function(x) coef(xy)[1] + x*coef(xy)[2]
>>> val <- optimize(f=function(x) abs(fc(x)-203), c(1.5,2))
>>                                         ^???^

And a further observation: You should pay close attention to the
limits of optimization. If your answers keep coming out at the
extremes of the ranges then perhaps you have confused the x and y
coordinates there, as well as in your objective function.

--
David.
>>
>> Joshua Wiley's answer made me realize that your question was
>> different
>> than I thought. At this point maybe you should have made your
>> objective function match on the coordinate difference to be
>> minimized.
>> You are at this point taking the absolute difference between an x-
>> value, 203. and a y-value. fc(x). That makes little sense. You can
>> use
>> predict() as Joshua showed you or you can change your objective
>> functions so it is more meaningful. Furthermore, I have had better
>> success with squared differences that with abs(differences). I'm not
>> sure whether that is due to the availability of a more informative
>> derivative.  (Again, looks like homework and I refrain from posting
>> completed solutions.)
>>
>>> abline(h=val,col="blue",lty=2)
>>
>> --
>> David Winsemius, MD
>> West Hartford, CT
>>
>>

David Winsemius, MD
West Hartford, CT

```