# Newton's method in c++

• Comp Sci
Sumaya

## Homework Statement

why the loop not looping ?

fun1=x^3+4^2-x-1
fun2=3x^2+8x-1

## The Attempt at a Solution

Code:
#include "stdafx.h"
#include<iostream>
using namespace std;
float fun1(float);
float fun2(float);
void main()
{
float a;
cin>>a;

if (fun2(a)>0)

do
{
a=a-(fun1(a)/fun2(a));
cout<<a<<endl;

}
while(fun2(a)<0.001);

}

float fun1( float a)
{
float y;
y=a*a*a+4*a*a-a-1;
return y;
}
float fun2( float b)
{
float y;
y=3*b*b+8*b-1;
return y;
}

Mentor
Try to trace your program watching values of variable a and values returned by fun1 and fun2. Is it doing what you hoped for, or is it doing something else?

vivekrai
Code:
while(fun2(a)<0.001);

GingerLee
Keep two variables for iterations.
If the difference between them is < 0.001 then stop loop.

Something like this :

x1 = a - (fun1(a) / fun2(a));

do{
x0 = x1;
x1 = x0 - (fun1(x0) / fun2(x0));
d = x0 - x1;
}while(d > 0.001);

TheoMcCloskey
Also, check your (math in) function FUN2.

Mentor
Also, check your (math in) function FUN2.
I don't see anything wrong with it.

TheoMcCloskey
I don't see anything wrong with it.

You're CORRECT - I misread OP's function F(x)! fun2 code is correct for fun1 code.

Mentor
You're CORRECT - I misread OP's function F(x)! fun2 code is correct for fun1 code.
?

Maybe you're referring to this line in the OP, in the Relevant equations section:
sumaya said:
fun1=x^3+4^2-x-1
There's a missing x. 4^2 should be 4*x^2.
The code has the right formula, though.

Sumaya
thank u all