Derivatives using second diff

2 次查看(过去 30 天)
MJ
MJ 2022-9-20
回答: Divyam 2024-9-10
% This program computes for the Tangent Line / Normal Line of a curve % about a given point
%define x for symbolic processing
syms x y f(x) x0 y0 m
%IDENTIFY the function f(x)
f(x) = (4*x^2)-(2*x) + 1;
%DETERMINE the point of tangency (This will be a random point)
x0=randi([-5,5])
%SOLVE for the Ordinate of the point of tangency
y0=f(x0); %Evaluate y given value fo x
y = (4*x0^2)-(2*x0) + 1;
%FIND the slope function
yprime(x) = diff(f(x)); %Solve for the first derivative
%Determine the slope at the given x0
m(x)= diff(y); %Evaluate the slope
%Solve the equation of the tangent line
ytangent= m*(x-x0)+y0
%Solve the Equation of the normal line
ynormal= (-1.\m)*(x-x0)+y0
%DISPLAYING RESULTS
fprintf('The tangent line to f(x)=%s at (%.2f, %.2f) is y = %s \n',string(f(x)),x0,y0, string(ytangent))
fprintf('The normal line to f(x)=%s at (%.2f, %.2f) is y = %s \n',string(f(x)),x0,y0, string(ynormal))
%PLOTTING
g1=ezplot(f,[-15,15]);
set(g1,'color','b')
grid on
hold on
plot(x0,y0,'r*')
text(x0+1,y0,"Point of Tangency")
g2=ezplot(ytangent,[-15,15]);
text(5,5,["y(Tangent)=", string(ytangent)])
pause(1)
set(g2,'color','m')
pause(1)
g3=ezplot(ynormal,[-15,15]);
text(3,3,["y(Normal)=", string(ynormal)])
set(g3,'color','c');
title("Tangent Line and Normal Line")
Unable to perform assignment because the left and right sides have a different number of elements.
Variable ytangent has an incorrect value.
Variable ynormal has an incorrect value.
Please help me to correct my codes for ytangent and ynormal

回答(1 个)

Divyam
Divyam 2024-9-10
Hi @MJ,
The following issues in the MATLAB code are causing the errors:
  • Since "x0", "y0" and "m" are supposed to be handled numerically, they should not be defined as symbolic variables.
  • To find the slope function, "yprime" should be the first derivative of "f(x)" and for its evaluation, you can utilize the "subs" function finding the slope at "x0".
  • As of MATLAB R2024a, the "ezplot" function has been deprecated, hence "fplot" should be used instead for compatibility.
Here is the corrected code for computing the Tangent Line and Normal Line of a curve about a given point:
% This program computes for the Tangent Line / Normal Line of a curve about a given point
% Define x for symbolic processing
syms x f(x)
% IDENTIFY the function f(x)
f(x) = (4*x^2) - (2*x) + 1;
% DETERMINE the point of tangency (This will be a random point)
x0 = randi([-5, 5]);
% SOLVE for the Ordinate of the point of tangency
y0 = f(x0); % Evaluate y given value for x
% FIND the slope function
yprime = diff(f, x); % Solve for the first derivative
% Determine the slope at the given x0
m = double(subs(yprime, x, x0)); % Evaluate the slope at x0
% Solve the equation of the tangent line
ytangent = m * (x - x0) + y0;
% Solve the Equation of the normal line
ynormal = (-1/m) * (x - x0) + y0;
% DISPLAYING RESULTS
fprintf('The tangent line to f(x)= %s at (%.2f, %.2f) is y = %s \n', string(f(x)), x0, y0, string(ytangent));
The tangent line to f(x)= 4*x^2 - 2*x + 1 at (-3.00, 43.00) is y = - 26*x - 35
fprintf('The normal line to f(x)= %s at (%.2f, %.2f) is y = %s \n', string(f(x)), x0, y0, string(ynormal));
The normal line to f(x)= 4*x^2 - 2*x + 1 at (-3.00, 43.00) is y = x/26 + 1121/26
% PLOTTING
figure;
hold on;
fplot(f, [-15, 15], 'b');
plot(x0, y0, 'r*');
text(x0, y0 + 100, "Point of Tangency");
fplot(ytangent, [-15, 15], 'm');
text(5, 5, ["y(Tangent)=", string(ytangent)]);
fplot(ynormal, [-15, 15], 'c');
text(-5, -50, ["y(Normal)=", string(ynormal)]);
grid on;
title("Tangent Line and Normal Line");
hold off;
For more information regarding the "fplot" and "subs" functions, refer to the following documentation:

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by