쿼트 방정식의 해


10

쿼트 방정식의 해에 대한 개방형 C 구현이 있습니까?

ax+bx³+cx²+dx+e=0

페라리 솔루션의 구현을 생각하고 있습니다. Wikipedia에서 솔루션이 계수의 가능한 부호 조합 중 일부에 대해서만 계산적으로 안정적이라는 것을 읽었습니다. 그러나 운이 좋을 수도 있습니다 ... 컴퓨터 대수 시스템을 사용하여 분석적으로 해결하고 C로 내 보내서 실용적인 솔루션을 얻었습니다. 그러나 테스트를 거친 구현이 있으면 이것을 사용하는 것이 좋습니다. 나는 빠른 방법을 찾고 일반적인 루트 파인더를 사용하지 않는 것을 선호합니다.

실제 솔루션 만 필요합니다.


모든 (실제) 솔루션이 동시에 필요합니까? GertVdE가 아래에 언급했듯이 닫힌 양식 솔루션에 안정성 문제가있는 경우 실제로 루트 찾기 알고리즘을 사용하지 않는 좋은 이유는 없습니다.
Godric Seer

3
이미 Hessenberg 형식으로되어 있고 QR 스윕을 적용하는 것은 매우 간단합니다.
Victor Liu

2
ACM TOMS (Algorithm 954)에 게시 된 입방 / 정자 솔버를 살펴보십시오 . 해당 저널에 작성하는 코드는 일반적으로 매우 높은 품질입니다. 페이퍼 자체는 페이 월 뒤에 있지만 코드는 이 링크 에서 다운로드 할 수 있습니다 .
GoHokies

... (나중에 편집) ACM 코드는 FORTRAN 90으로 작성되었지만 첫 인상은 많은 노력을 기울이지 않고도 C에서 호출 할 있다는 것 입니다.
GoHokies

1
@GoHokies 나는이 질문에 대한 좋은 답변이라고 생각하기 때문에 귀하의 의견을 답변으로 전환해야한다고 생각합니다. 특히 연결된 종이는 일반적인 수치 적 불안정성을 피할 수 있기 때문에 결코 쉬운 일이 아닙니다.
Kirill

답변:


20

폐쇄 형 솔루션은 수치 적으로 매우 불안정하기 때문에 사용하지 않는 것이 좋습니다. 판별 변수 및 기타 매개 변수에 대한 평가 방식과 순서에 각별히주의해야합니다.

ax2+bx+c=0

x1,2=b±b24ac2a
b4ac
x1=(b+sign(b)b24ac)2a;x2=ca1x1

[a,b,c]=[1.732,1,1.2704]O(102)O(1015)O(1011)

귀하의 경우에는 Bairstow의 방법을 적용 합니다. 그것은 이차 형태 (그리고 이차의 근이 해결됨)와 수축에 대한 뉴턴 반복의 반복 조합을 사용합니다. 웹에서 쉽게 구현할 수 있으며 일부 구현도 가능합니다.


1
"닫힌 양식 솔루션은 수치 적으로 매우 불안정하기 때문에 사용하지 않는 것이 좋습니다."라는 말의 의미를 설명해 주시겠습니까? 이것은 4 차 다항식에만 적용됩니까, 아니면 일반적인 규칙입니까?
NoChance

@EmmadKareem 위의 답변을 업데이트했습니다.
GertVdE

3

이것들을보십시오 :


2
x1=1.602644912244132e+00O(108)O(107)O(1015). 이것이 충분히 좋은지 당신에게 달려 있습니다 (컴퓨터 그래픽의 경우 다른 응용 프로그램의 경우에는 그렇지 않을 수도 있음)
GertVdE

1

c의 수치 레시피는 아마도 2 차와 3 차의 실제 뿌리에 대해 닫힌 형태 표현을 제공하며, 이는 아마도 적절한 정밀도를 가질 것입니다. quartic의 대수적 해법은 3 차 해를 구한 다음 2 차 2 차 해를 구하는 것이므로 정밀한 닫힌 형태의 quartic 일 수 있습니다.


나는 방금 c (press et al) 입방 공식의 수치 레시피를 사용하여 2e-16 (내 수레의 정밀도에 대한 태드) 내에서 인용 된 입방 예의 뿌리를 얻었습니다. 따라서 희망 할만한 이유가 있습니다.
Nemocopperfield
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.