Problem #1 – Central finite difference Jacobian
You learned how to use the Newton-Raphson method to find the solutions (roots) of a 2D
system of equations using the forward finite difference to approximate the partial derivatives in
the Jacobian matrix. Your job is to modify the function to use the central finite difference to
approximate the Jacobian matrix. I have supplied the script
(yourLastName_3854_HW7_P1_Newt_Raph.m) and function
(yourLastName_3854_HW7_P1_Forward_J.m) files necessary to solve the system of equations
below:
�!(�!, �”) = ‘c#,% + x! + x”+
‘c&,% − 2x! − x”+’c’,% − x!+
− 4 × 10()
�”(�!, �”) = ‘c#,% + x! + x”+
‘c&,% − 2x! − x”+

‘c*,% − x”+
− 3.7 × 10(“
• Modify the provided function to do the following:
o Use the central finite difference instead of the forward finite difference to
approximate the Jacobian matrix
o Save as (yourLastName_3854_HW7_P1_Central_J.m).
• Modify the provided script to do the following:
o Solve the system twice: once using a forward finite difference Jacobian and once
using the central finite difference Jacobian.
o Use true error instead of approximate error to determine when to terminate
o Output the number of iterations and the true error using both methods.
o Save as (yourLastName_3854_HW7_P1_Newt_Raph.m)
• Turn in both the function that I provided (yourLastName_3854_HW7_P1_Forward_J.m)
Hints:
• Use the specified initial conditions, error tolerance, and maximum iterations already
defined
• No need to modify the inputs or outputs of the function
• To calculate true error, you will need the true solutions to the system. Use MATLAB’s
built in fsolve function to obtain the “true” solutions before your while loop. I say
“true” solutions because technically this is still a numerical approximation, but it is very
accurate.
• It may be easiest to just use two separate while loops separately calling each Jacobian
function.
HW 7 Chemical Engineering Computations Fall 2020
ECH 3854 Dr. Thourson
2
• If you use two separate while loops, make sure you reset your iterations, approximate
error, and initial guess if you reuse your variable names.
Bonus #1 – True error limit (1 point)
• What happens when you try to improve the error (i.e. decrease specError)?
• Why is it that there’s a limit on the true error that can be achieved? (Hint: what happens
to dx?)
Problem #2 – Simpson’s 3/8 Rule
Using Simpson’s 3/8 Rule for multiple segments over an interval can be generally expressed as:
5 �(�)��
+
,
= 3ℎ
8 [(�% + �-) + 3(�! + �” + �) + �. + ⋯ + �-(!) + 2(�/ + �0 + �1 … + �-(/)]
• Write a script (yourLastName_3854_HW7_P2_Simp38.m) that uses Simpson’s 3/8 Rule
to approximate the integral of:
�(�) = 5 + 12� − 150�” + 370�/ − 100�) + 300�.
from � = 0 to � = 1 using � = 7 segments.
Bonus #2 – Simpson’s 1/3 Rule (1 point)
• Estimate the same integral in Problem #2 using Simpson’s 1/3 rule (just add to your
script)
• Find the true value of the integral using built-in MATLAB functions such as
vpaintegral(func,x,xi,xf)and compare the true error of Simpson’s 3/8 vs. 1/3
rules.
Hints:
• Simpson’s 3/8 Rule needs an odd number of segments.
• Use MATLAB’s mod function to determine if � is divisible by 3 in your for loop
• For Bonus #2:
o Simpson’s 1/3 Rule needs an even number of segments.
o Remember if you try to do both methods in the same script and reuse variables,
that can cause issues. Either write a new script, rename the variables, or make
sure you reset the variables before using the other method.

Sample Solution