- **General Math**
(*http://www.physicsforums.com/forumdisplay.php?f=73*)

- - **Translating (Transforming) a recursive function**
(*http://www.physicsforums.com/showthread.php?t=545488*)

Translating (Transforming) a recursive functionHi,
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. |

Re: Translating (Transforming) a recursive functionYou 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. |

Re: Translating (Transforming) a recursive functionThanks 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 07:32 AM. |

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

© 2014 Physics Forums