How to numerically differentiate provided data?
2 views (last 30 days)
Show older comments
Lingbai Ren
on 15 Sep 2021
Commented: Lingbai Ren
on 24 Sep 2021
I have the measurements of x with corresponding y displacement lengths:
x = [0,0.375,0.75,1.125,1.5,1.875,2.25,2.625,3];
y = [0,-0.2571,-0.9484,-1.9689,-3.2262,-4.6414,-6.1503,-7.7051,-9.275];
and dy/dx = theta(x) >> theta is the slope
My question is how to numerically differentiate the provided data for displacement y(x)
and the hint is I can choose formulas of any error order.
It's a question combined both math and numerical method, can any one give some help?
0 Comments
Accepted Answer
Walter Roberson
on 15 Sep 2021
x = [0,0.375,0.75,1.125,1.5,1.875,2.25,2.625,3];
y = [0,-0.2571,-0.9484,-1.9689,-3.2262,-4.6414,-6.1503,-7.7051,-9.275];
theta = gradient(x,y)
plot(x, y, x, theta)
legend({'x', 'theta'})
3 Comments
Walter Roberson
on 15 Sep 2021
x = [0,0.375,0.75,1.125,1.5,1.875,2.25,2.625,3];
y = [0,-0.2571,-0.9484,-1.9689,-3.2262,-4.6414,-6.1503,-7.7051,-9.275];
orders = 1:7;
for order = orders
p = polyfit(x, y, order);
predict = polyval(p, x);
plot(x, predict, 'displayname', "order = " + order);
hold on
err(order-min(orders)+1) = sum((predict - y).^2);
end
xlabel('x'); ylabel('y predicted')
legend show
figure(2)
plot(orders, err);
xlabel('polynomial order'); ylabel('sse')
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!