複素二次方程式の根


z <- -5
w <- 5
t <- 0.1

X <- Y <- seq(from = z, to = w, by = t)

xy <- expand.grid(X,Y)
x <- xy[,1]
y <- xy[,2]


# 二次方程式
# (x+iy)^2 + (p+iq)(x+iy) + (r+is) = 0

p <- 3
q <- 2
r <- -2
s <- 5

# 根
w1 <- 1/2 * (- (p+1i*q) + ((p+1i*q)^2-4*(r+1i*s))^0.5)
w2 <- 1/2 * (- (p+1i*q) - ((p+1i*q)^2-4*(r+1i*s))^0.5)

# 実部
ReF <- x^2 - y^2 + p * x - q*y + r
# 虚部
ImF <- x * y + q/2 * x + p/2 * y + s/2
# 和
F <- ReF + ImF
ModF <- Mod(F)

par(mfcol=c(2,2))
image(X,Y,matrix(abs(ReF),length(X),length(Y)))
abline(v=-p/2)
abline(h=-q/2)
points(Re(w1),Im(w1),pch=20)
points(Re(w2),Im(w2),pch=20)

image(X,Y,matrix(abs(ImF),length(X),length(Y)))
abline(v=-p/2)
abline(h=-q/2)
points(Re(w1),Im(w1),pch=20)
points(Re(w2),Im(w2),pch=20)

image(X,Y,matrix(ModF,length(X),length(Y)))
abline(v=-p/2)
abline(h=-q/2)
points(Re(w1),Im(w1),pch=20)
points(Re(w2),Im(w2),pch=20)


この記事が気に入ったらサポートをしてみませんか?