Comp Sci Understanding Newton's Method in C++

AI Thread Summary
The discussion focuses on troubleshooting a C++ implementation of Newton's Method. The user is experiencing an issue where the loop is not functioning as expected. Suggestions include ensuring the loop condition accurately reflects the convergence criteria, specifically by tracking the difference between iterations. Additionally, there is a correction regarding the mathematical representation of the functions, clarifying that the original equation for fun1 was miswritten. The overall consensus is that while the code logic appears sound, careful attention to the mathematical definitions and loop conditions is crucial for proper execution.
Sumaya
Messages
29
Reaction score
0

Homework Statement



why the loop not looping ?

Homework Equations



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;
}
 
Physics news on Phys.org
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?
 
Code:
while(fun2(a)<0.001);

Are you sure about this?
 
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);
 
Also, check your (math in) function FUN2.
 
TheoMcCloskey said:
Also, check your (math in) function FUN2.
I don't see anything wrong with it.
 
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.
 
TheoMcCloskey said:
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.
 
thank u all
 

Similar threads

Replies
2
Views
12K
Replies
2
Views
3K
Replies
3
Views
1K
Replies
15
Views
7K
Replies
3
Views
1K
Replies
8
Views
1K
Replies
4
Views
2K
Replies
13
Views
2K
Replies
12
Views
2K
Back
Top