- こちらで非線形偏微分方程式を扱っている
- 非線形偏微分方程式では、偏微分が0になる点の周囲に保存量があるようなときに周期解を持つ(らしい)が、そのためには、非線形偏微分方程式を0とするような解を陽に表したい
- 多項式の場合に限れば次のように作れる
- n次多項式は複素数解を許せば個の解を持つから、それをとすれば
- と表せる
- 今、のうち1個以上が実数であれば、この複素多項式は実数解を持つ
- 今、微分積分をしたいので、次数ごとの係数も知りたい(という表記でののこと)
- この係数は複素数になっている
- さて、関数としては係数がすべて実数であるような、実数係数関数がほしいとする
- の実部をと表せば、はもちろん実数係数関数であって、が満足されるので、は次数がnで、実数解を持つ実係数関数となっている
- Rで確かめてみる
mypoly2<-function(xs){
library(gtools)
n<-length(xs)
ret<-rep(0,n+1)
for(i in 1:n){
cmb<-combinations(n,length(xs)-i+1)
print(cmb)
for(j in 1:length(cmb[,1])){
tmp<-1
for(k in cmb[j,]){
tmp<-tmp*(-xs[k])
}
ret[i]<-ret[i]+tmp
}
}
ret[length(ret)]<-1
ret
}
k<-5
xs<-complex(real=rnorm(k),imaginary=rnorm(k))
xs[1:3]<-Re(xs[1:3])
ks<-mypoly2(xs)
ksRe<-Re(ks)
x<-rnorm(1)
print(sum(ks*x^(0:length(xs))))
print(sum(ksRe*x^(0:length(xs))))
tmp<-1
for(i in 1:length(xs)){
tmp<-tmp*(x-xs[i])
}
print(tmp)
x<-complex(real=rnorm(1),imaginary=rnorm(1))
print(sum(ks*x^(0:length(xs))))
print(sum(ksRe*x^(0:length(xs))))
print(sum(ksRe*Re(x)^(0:length(xs))))
tmp<-1
for(i in 1:length(xs)){
tmp<-tmp*(x-xs[i])
}
print(tmp)
for(i in 1:length(xs)){
x<-xs[i]
print(sum(ks*x^(0:length(xs))))
print(sum(ksRe*x^(0:length(xs))))
tmp<-1
for(i in 1:length(xs)){
tmp<-tmp*(x-xs[i])
}
print(tmp)
}