- 2020-07-29 07:57
*views 16*- C Application of language in development
- C language - Algorithm and data structur

Using iterative algorithm to solve problems , The following three aspects need to be done well ： One , Determine iteration variables

In the problem that can be solved by iterative algorithm , We can make sure that there is at least one variable that can continuously deduce the new value from the old value directly or indirectly , This variable is the iteration variable . Two , Establish an iterative relationship

So called iterative relation , A formula for deriving the next value from the previous value of a variable （ Or relationship ）. The establishment of iterative relation is the key to solve the iterative problem , Usually, it can be done recursively or reversely .

Three , Control the iterative process

When does the iteration process end ? This is a problem that must be considered when writing iterative programs . We can't let the iterative process go on endlessly . The control of iterative process can be divided into two cases ： One is that the number of iterations required is a certain value , It can be calculated ; The other is that the number of iterations required cannot be determined . For the former case , A fixed number of cycles can be constructed to control the iterative process ; In the latter case , Further analysis is needed to determine the conditions that can be used to end the iteration process .

next , I introduce a typical case of iterative algorithm ---- Newton - Raphson （ Raffson ） method

Newton - Raphson （ Raffson ） method , also called

Newton iterative method , Also known as Newton tangent method ： First, arbitrarily set a value close to the real root x0 As the first approximation root , from x0 reach f(x0), too (x0,f(x0)) Do it f(x) Tangent of , hand over x Axis on x1, Take it as the second approximation root , By x1 reach f(x1), too (x1,f(x1)) Do it f(x) Tangent of , hand over x Axis on x2,…… Go on like this , Until it's close enough （ such as |x- x0|<1e-6 Time ） Real roots x* until .

and f '(x0)=f(x0)/( x1- x0)

therefore x1= x0- f(x0)/ f ' (x0).

Let's look at a picture we found on the Internet :

next , Let's take an example :

Let's just go straight to the code :

example : Newton iteration method is used to solve the following equation, where the value is equal to 2.0 Nearby roots ：2x3-4x2+3x-6=0.

#include <stdio.h> #include <math.h> int main(void) { float x,x0,f,f1; x =

2.0; do{ x0=x; f=2*x0*x0*x0-4*x0*x0+3*x0-6; f1=6*x0*x0-8*x0+3; x=x0-f/f1;

// function fabs： Find floating point number x Absolute value of // explain ： calculation |x|, When x Return if not negative x, Otherwise return -x }while(fabs(x-x0)>=1e-5);

printf ("%f\n",x); return 0 ; } results of enforcement :

When x=1.5 Time , equation 2x3-4x2+3x-6=0. Nearby roots are 2.000000 .

Technology

- Java296 blogs
- Python265 blogs
- Vue125 blogs
- C Language122 blogs
- Algorithm108 blogs
- MySQL96 blogs
- Flow Chart82 blogs
- JavaScript79 blogs
- More...

Daily Recommendation

views 1825

views 255

views 248

views 237

views 221

views 210

©2020-2022 ioDraw All rights reserved