두배 캐스케이드


12

먼저, 수학적 해석, 짧고 가치가 있습니다.

경우 0 < a < 4로지스틱 함수는 f(x) = ax(1-x) 자체의 내부에 간격 [0,1]를 매핑한다. 이것은 반복 게임을 할 수 있다는 것을 의미합니다. 예를 들어, a = 2 인 경우 초기 값 0.3은 0.42, 0.4872 등이됩니다.

매개 변수가 a증가함에 따라 2 차 함수 f는 다음과 같은 의미에서 더 복잡해집니다.

  • 0 < a < 1 모든 초기 값은 0으로 반복됩니다.
  • 1 < a < 3 0은 반발하지만 모든 반복을 끌어들이는 새로운 고정 소수점 (a-1) / a가 있습니다.
  • 3 < a < 1+sqrt(6) 새로운 고정 포인트는 반발하지만, 2 개의 유치 포인트 사이클이 나타납니다.
  • 3.44949... < a < 3.54409... 2주기는 격퇴되지만 4 회 유인 포인트주기가 나타납니다.
  • 기타

파이 겐 바움은 이러한 매개 변수 간격의 길이가 점점 더 가까이에 도착 비율로 감소 것으로 나타났습니다 4.6692...파이 겐 바움 상수 . 놀라운 발견은이 2 분기 분기 시퀀스는 2 차 포물선과 같은 함수가 증가하고 감소하는 모든 기능에 의해 공유되는 일반적인 현상이라는 것입니다. 이것은 혼돈보편성에 관한 첫 번째 보고서 중 하나였습니다 .

이제 도전하십시오! Feigenbaum 상수를 원하는 정확도로 계산 하는 가장 짧은 코드를 작성하십시오 . 여기서 요점은 없습니다 당신이 봤하는 숫자를 인코딩하여 시스템을 속임수, 실제로 가지고있는 컴퓨터가 값을 찾을 수 있습니다. 참고로 다음은 30 자리의 상수입니다.

4.669201609102990671853203821578


5
이 상수를 계산하는 데 어려움을 겪지 않은 것에 놀랐습니다. 우리가 놓친 좋은 생각입니다. 로지스틱 어 트랙터플로팅하는 것이 가장 가깝습니다 . 코드가 최대 오류 또는 자릿수를 가져 와서 그 정확도 내에서 상수를 생성하도록 제안합니다 (어떤 점을 지나면 기계 한계를 무시하십시오). 또는 상수에 수렴하는 것처럼 i 번째와 (i + 1) 배가 간격 사이의 비율을 계산할 수도 있습니다. 정확도를 선택하는 골퍼가 너무 모호하며 하드 코딩이 불가능합니다.
xnor

나는 도전을 표현하는 방법에 대해 열심히 생각했다. 문제는 이것이 정확하게 계산하기 어려운 것으로 악명 높기 때문에 사람들이 잔인한 힘으로 여분의 숫자를 얻는 것보다 매끄러운 방법을 구현하는 데 더 재미있을 것이라고 생각했습니다. 사람들이 다르게 느끼면 규칙을 바꾸겠습니다.
Rodrigo A. Pérez

1
매끄러운 방법이나 무차별 한 힘을 피하기 위해 무엇을 찾고 있습니까? 코드 골프의 경우 기본적으로 런타임 또는 공간에 대한 경계가 필요하지 않으므로 짧게 최적화하면 응답이 매우 비효율적 인 경향이 있습니다. 아마도 가장 빠른 코드를 만들거나 복잡성 문제를 해결하려고하십니까?
xnor

답변:


3

자바 스크립트, 141 138 135 131 바이트의 8 자리

내가 추측하는 것입니다. 상당히 개선 가능해야합니다. 누구든지 시작이 필요한 경우 : Feigenbaum 계산 방법 . 코드 방식으로 수행하는 방법을 알고 싶다면 this을 확인 하십시오 .

콘솔에 다음 코드를 붙여 넣습니다. 4.6692016 68823243을 계산합니다 (정확하지는 않습니다).

b=1;c=0;e=3.2;for(i=2;i<13;i++){z=b-c;a=b+z/e;j=4;while(j--){x=y=0;k=2**i;while(k--){y=1-2*y*x;x=a-x*x;}a-=x/y}e=z/(a-b);c=b;b=a;e}

b=1;c=0;e=3.2;for(i=2;i<13;i++){z=b-c;a=b+z/e;j=4;while(j--){x=y=0;k=2**i;while(k--){y=1-2*y*x;x=a-x*x;}a-=x/y}e=z/(a-b);c=b;b=a;e}
console.log(e)


2

파이썬, 127 바이트

c,b,e=0,1,2
for i in range(2,13):a=b+(b-c)/e;exec(("x=y=0;"+"y,x=1-2*y*x,a-x*x;"*2**i+"a=a-x/y;")*17);d,c,b=(b-c)/(a-b),b,a;e=d

크레딧은 자바 스크립트 답변으로 @ThomasW에게갑니다.

print(d)출력에 추가 4.669201673141983 . 실행 전에 긴 문자열이 계산되어 몇 초가 걸립니다.


1

, 84 바이트

A¹βA⁰εA³·²δF…²¦¹³«A⁺β∕⁻βεδαFχ«A⁰ξA⁰ψFX²ι«A⁻¹××ψ²ξψA⁻α×ξξξ»A⁻α∕ξψα»A∕⁻βε⁻αβδAβεAαβ»Iδ

온라인으로 사용해보십시오! 자세한 설명을 위해 자세한 코드로 연결하십시오.

여기 에서 알고리즘을 사용합니다 .

인쇄 4.66920 0975097843 (6 자리)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.