Averages/Mean angle: Difference between revisions

Content added Content deleted
(+Stata)
(→‎{{header|Java}}: code cleanup)
Line 785: Line 785:
{{trans|NetRexx}}
{{trans|NetRexx}}
{{works with|Java|7+}}
{{works with|Java|7+}}
<lang java5>import java.util.ArrayList;
<lang java5>import java.util.Arrays;
import java.util.Arrays;
import java.util.List;


public class RAvgMeanAngle {
public class RAvgMeanAngle {


public static void main(String[] args) {
private static final List<List<Double>> samples;
double[][] samples = {
{350.0, 10.0},
{90.0, 180.0, 270.0, 360.0},
{10.0, 20.0, 30.0},
{370.0},
{180.0}};


for (double[] sample : samples) {
static {
double meanAngle = getMeanAngle(sample);
samples = new ArrayList<>();
System.out.printf("The mean angle of %s is %s%n", Arrays.toString(sample), meanAngle);
samples.add(Arrays.asList(350.0, 10.0));
}
samples.add(Arrays.asList(90.0, 180.0, 270.0, 360.0));
samples.add(Arrays.asList(10.0, 20.0, 30.0));
samples.add(Arrays.asList(370.0));
samples.add(Arrays.asList(180.0));
}

public RAvgMeanAngle() {

return;
}

public double getMeanAngle(List<Double> sample) {

double x_component = 0.0;
double y_component = 0.0;
double avg_d, avg_r;

for (double angle_d : sample) {
double angle_r;
angle_r = Math.toRadians(angle_d);
x_component += Math.cos(angle_r);
y_component += Math.sin(angle_r);
}
}
x_component /= sample.size();
y_component /= sample.size();
avg_r = Math.atan2(y_component, x_component);
avg_d = Math.toDegrees(avg_r);


public static double getMeanAngle(double... anglesDeg) {
return avg_d;
double x = 0.0;
}
double y = 0.0;


for (double angleD : anglesDeg) {
public static void main(String[] args) {
double angleR = Math.toRadians(angleD);

x += Math.cos(angleR);
runSample(args);
y += Math.sin(angleR);

return;
}
double avgR = Math.atan2(y / anglesDeg.length, x / anglesDeg.length);
}
return Math.toDegrees(avgR);

public static void runSample(String[] args) {

RAvgMeanAngle main = new RAvgMeanAngle();
for (List<Double> sample : samples) {
double meanAngle = main.getMeanAngle(sample);
System.out.printf("The mean angle of %s is:%n%12.6f%n%n", sample, meanAngle);
}
}

return;
}
}</lang>
}</lang>
{{out}}
{{out}}
<pre>The mean angle of [350.0, 10.0] is:
<pre>The mean angle of [350.0, 10.0] is -1.614809932057922E-15
The mean angle of [90.0, 180.0, 270.0, 360.0] is -90.0
-0.000000
The mean angle of [10.0, 20.0, 30.0] is 19.999999999999996

The mean angle of [90.0, 180.0, 270.0, 360.0] is:
The mean angle of [370.0] is 9.999999999999977
The mean angle of [180.0] is 180.0</pre>
-90.000000

The mean angle of [10.0, 20.0, 30.0] is:
20.000000

The mean angle of [370.0] is:
10.000000

The mean angle of [180.0] is:
180.000000</pre>


=={{header|JavaScript}}==
=={{header|JavaScript}}==