Clear Filters
Clear Filters

Finding the perimeter of a 2D ellipse using composite trapezoidal integration

6 views (last 30 days)
I am trying to find the perimeter of a 2D ellipse given by the parametric equations: x = 4 * cos(t), y = 3 * sin(t), for 0 <= t <= 2*pi. I'm using a provided trapezoid function, called trap given below:
% trap function
% a = lower limit of integral, b = upper limit of integral, n = # of subintervals
function g=trap(a,b,n)
xd=linspace(a,b,n+1);
h=xd(2)-xd(1);
sum=0.5*f(xd(1));
for j=2:n
sum=sum+f(xd(j));
end
g=h*(sum+0.5*f(xd(n+1)));
end
I also have a function for the f(x) version of the ellipse function: (x/4)^2 + (y/3)^2 = 1
function y=f(x)
y=3*sqrt(1-(x^2/16));
end
However, this does not seem to be working. My values turn out to be complex since you cannot find the square root of a negative number. I know I'm doing something wrong, but cannot seem to wrap my head around it. My main question is how do I get the equation of the ellipse into y = f(x) form. I don't think I'm doing it correctly. I have a = 0 and b = 2*pi since that's the range we are integrating over. However, I'm also not sure about that. Any help would be greatly appreciated.

Accepted Answer

Torsten
Torsten on 16 Mar 2022
Edited: Torsten on 16 Mar 2022
The arclength of a curve in parametrized form C = ((f1(t),f2(t)) ,a<=t<=b) is given as
integral_{a}^{b} sqrt(f1'(t)^2+f2'(t)^2) dt.
This is used in the code below.
If you want to use your trap function instead of trapz, you can implement it as
perimeter = trap(f,0,2*pi,100)
and
function g = trap(f,a,b,n)
...
end
syms t
x = 4*cos(t);
y = 3*sin(t);
dfx = diff(x,t);
dfy = diff(y,t);
f = sqrt(dfx^2+dfy^2);
f = simplify(f);
f = matlabFunction(f);
T = linspace(0,2*pi,100);
F = f(T);
perimeter = trapz(T,F)

More Answers (0)

Categories

Find more on Special Functions 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!