Derivatives using second diff

% 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

Answers (1)

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:

Asked:

MJ
on 20 Sep 2022

Answered:

on 10 Sep 2024

Community Treasure Hunt

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

Start Hunting!