【Rで球面幾何学】等差数列(算術数列)① 数直線(Number Line)概念の導入(Introduction)について。

ある意味**数直線**(<font color="blue">Number Line</font>)、すなわち**自然数**(<font color="blue">Natural Number</font>)や**整数**(<font color="blue">Integer Number</font>)が何か規定する**等差数列**（<font color="blue">Arithmetic Progression</font>）あるいは**算術数列**（<font color="blue">Arithmetic Sequence</font>）の**導入**(<font color="blue">Introduction</font>)こそが**加算直積可能世界**(<font color="blue">The Countable and Productable Sets</font>)の出発点といえましょう。
[等差数列あるいは算術数列 - Wikipedia]
(https://ja.wikipedia.org/wiki/%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97)
![数直線010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/34eb291e-1900-f23f-3a37-eba556fb5923.png)

## 等差数列(<font color="blue">Arithmetic Progression</font>)または算術数列(<font color="blue">Arithmetic Sequence</font>) の定義。

1. 与えられた**区間**(<font color="blue">Interval</font>)において、**任意の項**(<font color="blue">Any Term</font>)の**添字**(<font color="blue">index</font>)<font color="green">n</font>に拠らず、隣接する二項の**差**(<font color="blue">difference</font>)が全て等しい**数列**(<font color="blue">Sequence of Numbers with Common Difference</font>)をいう。
2. 各項に**共通**(<font color="blue">Common</font>) するその一定の差の事を**公差**（<font color="blue">Common Difference</font>）といい、**公差**<font color="green">d</font>はその**数列**<font color="green">a[1],a[2],a[3],a[4]…a[n]</font>（<font color="blue">nは項(term)の総数sum</font>）における各項の**添字**(<font color="blue">Index</font>)<font color="green">n</font>を用いて<font color="green">d:=a[n+1]-a[n]</font>なる形で取り出すことができる。
3. なので等差数列の各項は**初項**<font color="green">a</font>と**公比**<font color="green">r</font>とその数列における各項の**添字**<font color="green">n</font>を用いて<font color="green">a[1]+(n-1)*d</font>と表せる。かかる<font color="green">n</font>番目の**項**<font color="green">a[n]</font>の値をその等比数列における**一般項**(<font color="blue">General Term</font>)という。
4. すなわち一般に**第n項**<font color="green">a[n]</font>と**第m項**<font color="green">a[m]</font>の関係は<font color="green">a[n]=a[m]+(n-m)d</font>となる。例えば<font color="green">a[n]=3, 5, 7…∞</font>なる**片側無限数列**(<font color="blue">one-sided infinite sequence</font>)<font color="green">(a[n])(n=1~∞)</font>は、各項が直前の項に<font color="green">2</font>を加えたものになっているから、**初項**<font color="green">3</font>、**公比**<font color="green">2</font>の**片側無限等差数列**(<font color="blue">One-Sided Arithmetic Sequence</font>)であり、その<font color="green">7</font>番目の項の値は<font color="green">15</font>となる。

```R
#等比数列=初項*公差^(数列の項数-1)
ap01<-function(x,y,z){x+y*(z-1)}

#初項3,公比2,項数3の場合
ap01(3,2,7)
[1] 15
c0<-ap01(3,2,c(1,2,3))
c0
[1] 3 5 7

#公差の検出=数列[N+1]-数列[N] 
c0[1+1]-c0[1]
[1] 2
c0[2+1]-c0[2]
[1] 2

#公差の「逆数」検出=数列[N]-数列[N+1] 
c0[1]-c0[1+1]
[1] -2
c0[2]-c0[2+1]
[1] -2

#各項における係数と値の関係a[n]=a[m]*r^(n-m)
c0[1]
[1] 3
c0[2]
[1] 5
c0[3]
[1] 7
#逐次計算結果
1+2*(1-0)
[1] 3
3+2*(2-1)
[1] 5
5+2*(3-2)
[1] 7
```
特に**初項**<font color="green">a</font>,**公差**<font color="green">0</font>の等差数列は**初項**<font color="green">a</font>,**公比**<font color="green">1</font>の**等比数列**（<font color="blue">Geometric Progression</font>)ないしは**幾何数列**(<font color="blue">Geometric Sequence</font>）のそれと重なります。

```R
#初項a=1の時
ap01(1,0,c(1:7))
[1] 1 1 1 1 1 1 1

#初項a=7の時
ap01(7,0,c(1:7))
[1] 7 7 7 7 7 7 7
```
##有限算術数列(<font color="blue">Finite arithmetic sequence</font>)の総和(<font color="blue">sum</font>)としての算術級数 (<font color="blue">Arithmetic Series</font>) と算術平均（<font color="blue">Arithmetic Mean</font>）」。
両側とも閉じて有限個の項しか持たない**閉区間**(<font color="blue">Closed Interval</font>)の算術数列を**有限算術数列**(<font color="blue">Finite Arithmetic Sequence</font>)と呼び、初等数学でいうところの等差数列は概ねこれを指します。そして有限算術数列の和を**算術級数** (<font color="blue">Arithmetic Series</font>) というのです。

①まず**有限算術数列**(<font color="blue">Finite arithmetic Sequence</font>)の総和<font color="green">(sum)S(1~n)[係数n]=初項a+a[1]+a[2]+a[3]…a[n]</font>における公差dを巡る計算順序を入れ替えて以下の式を構成する。

1. **式A**…_S(1~n)[n]=a+(a+1*d)+(a+2*d)+(a+3*d)…(a+(n-1)*d)_
2. **式B**…_S(1~n)[n]=a[n]+(a[n]-1*d)+(a+2*d)+(a+3*d)…(a+(n-1)*d)_

②この２式を両辺で項ごとに足し合わせる。

1. **左辺**…_2*S(1~n)[n]_
2. **右辺**…_各項で公差dを含む成分がすべて相殺されて初項a[1]と末項a[n]の和だけが残り、これがn項続く_。
3. 従って答えは_2*S[n] = n*(a[1] + a[n])_。 
4. 両辺を2で割れば_S[n]=n(a[1]+a[n])/2=n(2*a[1]+(n-1)d)/2_。 

```R
#有限算術数列c0(n=1~100)の生成

c0=c(1:100)
c0
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
[39] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
[77] 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#係数nの確認
length(c0)
[1] 100

#初項a[1]の確認
c0[1]
[1] 1

#末項a[n]の確認
c0[length(c0)]
[1] 100

#総和(sum)の計算(公差1のケース)

c0[length(c0)]*(2*c0[1]+(length(c0)-1)*1)/2
[1] 5050
100*(2*1+(100-1)*1)/2
[1] 5050
100*101/2
[1] 5050
#sum関数による答え合わせ
sum(c0)
[1] 5050
#算術平均(arithmetic mean)S[n]/nの計算

(c0[1]+c0[length(c0)])/2

[1] 50.5

#mean関数による答え合わせ
mean(c0)
[1] 50.5
```
##自然数(<font color="blue">Natural</font>)、整数(<font color="blue">Integer</font>)、偶数(<font color="blue">Even</font>)、奇数(<font color="blue">Odd</font>)、そして片側無限算術数列(<font color="blue">One-Sided Infinite Arithmetic Sequence</font>)と両側無限算術数列(<font color="blue">Two-Sided Infinite Arithmetic Sequence</font>)。

上掲の**表現**(<font color="blue">Explession</font>)を用いると、以下の**単調数列**(<font color="blue">Monotonic Sequence</font>)が**自明の場合**(<font color="blue">Torivial Case</font>)としてそれぞれこの様に表現されます。

1. **自然数**(<font color="blue">Natural</font>)<font color="green">N[n]={1,2,3…,1+(n-1)*1}</font>…区間<font color="green">1</font>~無限大<font color="green">Inf</font>、初項<font color="green">1</font>、公差<font color="green">1</font>、一般項<font color="green">1+(n-1)*1</font>
2. **整数**(<font color="blue">Integer</font>)<font color="green">Z[n]={0-(n-1)*1,…,-3,-2,-1,0,1,2,3,…1+(n-1)*1}</font>…区間無限小<font color="green">-Inf</font>~<font color="green">0</font>~無限大<font color="green">Inf</font>、初項<font color="green">0</font>、公差<font color="green">±1</font>、一般項<font color="green">0±(n-1)*1</font>
3. **偶数**(<font color="blue">Even</font>)<font color="green">e[n]={-2n,…-6,-4,-2,0,2,4,6,…2n}</font>…区間無限小<font color="green">-Inf</font>~<font color="green">0</font>~無限大<font color="green">Inf</font>、初項<font color="green">0</font>、公差<font color="green">±2</font>、一般項<font color="green">±2n</font>
4. **奇数**(<font color="blue">Odd</font>)<font color="green">o[n]={2n-1,…-5,-3,-1,1,3,5,…2n+1}</font>…区間無限小<font color="green">-Inf</font>~<font color="green">0</font>~無限大<font color="green">Inf</font>、初項<font color="green">0</font>、公差<font color="green">±2</font>、一般項<font color="green">±2n±1</font>

自然数の様に片側の**端点**(<font color="blue">End Point</font>)のみが**無限大**<font color="green">Inf</font>もしくは**無限小**<font color="green">-Inf</font>に開き(<font color="blue">open</font>)、もう片側が閉じた(<font color="blue">closed</font>)**半開区間**(<font color="blue">Semi-Open Interval</font>)で仕切られた算術数列を**片側無限算術数列**(<font color="blue">One-Sided Infinite Arithmetic Sequence</font>)、整数や偶数や奇数の様に**初項**<font color="green">0</font>を中心に**無限大**<font color="green">Inf</font>と**無限小**<font color="green">-Inf</font>に挟まれた**開区間**(<font color="blue">Open Interval</font>)で仕切られた算術数列を**両側無限算術数列**(<font color="blue">Two-Sided Infinite Arithmetic Sequence</font>)と呼びますが、その振る舞いは**公差**<font color="green">d</font>の**符号の向き**(<font color="blue">Sign direction</font>)によって定まるのです。 

1. <font color="green">d</font>の符号が**正**(<font color="blue">plus</font>)ならば、その数列の**項**(<font color="green">term</font>)は**増加数列**(<font color="blue">Increasing Sequence</font>)を構成し無限大<font color="green">Inf</font>に**発散**(<font color="blue">divergence</font>)する。
2. <font color="green">d</font>の符号が**負**(<font color="blue">minus</font>)ならば、その数列の**項**(<font color="green">term</font>)は**減少数列**(<font color="blue">Decreasing Sequence</font>)を構成し無限小<font color="green">-Inf</font>に**発散**(<font color="blue">divergence</font>)する。

ところで コンピューター言語は原則として**無限大**<font color="green">Inf</font>や**無限小**<font color="green">-Inf</font>を直接は扱ません（<font color="blue">例外的に扱う場合も、概ね図示は困難</font>）。そこでここでは**数直線**(<font color="blue">Number Line</font>)上の<font color="green">-5</font>~<font color="green">0</font>~<font color="green">5</font>近辺を**区間**(<font color="blue">Interval</font>)と定めての実装を試みる事にします。

①**自然数列**(<font color="blue">Natural Sequence</font>)<font color="green">N[n]={1,2,3…,1+(n-1)*1}</font>(<font color="blue">ただしnは0以上の整数</font>)…数列(<font color="blue">sequence</font>)<font color="green">a[m]</font>の順番(<font color="blue">order</font>)=添字(<font color="blue">Index</font>)<font color="green">m</font>がそれ自身、すなわち自然数集合(<font color="blue">set of natulal numbers</font>)<font color="green">N</font>によって与えられ、その範囲では添字とその値(<font color="blue">Value</font>)が一致する。

```R
#代数ライブラリYACASを用いた表現。
library(Ryacas)
yacas("Table(n,n,1,5,1)")
Yacas vector:
[1] 1 2 3 4 5
#標準搭載関数seqを用いた表現
c0<-seq(1L,5L,by=1L)
c0
[1] 1 2 3 4 5
```
表の出力

```R
library(xtable)
N0<- data.frame(Index=c0, Value=c0)
print(xtable(N0),type="html")
```
<!-- html table generated in R 3.5.2 by xtable 1.8-4 package -->
<!-- Thu Mar 26 13:46:41 2020 -->
<table border=1>
<tr> <th>  </th> <th> Index </th> <th> Value </th>  </tr>
  <tr> <td align="right"> 1 </td> <td align="right">   1 </td> <td align="right">   1 </td> </tr>
  <tr> <td align="right"> 2 </td> <td align="right">   2 </td> <td align="right">   2 </td> </tr>
  <tr> <td align="right"> 3 </td> <td align="right">   3 </td> <td align="right">   3 </td> </tr>
  <tr> <td align="right"> 4 </td> <td align="right">   4 </td> <td align="right">   4 </td> </tr>
  <tr> <td align="right"> 5 </td> <td align="right">   5 </td> <td align="right">   5 </td> </tr>
   </table>
グラフの出力

```R
plot(N0$Index,N0$Value,type="b",main="Natural Sequence",xlab="Index",ylab="Value") 
```
![20200116150855.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/fe23458a-dda1-9719-381e-c7620420999b.png)

②**整数数列**(<font color="blue">Integer Sequance</font>)<font color="green">Z[n]={0-(n-1)*1,…,-3,-2,-1,0,1,2,3,…1+(n-1)*1}</font>(<font color="blue">ただしnは0以上の整数</font>)…自然数集合<font color="green">N</font>を添字として用い続ける場合、<font color="green">0</font>や<font color="green">負数</font>概念の導入によって順番と係数が一致しなくなる。ただし概ね同時に添字も整数集合(<font color="blue">set of ineger numbers</font>)にバージョンアップされ、その範囲で添字とその値が一致する。

```R
#代数ライブラリYACASを用いた表現。
library(Ryacas)
yacas("Table(n,n,-5,5,1)")
Yacas vector:
[1] -5 -4 -3 -2 -1 0 1 2 3 4 5

#標準搭載関数seqを用いた表現
c0<-seq(-5L,5L,by=1L)
c0
[1] -5 -4 -3 -2 -1 0 1 2 3 4 5
```
表の出力

```R
library(xtable)
Z0<- data.frame(Index=c0, Value=c0)
print(xtable(Z0),type="html")
```
<!-- html table generated in R 3.5.2 by xtable 1.8-4 package -->
<!-- Fri Mar 27 01:44:49 2020 -->
<table border=1>
<tr> <th>  </th> <th> Index </th> <th> Value </th>  </tr>
  <tr> <td align="right"> 1 </td> <td align="right"> -5.00 </td> <td align="right"> -5.00 </td> </tr>
  <tr> <td align="right"> 2 </td> <td align="right"> -4.00 </td> <td align="right"> -4.00 </td> </tr>
  <tr> <td align="right"> 3 </td> <td align="right"> -3.00 </td> <td align="right"> -3.00 </td> </tr>
  <tr> <td align="right"> 4 </td> <td align="right"> -2.00 </td> <td align="right"> -2.00 </td> </tr>
  <tr> <td align="right"> 5 </td> <td align="right"> -1.00 </td> <td align="right"> -1.00 </td> </tr>
  <tr> <td align="right"> 6 </td> <td align="right"> 0.00 </td> <td align="right"> 0.00 </td> </tr>
  <tr> <td align="right"> 7 </td> <td align="right"> 1.00 </td> <td align="right"> 1.00 </td> </tr>
  <tr> <td align="right"> 8 </td> <td align="right"> 2.00 </td> <td align="right"> 2.00 </td> </tr>
  <tr> <td align="right"> 9 </td> <td align="right"> 3.00 </td> <td align="right"> 3.00 </td> </tr>
  <tr> <td align="right"> 10 </td> <td align="right"> 4.00 </td> <td align="right"> 4.00 </td> </tr>
  <tr> <td align="right"> 11 </td> <td align="right"> 5.00 </td> <td align="right"> 5.00 </td> </tr>
   </table>
グラフの出力

```R

plot(Z0$Index,Z0$Value,type="b",main="Integer sequence",xlab="Index",ylab="Value")
abline(h = 0,col=c(200,200,200))
abline(v = 0,col=c(200,200,200))
```
![20200116183612.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/34d789d3-39f4-c4d0-bdb9-3c600b0414fd.png)
つまり自然数列は整数列の**真部分集合**(<font color="blue">Proper Subset</font>)として存在する。
[【初心者向け】集合論①部分集合(subset)と真部分集合(proper subset)について。](https://qiita.com/ochimusha01/items/760e3a02cf93f9db9ede)

③**偶数列**(<font color="blue">Even Sequance</font>)<font color="green">e[n]={-2n,…-6,-4,-2,0,2,4,6,…2n}</font>…「<font color="green">-5~0~5近辺</font>」なる曖昧表現を用いたのはこのケースを想定したから。

```R
#代数ライブラリYACASを用いた表現。
library(Ryacas)
yacas("Table(n,n,-6,6,2)")
Yacas vector:
[1] -6 -4 -2 0 2 4 6
#標準搭載関数seqを用いた表現
c0<-seq(-6L,6L,by=2L)
c0
[1] -6 -4 -2 0 2 4 6
```
表の出力

```R
library(xtable)
Even0<- data.frame(Index=c0, Value=c0)
print(xtable(Even0),type="html")
```
<!-- html table generated in R 3.5.2 by xtable 1.8-4 package -->
<!-- Fri Mar 27 01:47:12 2020 -->
<table border=1>
<tr> <th>  </th> <th> Index </th> <th> Value </th>  </tr>
  <tr> <td align="right"> 1 </td> <td align="right">  -6 </td> <td align="right">  -6 </td> </tr>
  <tr> <td align="right"> 2 </td> <td align="right">  -4 </td> <td align="right">  -4 </td> </tr>
  <tr> <td align="right"> 3 </td> <td align="right">  -2 </td> <td align="right">  -2 </td> </tr>
  <tr> <td align="right"> 4 </td> <td align="right">   0 </td> <td align="right">   0 </td> </tr>
  <tr> <td align="right"> 5 </td> <td align="right">   2 </td> <td align="right">   2 </td> </tr>
  <tr> <td align="right"> 6 </td> <td align="right">   4 </td> <td align="right">   4 </td> </tr>
  <tr> <td align="right"> 7 </td> <td align="right">   6 </td> <td align="right">   6 </td> </tr>
   </table>
グラフの出力

```R
plot(Even0$Index,Even0$Value,type="b",main="Even sequence",xlab="Index",ylab="Value")
abline(h = 0,col=c(200,200,200))
abline(v = 0,col=c(200,200,200))
```
![20200116190052.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/48fb3998-b450-5848-e8ed-28ae8aad99de.png)
④**奇数列**(<font color="blue">Odd Sequance</font>)<font color="green">o[n]={2n-1,…-5,-3,-1,1,3,5,…2n+1}</font>…偶数列の一般項<font color="green">2n</font>に対し、奇数列の一般項は<font color="green">2n±1</font>という関係。

```R
#代数ライブラリYACASを用いた表現。
library(Ryacas)
yacas("Table(n,n,-5,5,2)")
Yacas vector:
[1] -5 -3 -1 1 3 5
#標準搭載関数seqを用いた表現
c0<-seq(-5L,5L,by=2L)
c0
[1] -5 -3 -1 1 3 5
```
表の出力

```R
library(xtable)
Odd0<- data.frame(Index=c0, Value=c0)
print(xtable(Odd0),type="html")
```
<!-- html table generated in R 3.5.2 by xtable 1.8-4 package -->
<!-- Fri Mar 27 01:50:36 2020 -->
<table border=1>
<tr> <th>  </th> <th> Index </th> <th> Value </th>  </tr>
  <tr> <td align="right"> 1 </td> <td align="right">  -5 </td> <td align="right">  -5 </td> </tr>
  <tr> <td align="right"> 2 </td> <td align="right">  -3 </td> <td align="right">  -3 </td> </tr>
  <tr> <td align="right"> 3 </td> <td align="right">  -1 </td> <td align="right">  -1 </td> </tr>
  <tr> <td align="right"> 4 </td> <td align="right">   1 </td> <td align="right">   1 </td> </tr>
  <tr> <td align="right"> 5 </td> <td align="right">   3 </td> <td align="right">   3 </td> </tr>
  <tr> <td align="right"> 6 </td> <td align="right">   5 </td> <td align="right">   5 </td> </tr>
   </table>
グラフの出力

```R
plot(Odd0$Index,Odd0$Value,type="b",main="Odd　sequence",xlab="Index",ylab="Value")
abline(h = 0,col=c(200,200,200))
abline(v = 0,col=c(200,200,200))
```
![20200116190826.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/9df892f9-091c-d867-a7fd-e5bd360acddd.png)

つまり偶数列と奇数列は整数列の**真部分集合**(<font color="blue">Proper Subset</font>)として存在する。
[【初心者向け】集合論①部分集合(subset)と真部分集合(proper subset)について。](https://qiita.com/ochimusha01/items/760e3a02cf93f9db9ede)

###**片側無限数列**(<font color="blue">One-Sided Infinite Sequence</font>)の**発散**(<font color="blue">divergence</font>)
**公差**<font color="green">d</font>の符号が**正**(<font color="blue">plus</font>)ならば、その数列の**項**(<font color="blue">term</font>)は**片側無限増加数列**(<font color="blue">One-side Infinity Increasing Sequence</font>)を構成し**無限大**<font color="green">Inf</font>に発散する。
![Rplot09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c89831f8-6022-16f2-e9b3-e4313e02f0ff.png)

```R
c0<-seq(0,5,by=1)
PD0<- data.frame(Index=c0, Value=c0)
plot(PD0$Index,PD0$Value,type="l",main="Divergence to Inf",xlab="Index",ylab="Value")
abline(h = 0,col=c(200,200,200))
abline(v = 0,col=c(200,200,200))
```

**公差**<font color="green">d</font>の符号が**負**(<font color="blue">plus</font>)ならば、その数列の**項**(<font color="blue">term</font>)は**片側無限減少数列**(<font color="blue">One-side Infinity Decreasing Sequence</font>)を構成し**無限小**<font color="green">-Inf</font>に発散する。
![Rplot08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/6321f7ab-ace7-3afe-5ce3-1fe3b769d1de.png)

```R
c0<-seq(0,5,by=1)
PD0<- data.frame(Index=c0, Value=-c0)
plot(PD0$Index,PD0$Value,type="l",main="Divergence to -Inf",xlab="Index",ylab="Value")
abline(h = 0,col=c(200,200,200))
abline(v = 0,col=c(200,200,200))
```

###**両側無限増加数列**（<font color="blue">Two-Sided Infinite  Decreasing Sequence</font>）の**発散**(<font color="blue">divergence</font>)
それぞれ<font color="green">０</font>を初項とする公差マイナスの**片側無限増加数列**(<font color="blue">One-side Infinite Increasing Sequence</font>)(<font color="green">範囲-Inf~0</font>)と公差の値は同じで符号が逆の**片側無限減少数列**(<font color="blue">One-side Infinite Decreasing Sequence</font>)(<font color="green">範囲0~Inf</font>)のセット(<font color="blue">Set</font>)。
![20200116201829.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/0416100a-96df-8fc3-ce21-50e186a1ee91.png)

```R
c0<-seq(-5,5,by=1)
PD0<- data.frame(Index=c0, Value=c0)
plot(PD0$Index,PD0$Value,type="l",main="Divergence to Inf",xlab="Index",ylab="Value")
abline(h = 0,col=c(200,200,200))
abline(v = 0,col=c(200,200,200))
```

###**両側無限減少数列**（<font color="blue">Two-Sided Infinite  Decreasing Sequence</font>）の**発散**(<font color="blue">divergence</font>)
それぞれ<font color="green">０</font>を初項とする公差プラスの**片側無限減少数列**(<font color="blue">One-side Infinite Decreasing Sequence</font>)(<font color="green">範囲-Inf~0</font>)と公差の値は同じで符号が逆の**片側無限減少数列**(<font color="blue">One-side Infinite Decreasing Sequence</font>)(<font color="green">範囲0~Inf</font>)のセット(<font color="blue">Set</font>)。

ただし、統計言語Rの**標準関数**<font color="green">Seq(St(始点),Ed(終点),by=Def(公差))</font>には以下の制約があります。

1. **Def**(<font color="blue">公差</font>)の値がマイナスを取れない。
2. **Def**(<font color="blue">公差</font>)<font color="green">=0</font>がエラーとならないのは<font color="green">St</font>(<font color="blue">始点</font>)=<font color="green">Ed</font>(<font color="blue">終点</font>)の場合のみ。

従って与えられた条件をそのままの形では実装出来ません。

代替実装例
![Rplot11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/3aa98990-05d4-1503-1950-e3e8ebe7030c.png)

```R
cx<-c(-5:5)
cy<-c(5:-5)
ND0<- data.frame(Index=cx, Value=cy)
plot(ND0$Index,ND0$Value,type="l",main="Divergence to -Inf",xlab="Index",ylab="Value")
abline(h = 0,col=c(200,200,200))
abline(v = 0,col=c(200,200,200))
```

###直交座標系(<font color="blue">Rectangular Coordinate System</font> / <font color="blue">Orthogonal Coordinate System</font>)への道

互いに直交する座標軸を指定することによって定まる直交座標系を興成する各座標軸がしばしば半直線(<font color="blue">Half Straight Line</font>)として扱われるのは、この様に等しく<font color="green">0</font>を原点とし、発散の向きのみが逆の片側無限数列のセットと考えた方が何かと都合が良いからです。

受験問題で延々と**有限算術数列**(<font color="blue">Finite arithmetic sequence</font>)に取り組まされてきたせいですっかり見逃してしまっていましたが、実は一番の勘所はここだったとも。
[【Rで球面幾何学】等差数列(算術数列)②数直線(Number Line)概念から同心円集合(Concentric Set)概念へ](https://qiita.com/ochimusha01/items/2a16c3cba3f88986c767)