Prolate spheroid surface area

조회 수: 12 (최근 30일)
Joshua Ustaran-Anderegg
Joshua Ustaran-Anderegg 2022년 10월 5일
댓글: Joshua Ustaran-Anderegg 2022년 10월 5일
I am trying to calculate the surface area of a prolate spheroid using matlab. I am using the equations for s and e as stated in the following article https://mathworld.wolfram.com/ProlateSpheroid.html. I already know the value of the polar radius c (25), but am wanting to insert a vector of possible answers for a so that I produce a vector of surface areas s. This is what I have coded so far but only works for individual values of a rather than vectors. Any help would be much appreciated.
function s = surface_area_calculator(c,a)
e = sqrt(c^2 - a^2)/25;
s = (2*pi*a^2) + ((2*pi*a*c)/e)*asin(sqrt(c^2 - a^2)/c));
end

답변 (2개)

John D'Errico
John D'Errico 2022년 10월 5일
You need to learn about the dotted operators, and why they are necessary.
Yuou want to compute an element-wise operation, one that applies to every element of a vector. These are the .*, .^ and ./ operators, as * and * and ^ do different things in MATLQAB when applied to matrices and vectors.
You don't need them when you multiply by a scalar, but be careful, as if you divide a scalar by a vector, you need the dotted operator.
And there are no .+ or .- operators, as they are not needed.
Since a is a vector, this will be sufficient:
e = sqrt(c^2 - a.^2)/25;
s = (2*pi*a.^2) + ((2*pi*a*c)./e)*asin(sqrt(c^2 - a.^2)/c));
See that 2*pi*a*c)/e was acceptable, since 2, pi and c are al assumed scalars. But e is a vector, as is a.
Had you just used the dotted operators through out that function, it would have worked too.

Torsten
Torsten 2022년 10월 5일
편집: Torsten 2022년 10월 5일
I calculated the surface area of a sphere of radius 1 which should be 4*pi.
The below formula from WolframAlpha seems to work for prolate spheroids while your implementation fails.
format shortE
c = [1 4 16 55];
a = [1 3 10 32];
s = 2*pi*(a.^2+c.^2.*hypergeom([0.5,1],[1.5],1-c.^2./a.^2))
s = 1×4
1.0e+00 * 1.2566e+01 1.3893e+02 1.7818e+03 1.9349e+04
4*pi
ans =
1.2566e+01
e = sqrt(c.^2 - a.^2)/25;
s = 2*pi*a.^2 + 2*pi*a.*c./e.*asin(sqrt(c.^2 - a.^2)./c)
s = 1×4
1.0e+00 * NaN 5.7146e+02 2.4306e+03 1.2304e+04

카테고리

Help CenterFile Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by