- Define Specific x-values: Decide which specific x-values you want to evaluate.
- Evaluate the Derivatives: Use fnval to compute the values of the first and second derivatives at these specific x-values.
- Display the Results: Use fprintf to print the results or annotate them on the plot.
How do I find and display specific y-values on a spline plot?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
The task was to take data points, compute a spline of the points, then calculate the first and second derivate of the spline curve. I have found and plotted the curves correctly, but am having trouble with displaying specific values on the derivate curves. How can I input specific x-values in to the first and second derivate curves to give me y-values, then display them?
code:
close all x = linspace(-3, 3, 9); y = [2, 3, 4.1, 4.5, 2, 2, 3, 3, 3];
%x = linspace(0, 4, 6); %y = [2, 1, .4, 0.08, 0, .2];
xx = linspace(-3,4); pp = spline(x,y); yy = ppval(pp, xx); plot(x, y, '.', 'markersize', 10); hold on; plot(xx, yy, 'b');
dpp = fnder(pp); plot(xx,fnval(dpp,xx),'k'); hold on; ddpp=fnder(dpp); plot(xx,fnval(ddpp,xx),'r'); hold on; y_val=fnval(dpp,xx); y2_val=fnval(ddpp,xx); fprintf('At x = %d, f(x) = %.4f, f''(x) = %.4f\n\n',xx,y_val,y2_val)
0 Kommentare
Antworten (1)
Prateekshya
am 14 Okt. 2024
Bearbeitet: Prateekshya
am 14 Okt. 2024
Hello Dylan,
To evaluate and display specific y-values for the first and second derivatives of a spline at given x-values, you can use the fnval function to compute these values. Then, you can display the results using fprintf or annotate them directly on your plot. Here is a step-by-step guide on how to modify your code to achieve this:
Here is how you can modify your code:
close all;
% Define data points
x = linspace(-3, 3, 9);
y = [2, 3, 4.1, 4.5, 2, 2, 3, 3, 3];
% Define a finer grid for plotting the spline
xx = linspace(-3, 4, 100); % Use more points for smoother plots
% Compute the spline
pp = spline(x, y);
% Evaluate the spline and plot it
yy = ppval(pp, xx);
plot(x, y, '.', 'markersize', 10);
hold on;
plot(xx, yy, 'b');
% Compute and plot the first derivative
dpp = fnder(pp);
plot(xx, fnval(dpp, xx), 'k');
% Compute and plot the second derivative
ddpp = fnder(dpp);
plot(xx, fnval(ddpp, xx), 'r');
% Define specific x-values for evaluation
specific_x_values = [-2, 0, 2]; % Example x-values
% Evaluate and display the derivatives at specific x-values
for i = 1:length(specific_x_values)
x_val = specific_x_values(i);
y_val = fnval(pp, x_val);
dy_val = fnval(dpp, x_val);
ddy_val = fnval(ddpp, x_val);
fprintf('At x = %.2f, f(x) = %.4f, f''(x) = %.4f, f''''(x) = %.4f\n', x_val, y_val, ...
dy_val, ddy_val);
% Annotate the plot
plot(x_val, dy_val, 'ko', 'MarkerFaceColor', 'k'); % First derivative
plot(x_val, ddy_val, 'ro', 'MarkerFaceColor', 'r'); % Second derivative
text(x_val, dy_val, sprintf('%.2f', dy_val), 'VerticalAlignment', 'bottom', ...
'HorizontalAlignment', 'right');
text(x_val, ddy_val, sprintf('%.2f', ddy_val), 'VerticalAlignment', 'bottom', ...
'HorizontalAlignment', 'right');
end
hold off;
The output you get looks like:
I hope this helps!
0 Kommentare
Siehe auch
Kategorien
Mehr zu Spline Postprocessing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!