Physics Forums

Physics Forums (http://www.physicsforums.com/index.php)
-   General Math (http://www.physicsforums.com/forumdisplay.php?f=73)
-   -   Translating (Transforming) a recursive function (http://www.physicsforums.com/showthread.php?t=545488)

fred4321 Oct30-11 03:19 AM

Translating (Transforming) a recursive function
 
Hi,

I am having trouble understanding how this works.

I am giving the following:
y[k+2] - y[k+1] + 0.24y[k] = f[k+2] - 2f[k+1];

y[-2] = 1, y[-1] = 2;

f[k] = 0 for k < 0;
f[k] = k for k >= 0;

I would like to have a program compute the next values in the sequence, so, I need y[-2] = 1 to become y[1] = 1 and y[-1] = 2 to become y[2] = 1 (so that the array indexing works, e.g., I can access a negative location of an array).

I let k' = k + 1 so that I'd get:
y[k'+3] - y[k'+2] + 0.24y[k'+1] = f[k'+3] - 2f[k'+1];
Then I made:
f[k] = 0 for k < 0;
f[k] = k for k >= 0;
become
f[k'] = 0 for k' < 3;
f[k'] = k for k' >= 3;
and
y[-2] = 1, y[-1] = 2;
become
y[1] = 1, y[2] = 2;

So now I have:
y[k'+3] - y[k'+2] + 0.24y[k'+1] = f[k'+3] - 2f[k'+1];
f[k'] = 0 for k' < 3;
f[k'] = k for k' >= 3;
y[1] = 1, y[2] = 2;

And now when I let k = 0, k[3] gives me the value that k[0] gave me in the old equation, which is exactly what I want.

My issue is, I don't understand how, mathematically, this works. For example, I don't understand how I went from:
f[k] = 0 for k < 0;
f[k] = k for k >= 0;
to
f[k'] = 0 for k' < 3;
f[k'] = k for k' >= 3;

if k' = k + 1.

It seems as though I've shifted the equation (y[k+2] - y[k+1] + 0.24y[k] = f[k+2] - 2f[k+1];) over by 1 unit in the positive x direction; however, I've shifted the initial values (y[-2] = 1, y[-1] = 2;) and the f's restrictions (k < 0; and k >= 0) over by 3 units.


What I'm thinking is:
The original question should be:
f[k'] = 0 for k < k[0];
f[k'] = k for k' >= k[0];
y[k[0]-2] = 1, y[k[0]-1] = 2;

What would be the correct, more formal approach to achieving what I want. Also, should the original question be as I've written above?

I'm pretty sure that the equation, as it's give, only produces the 'correct' answer, when k[0] = -2.

Thank you for your time, I realise that this question is rather lengthy.

HallsofIvy Oct30-11 08:11 AM

Re: Translating (Transforming) a recursive function
 
You simply shouldn't worry about "f(k) for k< -3" at all. Include, in your program,
"Double f(Double x)
{
Double y= 0;
if (x>= 0) y= x;
return y;
}
and let the program handle shifts.

fred4321 Oct30-11 05:33 PM

Re: Translating (Transforming) a recursive function
 
Thanks for the reply. What do you mean by, "let the program handle the shift"?

Do you mean by changing adding k+n to the original equation so that it works out?

Also, I know that I didn't say, but I'm actually doing this with MATLAB, I dont think that makes a difference. On know C++ though so I understand your code.


All times are GMT -5. The time now is 12:45 PM.

Powered by vBulletin Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
© 2014 Physics Forums