Tutorial: Nonlinear solver

Tutorial: Nonlinear solver

Problem

Solve for x, in a non-linear function of

f(x)= 8-4.5*(x-sin(x))=0

image

Tutorial: MATLAB

Sample Code

Exercise

Download the tutorial source file and fill in the blanks. Run the code and validate your answer.


Tutorial: C-Programming

  1. Create a new project “ TU_Nonlinear” with Visual Studio, under the directory \NP\tutorial\

  2. Download the tutorial source file from

  1. Add the downloaded source file under the project folder.

  2. Prepare your library header files in your project: myNP_tutorial.h and myNP_tutorial.c

  3. 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.

Exercise 1

On the given source code template TU_nonlinear_student.cpp, fill-in the missing codes.

Bisection Method

Assuming (func(a) * func(b) <0 )

  1. First, Write down a pseudocode for the bisection

  2. Based on the pseudocode, fill in the blanks in the source code.

  3. Move your functions from main source file to your header files

    • function definitions: myNP_yourID.h

    • function declaration: myNP_yourID.c

Exercise 2

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

Exercise 3

Newton Raphson Method

  1. First, Write down a pseudocode for the method

  2. Based on the pseudocode, fill in the blanks in the source code.

  3. You need to define the function f(x) and the derivative function dfdx(x) as

    For dfdx(x), get the derivative formula analytically.

  4. After you have compiled them successfully, move your functions to your header files

Exercise 4

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

Last updated

Was this helpful?