Tutorial: Nonlinear solver
Last updated
Was this helpful?
Last updated
Was this helpful?
Solve for x, in a non-linear function of
f(x)= 8-4.5*(x-sin(x))=0
Download the tutorial source file and fill in the blanks. Run the code and validate your answer.
Create a new project “ TU_Nonlinear” with Visual Studio, under the directory \NP\tutorial\
Download the tutorial source file from
Add the downloaded source file under the project folder.
Prepare your library header files in your project: myNP_tutorial.h
and myNP_tutorial.c
They must be located in \NP\include\
folder
Rename your library header files as myNP_yourID.h
and myNP_yourID.c
Example: myNP_20030011.c
, myNP_20030011.h
From now on, you will update your functions in the library header files.
On the given source code template TU_nonlinear_student.cpp
, fill-in the missing codes.
Bisection Method
Assuming (func(a) * func(b) <0 )
First, Write down a pseudocode for the bisection
Based on the pseudocode, fill in the blanks in the source code.
Move your functions from main source file to your header files
function definitions: myNP_yourID.h
function declaration: myNP_yourID.c
Modify your Bisection function with considering the following conditions
if(func(a) * func(b) > 0), No solution exists
if(func(a) * func(b) ==0), Either (1) a=Xtrue or (2) b=Xtrue
if(k==Nmax) Solution did not converge within given iteration
Newton Raphson Method
First, Write down a pseudocode for the method
Based on the pseudocode, fill in the blanks in the source code.
You need to define the function f(x)
and the derivative function dfdx(x)
as
For dfdx(x), get the derivative formula analytically.
After you have compiled them successfully, move your functions to your header files
Modify Newton Raphson Method with function callback
Modify the newton-raphson function that calls the problem functions f(x) and dfdx(x) as input arguments.
Now, the problem function f(x)
and the derivative function dfdx(x)
should be located in the main source code TU_nonlinear_student.cpp
NOT in
myNP_yourID.h
MATLAB tutorial source file :
C-program tutorial source file :
This is the same header files used in the previous tutorial:
If you do not have them, you can