Merge two equations smoothly

13 次查看(过去 30 天)
Rosario Incandela
Rosario Incandela 2015-12-16
Hello everybody, My problem is the following: I need to fit some data that have different Mathematical behaviors: in the first region the points follow an exponential curve, in the second region they follow a quadratic curve. I can fit the two regions with different fitting functions, but how can I merge the two functions in order to have a smooth transition (at least the first two derivatives should be continuous)?

回答(1 个)

Shashvat Prakash
Shashvat Prakash 2015-12-16
Try functions like pchip or spline. This does a piecewise polynomial approximation that goes through all the data. If you want instead a smooth function that approximates your data by combining two sub-functions, I would try a function of the following form
f(x) = f1(x)*(sfn(x-xh)) + f2(x)*(1-sfn(x-xh))
Here, f1 is your exponential, f2 is the polynomial approx., and sfn is the as yet undetermined smoothing function which will smoothly vary from 1 to 0 at the specified xh.
The trick now is to find a suitable smoothing fn that transition from 0 to 1 or vice versa. 1-exp(-x/tau) is a smooth transition from 0 to 1, but only for x>0 -- you can limit this using a max() function. Tau sets the rate of transition. You can also try a simple ramp-in function: sfh=k*(x-xh)-- once again you have to bound it between 0 and 1: sfh=max(min(k*(x-xh),1),0). If you want to get fancy, try a second order equation with initial and final slope=0.
  1 个评论
Shashvat Prakash
Shashvat Prakash 2015-12-16
I completely forgot about the continuous second derivative. I apologize. For sfh, I would find a function that has first derivative zero at + and - infinity, so sfh'(-inf)= sfh'(inf) = 0, and sfh(0)=.5, sfh(-inf)=0, and sfh(inf)=1. A prime example is the logistic function: sig(x)=1/(1+exp(-x)).
https://en.wikipedia.org/wiki/Logistic_regression
https://upload.wikimedia.org/wikipedia/commons/8/88/Logistic-curve.svg

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by