이미 알 고 있 는 방정식 x ^ 3 + 2x ^ 2 - 3x - 6 = 0 은 이분법 으로 방정식 을 구 하 는 데 몇 개의 실제 뿌리 가 있다. 이런 제목 으로 구간 을 어떻게 찾 아야 하 는 지, 설마 하나의 시도 일 까?

이미 알 고 있 는 방정식 x ^ 3 + 2x ^ 2 - 3x - 6 = 0 은 이분법 으로 방정식 을 구 하 는 데 몇 개의 실제 뿌리 가 있다. 이런 제목 으로 구간 을 어떻게 찾 아야 하 는 지, 설마 하나의 시도 일 까?


검 근 상 나눗셈 을 통 해 알 수 있 듯 이 1 개 는 - 2 이 고, 명령 (x ^ 3 + 2x 2 - 3x - 6) / (x + 2) = (x ^ 2 - 3) 은 x ^ 3 + 2x 2 - 3x - 6 = (x ^ 2 - 3) = (x + 근 호 3) (x + 근 호 3) 쉽게 x - 근 호 3 - 2, 근 호 3 의 구체 적 인 구간 은 중간 값 으로 가 져 갈 수 있다.



C 프로그램 시험: 이분법 으로 아래 의 방정식 을 구하 세 요 2X ^ 3 - 4X ^ 2 + 3X - 6 = 0 의 근 은 오차 가 0.0001 보다 작 아야 합 니 다.


모 르 면 다시 설명 할 수 있 고, 답 이 마음 에 들 면 받 아들 이 고, 요점 없 이 문 제 를 닫 으 세 요.
# include
# include
double f (double x)
{.
return 2 * x * x * x - 4 * x * x + 3 * x - 6;
}.
main ()
{.
double left = - 100, right = 100, mid;
double ans;
도.
{.
mid = (left + right) / 2;
ans = f (mid);
if (ans > 0)
right = mid;
else if (ans1 - 5);
printf ("% lf \ t% lf \ n", mid, ans);
system (pause);
}.



프로그램 을 작성 하고 이분법 으로 방정식 을 구 합 니 다. 2x 3 - 4x 2 + 3x - 6 = 0 은 (- 10, 10) 사이 의 뿌리 입 니 다.
알림:
do - while 문 구 를 사용 하여 구현 합 니 다.
이분법 의 계산 절차:
계산 준비 f (x) 유 근 구간 [a, b] 점 에서 의 값 f (a), f (b)
2 점 계산 f (x) 구간 중심 점 (a + b) / 2 곳 의 값 f [a + b) / 2]
판단 은 f [(a + b) / 2] = 0 이면 뿌리 이 고 계산 과정 이 끝난다.
그렇지 않 으 면, 검 측:
f [(a + b) / 2] 가 f (a) 와 다른 경우, 뿌리 는 구간 [a, (a + b) / 2] 내 에 있 으 며, 이때 (a + b) / 2 로 b 를 대체 합 니 다.
f [(a + b) / 2] 가 f (a) 와 같은 번호 일 경우, 뿌리 는 구간 [(a + b) / 2, b] 내 에 있 으 며, 이때 (a + b) / 2 로 a 를 대체 합 니 다.
2 와 3 을 반복 적 으로 실행 하여 구간 [a, b] 길이 가 허용 되 는 오차 범위 내 로 축소 되 었 을 때, 이때 중점 (a + b) / 2 가 원 하 는 뿌리 입 니 다.
다음은 제 가 했 는데 뭐 가 잘 못 됐 는 지 모 르 겠 어 요.
# include
# include
void main ()
{.
flat a = - 10.0;
flat b = 10.0;
flat fc, fa, c;
c = (a + b) / 2;
fc = 2 * pow (c, 3) - 4 * pow (c, 2) + 3 * c - 6;
fa = 2 * pow (a, 3) - 4 * pow (a, 2) + 3 * a - 6;
if (fc = 0)
printf ("The result is% lf. \ n", c);
else.
{.
도.
{.
c = (a + b) / 2;
if (fa * fc 0.1 - 6);
printf ("The result is% lf. \ n", c);
}.
}.


# include
using namespace std;
double p (double x)
{.
return 2 * x * x * x - 4 * x * x + 3 * x - 6;
}.
int main ()
{.
double a, b;
cin > > a > > b;
double fa = p (a), fb = p (b), fm;
도.
{.
fm = p (a + b) / 2);
if (fm = 0) break;
if (fm * fa