Tutorial: Nonlinear solver
Last updated
Last updated
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.
MATLAB tutorial source file : TU_nonlinear_student.mlx
Create a new project “ TU_Nonlinear” with Visual Studio, under the directory \NP\tutorial\
Download the tutorial source file from
C-program tutorial source file : TU_nonlinear_student.cpp
Add the downloaded source file under the project folder.
Prepare your library header files in your project: myNP_tutorial.h
and myNP_tutorial.c
This is the same header files used in the previous tutorial: Tutorial-Sine Taylor: Part 2
They must be located in \NP\include\
folder
If you do not have them, you can download from here
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
Read how to pass a function as an input argument
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