Prolate spheroid surface area

16 ビュー (過去 30 日間)
Joshua Ustaran-Anderegg
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.
  1 件のコメント
Joshua Ustaran-Anderegg
Joshua Ustaran-Anderegg 2022 年 10 月 5 日
Thank you very much

サインインしてコメントする。


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 Center および File ExchangeSurface and Mesh Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by