暇つぶし2chat MATH
- 暇つぶし2ch634:132人目の素数さん
24/04/28 09:17:20.33 pfxD2O3Q.net
>>610
R言語による解

intsect = \(a,b,c,d){
a1=Re(a) ; a2=Im(a)
b1=Re(b) ; b2=Im(b)
c1=Re(c) ; c2=Im(c)
d1=Re(d) ; d2=Im(d)

if((a2-b2)*(c1-d1)==(a1-b1)*(c2-d2) | (a-b)*(c-d)==0) return(NULL)
if(a1==b1 & c1!=d1) return( a1+1i*((d2-c2)/(d1-c1)*(a1-c1)+c2) )
if(a1!=b1 & c1==d1) return( c1+1i*((a2-b2)/(a1-b1)*(c1-a1)+a2) )

p=(a2-b2)/(a1-b1)
q=(c2-d2)/(c1-d1)

x= ((p*a1 - a2) - (q*c1 - c2))/ (p-q)
y= p*x - (p*a1 - a2)
return( x + 1i*y )
}

N <- 7
theta2int=\(theta,n=N){ # theta 2 intersection
p=NULL
p[1:(n+1)]=exp(1i*2*pi/n*(1:(n+1)))
i=floor(theta/((2*pi)/n)) %% n
j=i+1
i=ifelse(i,i,n) # ifelse(i!=0,i,n)
intsect(0i,exp(1i*theta),p[i],p[j])
}
fn=\(a){
b=a+2*pi/3 ; c=b+2*pi/3
A=theta2int(a) ; B=theta2int(b) ; C=theta2int(c)
AB=abs(A-B) ; BC=abs(B-C) ; CA=abs(C-A)
(AB-BC)^2+(BC-CA)^2+(CA-AB)^2
}
fn=Vectorize(fn)
curve(fn(x),0,2*pi/N)
opt=optimize(fn,c(0,2*pi/N),tol=1e-16) ; opt
optimize(fn,c(0,0.3),tol=1e-16)$obj
optimize(fn,c(0.3,0.6),tol=1e-16)$obj
optimize(fn,c(0.6,0.9),tol=1e-16)$obj

9角形だとN=9にするだけ。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch