eiφ = cosφ+isninφ Eular の公式を用いると, 複素数 z は z = r(cos φ + i sin φ) = reiφ と書くことができる。 …. 複素数の表現 z = reiφ において φ が 0 から 2π ま で変化すれば、z を表す点は半径 r の円周上 を一周する。

z <- c(0+0i,NA)
for(d in 1:16){
  phi <- seq(0,2*pi,length=2^d+1)
  for(i in phi)
    z <- c(z,sqrt(d)/2*exp(1)^(1i*i))
  z <- c(z,NA)
}
plot(z,type="b",pch=".")

par(pty = "s") # プロット領域を正方形にする
plot(z, type="b", pch=".")
grid() # グリッ
points(z, type="b", pch=".") # グリッドを上書き
points(0+0i, pch=20) # 0+0i だけをプロット 想像できましたね

library(rgl)
library(knitr)
knit_hooks$set(webgl = hook_webgl)
## Warning in file(con, "r"): file("") は、open = "w+" と open = "w+b" だけを
## サポートします: 前者を使います

unnamed_chunk_5snapshot
You must enable Javascript to view this page properly.

unnamed_chunk_6snapshot
You must enable Javascript to view this page properly.

unnamed_chunk_8snapshot
You must enable Javascript to view this page properly.

#################################################
"回転行列" <- function(d,#角度
                       a){#元の座標 matrix形式
  df <- matrix(c(cos(d),sin(d),-sin(d),cos(d)),2,2)
  df1 <- df %*% a
}

"複素数回転" <- function(d,a){
  z <- complex(real=a[1]*cos(d) - a[2]*sin(d),#######!!!!!
                imaginary=a[2]*cos(d) + a[1]*sin(d))
}


c1 <- 8 ; c2 <- 0
a <- matrix(c(c1,c2),2,1)#元の座標 matrix形式

plot(0:10,0:10,type="n")
points(t(a),pch=19)

a1 <- 回転行列(pi/3,a) 
par(new=TRUE)
points(t(a1),pch=21,col=4)

複素数

# 実数成分、虚数成分を与えて、複素数を作る
z1 <- complex(real=c1,imaginary=c2)
# 実数成分を取り出す
Re(z1)
## [1] 8
#[1] 3
# 虚数成分を取り出す
Im(z1)
## [1] 0
d <- pi/3
#z2 <- complex(real=cos(d),imaginary=sin(d))
#z2 * z1
z3 <- complex(real=c1*cos(d) - c2*sin(d),#######!!!!!
              imaginary=c2*cos(d) + c1*sin(d))
#par(new=TRUE)
Re(z3);Im(z3);Mod(z3)
## [1] 4
## [1] 6.928203
## [1] 8
plot(0:10,0:10,type="n")
points(Re(z3),Im(z3),pch=21,col=4)

a <- c(c1,c2)
b <- 複素数回転(d,a)
#par(new=TRUE)
Re(b);Im(b);Mod(b)
## [1] 4
## [1] 6.928203
## [1] 8
plot(0:10,0:10,type="n")
points(Re(b),Im(b),pch=15,col=2)

##################################################
#複素数 sqrt(3)+i を5乗せよ
##################################################
z1 <- complex(real=sqrt(3),imaginary=1)
# 実数成分を取り出す
Re(z1)
## [1] 1.732051
#[1] 3
# 虚数成分を取り出す
Im(z1)
## [1] 1
plot(0:2,0:2,type="n")
points(Re(z1),Im(z1),pch=19)
lines(c(0,Re(z1)),c(0,1),lty=1)

r <- sqrt((Re(z1))^2 + 1^2)
cos(pi/6) == round(Re(z1)/r,7)
## [1] FALSE
#sqrt(3)+i=2(sqrt(3)+i*1/2)=2(cos(pi/6) + isin(pi/6))=2 *exp^i*pi/6
#-------
plot(-30:5,-5:30,type="n",xlab="実数",ylab="虚数",
     main="複素数 sqrt(3)+i を5乗せよ!!")
abline(h=0,v=0,lty=3,col=8)

a <- seq(1:5)
n <- length(a)
y1 <- y2 <- c()

for(j in 1:n){
  aa <- z1^j
  y1[j] <- Re(aa);y2[j] <- Im(aa)
  par(new=TRUE)
  points(y1[j],y2[j],pch=19)
  
  if(j==1){
    #lines(c(0,y1[j]),c(0,y2[j]),lty=1,col=j)#線
    arrows(0,0,y1[j],y2[j],lty=1,col=j)#矢印
  } else{
    #lines(c(y1[j-1],y1[j]),c(y2[j-1],y2[j]),lty=1,col=j)
    arrows(y1[j-1],y2[j-1],y1[j],y2[j],lty=1,col=j)
  }
}

(y <- cbind(y1,y2))
##                 y1        y2
## [1,]  1.732051e+00  1.000000
## [2,]  2.000000e+00  3.464102
## [3,] -8.881784e-16  8.000000
## [4,] -8.000000e+00 13.856406
## [5,] -2.771281e+01 16.000000