MATLAB Answers

Determining polynomial coefficients by known derivatives

68 views (last 30 days)
Omur on 18 Oct 2012
Commented: Star Strider on 8 Jul 2017
Hello community, I'm trying to create a cubic polynomial function, I know these: y(0)=1 y(30)=0.5 dy(0)/dx=-1 dy(30)/dx=-1 Can I determine the values for coefficients ?


Sign in to comment.

Accepted Answer

Dr. Seis
Dr. Seis on 18 Oct 2012
Edited: Dr. Seis on 18 Oct 2012
Yes. Just in case this is homework, I will give an example to get you started.
Let's say you have the case below (I will start with the case where we do not have derivatives at a location).
We are trying to solve for A, B, and C
y(x) = A*x^2 + B*x + C
x1 = 0; y1 = 1;
x2 = 3; y2 = 6;
x3 = 7; y3 = 7;
So we can construct an inverse problem of the form G * m = d, where:
G = [x1^2,x1,1; x2^2,x2,1; x3^2,x3,1];
d = [y1; y2; y3];
We determine m (equal to [A; B; C] in our example) by:
m = G\d;
And we get:
plot(-1:10,polyval(m,-1:10),'r-', [x1,x2,x3],[y1,y2,y3],'k+')


Show 5 older comments
Dr. Seis
Dr. Seis on 18 Oct 2012
Almost... since you will need to expand to a 3-order polynomial, I will give you the G for a 2-order (which would give you the plot immediately above if dydx2 = +1). In your case, your y and y' info are at the same 2 x locations... so:
| x1^2, x1, 1 | | A | | y1 |
| x2^2, x2, 1 | | B | = | y2 |
| 2*x1, 1, 0 | | C | | dydx1 |
| 2*x2, 1, 0 | | dydx2 |
You still need to have contribution from your "B", which is why the second column of the last two rows have the 1. Once you expand to a 3-order polynomial for your data, you should get something like:

Sign in to comment.

More Answers (1)

Suzie Oman
Suzie Oman on 8 Jul 2017
This answer doesn't incorporate the derivative. How would this be solved taking into account the derivative?
What about in 3 dimensions?

Community Treasure Hunt

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

Start Hunting!

Translated by