# How can I build power function through point?

3 views (last 30 days)
Irene Dzhavadova on 15 Jan 2019
Commented: Irene Dzhavadova on 16 Jan 2019
Please, help me! I have the coordinates of the curve y = [150 150 130 130 130 100 100 100 80 80 80 60], x = [52000 70000 74000 96000 100000 170000 220000 245000 530000 720000 810000 4900000]. This curve well described by power function. How can I build the same curve passing through the point A(68856, 210) and get it equation?

Torsten on 16 Jan 2019
As model to fit, use
y = a*(x^b-210^b) + 68856
Irene Dzhavadova on 16 Jan 2019
Torsten, thank you very much for the answer!
But I have an additional question. If I will have not only point A, but several points, how can I approximate these several points and a raised curve?
Torsten on 16 Jan 2019
If points are added, you will have to fit your model again. As a result, you'll get different values for a, b and c.

Sayyed Ahmad on 16 Jan 2019
I would do something like this:
x = [52000 70000 74000 96000 100000 170000 220000 245000 530000 720000 810000 4900000];
y = [150 150 130 130 130 100 100 100 80 80 80 60];
p=polyfit(log(x),sqrt(y),2)
x1=linspace(min(x),max(x),100);
y1=polyval(p,log(x1)).^2;
plot(x,y,'r*',x1,y1,'b-')
I hope that is waht you looking for. Irene Dzhavadova on 16 Jan 2019
Sayyed Ahmad, many thanks! This is exactly how I want. But You solved part of the problem. Maybe you know how to raise this curve so it will pass through point A (68856, 210)? And if I will have not only a point A but a few points, how to approximate this points and raised curve?
Sayyed Ahmad on 16 Jan 2019
you can shift it.
y(a)-(y1)=dy
y=f(x)+dy
but you could be only met one point. But If you do that, the deviation will increase. I don't want to recomend you this way.
I don't know what is the aim of this calculation. I will try to reduce the standard diviation with changing in the value n in polyfit.
p=polyfit(x,y,n)
n could be 1, 2, 3, 4, 5 and so on.
Try to change them to find out your acceptable p.
x = [52000 70000 74000 96000 100000 170000 220000 245000 530000 720000 810000 4900000];
y = [150 150 130 130 130 100 100 100 80 80 80 60];
for i=1:5
p=polyfit(log(x),sqrt(y),i)
x1=linspace(min(x),max(x),100);
y1=polyval(p,log(x1)).^2;
plot(x,y,'r*',x1,y1,'-')
hold on
end Irene Dzhavadova on 16 Jan 2019
Sayyed Ahmad, thanks! I'll try this.