Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: Linear Interpolation problems

  • To: mathgroup at smc.vnet.net
  • Subject: [mg102419] Re: [mg102377] Re: Linear Interpolation problems
  • From: kosal lee <leekosal at yahoo.com>
  • Date: Sun, 9 Aug 2009 06:03:03 -0400 (EDT)
  • References: <200908070930.FAA15110@smc.vnet.net>

To all who helped me.

Thank you very much for your detailed explanation and answer.

best regards,
Kosal
 





________________________________
From: Bill Rowe <readnews at sbcglobal.net>
To: mathgroup at smc.vnet.net
Sent: Friday, August 7, 2009 6:30:41 PM
Subject: [mg102419] [mg102377] Re: Linear Interpolation problems

On 8/6/09 at 6:33 AM, leekosal at yahoo.com (kosal lee) wrote:

>First, suppose I have two real values

>year               earnings
>x = 3              f(x) =   20
>x= 10             f(x) =   50

>I want to have the interpolated values of f(4), f(5), to f(9) which
>is between actual values of f(3) and f(10). How can I do that with
>Mathematica?

The Mathematica functions most specific to this problem are
Interpolation, Map and Range. They can be used to do what you
want as follows:

In[6]:= f =
   Interpolation[{{3, 20}, {10, 50}}, InterpolationOrder -> 1];
f /@ Range[3, 10]

Out[7]= {20, 170/7, 200/7, 230/7, 260/7, 290/7, 320/7, 50}

The first line creates the linear interpolation function. The
second line maps that function to the desired range of values.
Note, I've used the shorthand notation /@ for Map.

>Second, suppose I have an excel spreadsheet having those above
>values for multiples firms as of the following

>firm      f(3)       f(10)
>A          20        50
>B          30        55
>C          60        25

This can be done as follows:

In[8]:= g =
   Interpolation[{{3, First@#}, {10, Last@#}},
      InterpolationOrder -> 1] & /@ {{20, 50}, {30, 55}, {60, 25}};
data = Table[g[[n]] /@ Range[3, 10], {n, 3}]

Out[9]= {{20, 170/7, 200/7, 230/7, 260/7, 290/7, 320/7, 50},
{30, 235/
   7, 260/7, 285/7, 310/7, 335/7, 360/7, 55}, {60, 55, 50, 45,
40, 35,
   30, 25}}

>I want to have the values of f(4) till f(9) as above and are stored
>in excel spreadsheet as of the following:

>firm      f(3)     f(4)    f(5)  ...    (f9)      f(10)
>A          20                                            50
>B          30                                            55
>C          60                                            25

Writing the information to Excel can be done by

Export["filename.xls", data//N, "XLS"]

Here, I've converted the exact results returned by Mathematica
to machine precision numbers since I don't think Export converts
exact results to something Excel understands as a number. This
may not be needed. But since I have little use for Excel, I've
not taken the time to determine the need for this conversion.


  • Prev by Date: Re: video on Presentations by Williams and Park
  • Next by Date: Re: Re: FrameTicks or LogPlot bug?
  • Previous by thread: Re: Linear Interpolation problems
  • Next by thread: Re: Linear Interpolation problems