Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,34 +0,0 @@
|
|||
with Ada.Text_IO, Ada.Numerics.Generic_Elementary_Functions;
|
||||
|
||||
procedure Mean_Angles is
|
||||
|
||||
type X_Real is digits 4; -- or more digits for improved precision
|
||||
subtype Real is X_Real range 0.0 .. 360.0; -- the range of interest
|
||||
type Angles is array(Positive range <>) of Real;
|
||||
|
||||
procedure Put(R: Real) is
|
||||
package IO is new Ada.Text_IO.Float_IO(Real);
|
||||
begin
|
||||
IO.Put(R, Fore => 3, Aft => 2, Exp => 0);
|
||||
end Put;
|
||||
|
||||
function Mean_Angle(A: Angles) return Real is
|
||||
Sin_Sum, Cos_Sum: X_Real := 0.0; -- X_Real since sums might exceed 360.0
|
||||
package Math is new Ada.Numerics.Generic_Elementary_Functions(Real);
|
||||
use Math;
|
||||
begin
|
||||
for I in A'Range loop
|
||||
Sin_Sum := Sin_Sum + Sin(A(I), Cycle => 360.0);
|
||||
Cos_Sum := Cos_Sum + Cos(A(I), Cycle => 360.0);
|
||||
end loop;
|
||||
return Arctan(Sin_Sum / X_Real(A'Length), Cos_Sum / X_Real(A'Length),
|
||||
Cycle => 360.0);
|
||||
-- may raise Ada.Numerics.Argument_Error if inputs are
|
||||
-- numerically instable, e.g., when Cos_Sum is 0.0
|
||||
end Mean_Angle;
|
||||
|
||||
begin
|
||||
Put(Mean_Angle((10.0, 20.0, 30.0))); Ada.Text_IO.New_Line; -- 20.00
|
||||
Put(Mean_Angle((10.0, 350.0))); Ada.Text_IO.New_Line; -- 0.00
|
||||
Put(Mean_Angle((90.0, 180.0, 270.0, 360.0))); -- Ada.Numerics.Argument_Error!
|
||||
end Mean_Angles;
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
include std/console.e
|
||||
include std/mathcons.e
|
||||
|
||||
sequence AngleList = {{350,10},{90,180,270,360},{10,20,30}}
|
||||
|
||||
function atan2(atom y, atom x)
|
||||
return 2*arctan((sqrt(power(x,2)+power(y,2)) - x)/y)
|
||||
end function
|
||||
|
||||
function MeanAngle(sequence angles)
|
||||
atom x = 0, y = 0
|
||||
integer l = length(angles)
|
||||
|
||||
for i = 1 to length(angles) do
|
||||
x += cos(angles[i] * PI / 180)
|
||||
y += sin(angles[i] * PI / 180)
|
||||
end for
|
||||
|
||||
return atan2(y / l, x / l) * 180 / PI
|
||||
end function
|
||||
|
||||
for i = 1 to length(AngleList) do
|
||||
printf(1,"Mean Angle for set %d: %3.5f\n",{i,MeanAngle(AngleList[i])})
|
||||
end for
|
||||
|
||||
if getc(0) then end if
|
||||
|
|
@ -1,19 +1,15 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">MeanAngle</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">angles</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">x</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">y</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">angles</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">ai_rad</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">angles</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]*</span><span style="color: #004600;">PI</span><span style="color: #0000FF;">/</span><span style="color: #000000;">180</span>
|
||||
<span style="color: #000000;">x</span> <span style="color: #0000FF;">+=</span> <span style="color: #7060A8;">cos</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ai_rad</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">y</span> <span style="color: #0000FF;">+=</span> <span style="color: #7060A8;">sin</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ai_rad</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">abs</span><span style="color: #0000FF;">(</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)<</span><span style="color: #000000;">1e-16</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #008000;">"not meaningful"</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%g"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">round</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">atan2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">y</span><span style="color: #0000FF;">,</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)*</span><span style="color: #000000;">180</span><span style="color: #0000FF;">/</span><span style="color: #004600;">PI</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1e10</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
with javascript_semantics
|
||||
function MeanAngle(sequence angles)
|
||||
atom x = 0, y = 0
|
||||
for a in sq_mul(angles,PI/180) do
|
||||
x += cos(a)
|
||||
y += sin(a)
|
||||
end for
|
||||
if abs(x)<1e-15 then return "not meaningful" end if
|
||||
return sprintf("%g",round(atan2(y,x)*180/PI,1e10))
|
||||
end function
|
||||
|
||||
<span style="color: #008080;">constant</span> <span style="color: #000000;">AngleLists</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #000000;">350</span><span style="color: #0000FF;">,</span><span style="color: #000000;">10</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">90</span><span style="color: #0000FF;">,</span><span style="color: #000000;">180</span><span style="color: #0000FF;">,</span><span style="color: #000000;">270</span><span style="color: #0000FF;">,</span><span style="color: #000000;">360</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">10</span><span style="color: #0000FF;">,</span><span style="color: #000000;">20</span><span style="color: #0000FF;">,</span><span style="color: #000000;">30</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">180</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">180</span><span style="color: #0000FF;">}}</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">AngleLists</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">ai</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">AngleLists</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%16V: Mean Angle is %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">ai</span><span style="color: #0000FF;">,</span><span style="color: #000000;">MeanAngle</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ai</span><span style="color: #0000FF;">)})</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<!--
|
||||
for a in {{350,10},{90,180,270,360},{10,20,30},{180},{0,180},
|
||||
{90,270},{45,225},{10,190},{1,91,181,271}} do
|
||||
printf(1,"%16V: Mean Angle is %s\n",{a,MeanAngle(a)})
|
||||
end for
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
function Get-MeanAngle ([double[]]$Angles)
|
||||
{
|
||||
$x = ($Angles | ForEach-Object {[Math]::Cos($_ * [Math]::PI / 180)} | Measure-Object -Average).Average
|
||||
$y = ($Angles | ForEach-Object {[Math]::Sin($_ * [Math]::PI / 180)} | Measure-Object -Average).Average
|
||||
|
||||
[Math]::Atan2($y, $x) * 180 / [Math]::PI
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
@(350, 10), @(90, 180, 270, 360), @(10, 20, 30) | ForEach-Object {Get-MeanAngle $_}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
(import (srfi 1 lists)) ;; use 'fold' from library
|
||||
|
||||
(define (average l)
|
||||
(/ (fold + 0 l) (length l)))
|
||||
|
||||
(define pi 3.14159265358979323846264338327950288419716939937510582097)
|
||||
|
||||
(define (radians a)
|
||||
(* pi 1/180 a))
|
||||
|
||||
(define (degrees a)
|
||||
(* 180 (/ 1 pi) a))
|
||||
|
||||
(define (mean-angle angles)
|
||||
(let* ((angles (map radians angles))
|
||||
(cosines (map cos angles))
|
||||
(sines (map sin angles)))
|
||||
(degrees (atan (average sines) (average cosines)))))
|
||||
|
||||
(for-each (lambda (angles)
|
||||
(display "The mean angle of ") (display angles)
|
||||
(display " is ") (display (mean-angle angles)) (newline))
|
||||
'((350 10) (90 180 270 360) (10 20 30)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue