2010-12-06 2 views
2

(pow(e,(-a*x)))/(sqrt(x))과 같은 함수가 있으므로 a, e은 const float입니다. float eps = pow (10, (- 4))가 있습니다. 우리는 해당 함수의 적분을 x로부터 무한대로 변환하는 것 중 어느 것이 x에서 시작하는지 알아야합니다. 우리는 연산자와 마찬가지로 수학을 강조하는 특수 기본 통합 함수에 함수를 사용할 수 없습니다. 포인트는 최대 평가 속도를 달성하는 것입니다.(x) 함수의 적분 (그 점에서 무한대까지)이 몇 eps보다 작아지기 시작하는 방법을 찾는 방법?

+0

예 - 학교에서 숙제로 보입니다.하지만, 저번이 아닌 것 같아요. ( – Rella

+0

int eps = 10^(- 4) 조금 이상해 보입니다 ... – Vladimir

+0

'int' 변수는 사용할 수 없습니다. 소수점을 표현하고,'^'는 지수 함수가 아닙니다. 당신은 ** exponentiate를 위해서'math.h'의 함수를 사용해야합니다 .' math.h'는 "solve integral"함수에 원격으로 아무것도 제공하지 않습니다 . –

답변

0

흠, 아무도 그 질문을 이해하지 못하는 것 같습니다. 질문 : 어떤 함수 f가 주어진 경우 Integral _ x^+ inf f (x) < eps와 같은 가장 작은 x를 찾으십시오. 그게 질문입니다. 그래서 기본적으로 우리는 x = 0, x = 0.1, x = 0.2 ...를 시도합니다. 모든 목적과 목적을위한 적분이 사라질 때까지 말입니다.

예를 들어 SO에서 프로그래머의 IQ에 대한 벨 곡선을 보면, IQ는 IQ가 높은 IQ가 높은 프로그래머의 누적 지능입니다. 우리가 x = 100을 선택했다면, 프로그래머의 절반 이상이 100보다 높은 IQ를 가질 것이라는 것을 알고 있습니다. 120을 선택하면 남은 숫자는 얼마입니까? 200은 어때? 여기에 10,000 명의 프로그래머가 있고 eps = 1/10000이라면 기본적으로 IQ가 SO 기여자의 상위 0.01 %를 묻는 것입니다.

질문 : x가 무한대에 가까워짐에 따라 x에서 무한대까지의 적분이 0에 가까워 질만큼 빨라지는 것보다 f에 대해 알려진 바가 없으므로이 숫자를 찾는 가장 효율적인 방법은 무엇입니까?

일반적인 대답은 다음과 같습니다. 일종의 추측으로 시작해야합니다. 결과가 너무 크면 추측을 두 배로 늘리고 요구 사항을 충족 할 때까지 계속 진행하십시오. 그런 다음 마지막 값으로 돌아가서 (요구하지 않음) 이진 코드를 수행하여 요구 사항을 만족하는 가장 작은 x를 찾습니다.

좋은 추측을하는 것은 어렵습니다. 한 가지 방법은 함수의 Chebychev 근사를 사용하고, 분석적으로 통합하고, 결과 다항식으로 문제를 해결하고, 솔루션을 출발 추측으로 사용하는 것입니다. 모든 함수는 주어진 범위에서 충분히 높은 차수의 다항식처럼 보입니다.

+0

이것은 아주 쉽게 위에 대답되었습니다. 왜 조세핀의 대답이 옳은 것 같지 않니? – Dov

1

이 적분을 계산하려면 Error function을 계산해야합니다. gcc를 사용하면 erf(...) 함수가 math.h에서 찾을 수 있지만 정확하게 구하려면 params를 사용하지 않습니다. 하지만 Taylor의 시리즈를 사용하여 Error 함수의 값을 직접 평가할 수 있습니다. 주어진 eps를 사용하면 시리즈의 정확한 용어 수를 계산할 수 있습니다.

6

u-substitution u = sqrt (x)를 수행하면 적분은 2 * integral e^(- au^2) du가됩니다. 한 번 더 대체하면 표준 표준으로 줄일 수 있습니다. 표준 정규 형식으로 만들면 erf (x) 계산이 줄어 듭니다. 대체는 모든 a에 대해 추상적으로 수행 될 수 있으며 결과는 간단하고 신속하게 하드 코딩됩니다.

관련 문제