All Courses
All Courses
Courses by Software
Courses by Semester
Courses by Domain
Tool-focused Courses
Machine learning
POPULAR COURSES
Success Stories
Aim: - To derive and write a program for in MATLAB for 4th order approximation for second order derivative by following methods- Central difference Skewed right sided difference Skewed left sided difference Objective: - 1. To evaluate the second order derivative of the function f(x)=exp(x)cosx</math>">f(x)=exp(x)cosx�(�)=exp(�)cos� ,…
Sachin Barse
updated on 25 Sep 2023
Aim: - To derive and write a program for in MATLAB for 4th order approximation for second order derivative by following methods-
Objective: - 1. To evaluate the second order derivative of the function
Theory and derivations: -
During solving a CFD problem we may come across partial derivative equation which consists 2nd order derivative. Since due to complexity of the equation we may have to chose numerical approach rather than analytical. But when dealing with numerical approach we try to make the error margin as low as possible.
As the order of approximation get higher, we get higher accuracy. Hence, we are going to derive the three methods of approximation for an analytical function. The methods are following.
Here there are two nodes taken from both side of the point of focus i.e. f(i).
(NOTE: - To select the number of nodes in consideration, we use following expression:
N=p + q -1 for central differencing
N = p + q for skewed differencing
Here N is no. of nodes, p is order of derivative and q is order of approximation.)
Taylor’s table for Central difference:
|
f(X) |
dx f’(x) |
dx2 f’’(x) |
dx3 f’’’(x) |
dx4 f’’’’(x) |
dx5 f’’’’’(x) |
af(i-1) |
a |
-2a |
4a/2 |
-8a/6 |
16a/24 |
-32a/120 |
bf(i-2) |
b |
-b |
b/2 |
-b/6 |
b/24 |
-b/120 |
cf(i) |
c |
0 |
0 |
0 |
0 |
0 |
df(i-1) |
d |
d |
d/2 |
d/6 |
d/24 |
d/120 |
ef(i-2) |
e |
2e |
4e/2 |
8e/6 |
16e/24 |
32e/120 |
af(i-2) +bf(i-1) +cf(i) +df(i+1) + ef(i+2) |
0 |
0 |
1 |
0 |
0 |
? |
This table transform into matrix of type AX=B
i.e. Values = a = -0.0833 b= 1.3333 c= -2.5000 d= 1.3333 e= -0.0833
These coefficients will further used in code to get the value of derivative.
Taylor’s table for Skewed right sided difference:
|
f(x) |
dx f’ (X) |
dx2 f’’ (x) |
dx3 f’’’(x) |
dx4f’’’’(x) |
dx5f’’’’’(x) |
af(i) |
a |
0 |
0 |
0 |
0 |
0 |
bf(i+1) |
b |
b |
b/2 |
b/6 |
b/24 |
b/120 |
cf(i+2) |
c |
2c |
4c/2 |
8c/6 |
16c/24 |
32c/120 |
df(i+3) |
d |
3d |
9d/2 |
27d/6 |
81d/24 |
243d/120 |
ef(i+4) |
e |
4e |
16e/2 |
64e/6 |
256e/24 |
1024e/120 |
ff(i+5) |
f |
5f |
25f/2 |
125f/6 |
625f/24 |
3125f/120 |
af(i) + bf(i+1) + cf(i+2) + df(i+3) + ef(i+4) +ff(i+5) |
0 |
0 |
1 |
0 |
0 |
0 |
This table transform into matrix of type AX=B:
unknown i.e. Values = a = 3.7500 b= -12.8333 c= 17.8333
d= -13.0000 e= 5.0833 f= -0.8333
These coefficients will further used in code to get the value of derivative.
Taylor’s table for Skewed right sided difference:
|
f(x) |
dx f’ (X) |
dx2 f’’ (x) |
dx3 f’’’(x) |
dx4f’’’’(x) |
dx5f’’’’’(x) |
af(i-5) |
a |
-5a |
25a/2 |
-125a/6 |
625a/24 |
-3125a/120 |
bf(i-4) |
b |
-4b |
16b/2 |
-64b/6 |
256b/24 |
-1024b/120 |
cf(i-3) |
c |
-3c |
9c/2 |
-27c/6 |
81c/24 |
-243c/120 |
df(i-2) |
d |
-2d |
4d/2 |
-8d/6 |
16d/24 |
-32d/120 |
ef(i-1) |
e |
-e |
e/2 |
-e/6 |
e/24 |
-e/120 |
ff(i) |
f |
0 |
0 |
0 |
0 |
0 |
af(i-5) + bf(i-4) + cf(i-3) + df(i-2) + ef(i-1) +ff(i) |
0 |
0 |
1 |
0 |
0 |
0 |
This table transform into matrix of type AX=B:
unknown i.e. Values = a = -0.8333 b= 5.0833 c=13.0000
d= 17.8333 e= -12.8333 f= 3.7500
These coefficients will further used in code to get the value of derivative.
MATLAB code: -
clear all
close all
clc
%analytical function defination and value assignment
x=pi/3;
dx=linspace(pi/10,pi/1000,100);
f=@(x)(exp(x)*cos(x));
g=@(x)(-2*exp(x)*sin(x));
d2f=g(x);
func=f(x);
%for central difference scheme
%coefficients taken from taylor's table
P = [1 1 1 1 1
-2 -1 0 1 2
4/2 1/2 0 1/2 4/2
-8/6 -1/6 0 1/6 8/6
16/24 1/24 0 1/24 16/24];
C=[0;0;1;0;0];
%as P*a=C i.e. a=inverse(P)*c(fastest way to getby '\')
cf1=P\C;
%for right skewwd differnce scheme
Q= [1 1 1 1 1 1
0 1 2 3 4 5
0 1/2 2 9/2 16/2 25/2
0 1/6 8/6 27/6 64/6 125/6
0 1/24 16/24 81/24 256/24 625/24
0 1/120 32/120 243/120 1024/120 3125/120];
D=[0;0;1;0;0;0];
%as Q*b=s i.e. b=inverse(Q)*s(fastest way to getby '\')
cf2=Q\D;
%for right skewwd differnce scheme
R= [1 1 1 1 1 1
-5 -4 -3 -2 -1 0
25/2 16/2 9/2 2 1/2 0
-125/6 -64/6 -27/6 -8/6 -1/6 0
625/24 256/24 81/24 16/24 1/24 0
-3125/120 -1024/120 -243/120 -32/120 -1/120 0];
E=[0;0;1;0;0;0];
%as n*b=s i.e. b=inverse(n)*s(fastest way to getby '\')
cf3=R\E;
�lculating values of derivative using CDS RSDC,LSDC
�fining variable size befor using in loop
central_diff=zeros(1,100);
err_central=zeros(1,100);
right_sdiff=zeros(1,100);
err_right=zeros(1,100);
left_sdiff=zeros(1,100);
err_left=zeros(1,100);
for i=1:length(dx)
�lculating value and error by central difference scheme
central_diff(i)=(cf1(1)*f(x-2*dx(i))+cf1(2)*f(x-dx(i))+cf1(3)*f(x)+cf1(4)*f(x+dx(i))+cf1(5)*f(x+2*dx(i)))/(dx(i))^2;
err_central(i)=abs(central_diff(i)-d2f);
�lculating value and error by right skewed difference scheme
right_sdiff(i)=(cf2(1)*f(x)+cf2(2)*f(x+dx(i))+cf2(3)*f(x+2*dx(i))+cf2(4)*f(x+3*dx(i))+cf2(5)*f(x+4*dx(i))+cf2(6)*f(x+5*dx(i)))/(dx(i))^2;
err_right(i)=abs(right_sdiff(i)-d2f);
�lculating value and error by left skewed difference scheme
left_sdiff(i)=(cf3(1)*f(x-5*dx(i))+cf3(2)*f(x-4*dx(i))+cf3(3)*f(x-3*dx(i))+cf3(4)*f(x-2*dx(i))+cf3(5)*f(x-dx(i))+cf3(6)*f(x))/(dx(i))^2;
err_left(i)=abs(left_sdiff(i)-d2f);
end
%plotting values of derivative
subplot(2,1,1)
hold on
fplot(d2f,'--')
xlim([-0.05 0.35]);
plot(dx,central_diff,'linewidth',2,'color','r');
plot(dx,right_sdiff,'linewidth',2,'color','b');
plot(dx,left_sdiff,'linewidth',2,'color','g');
legend('analytical value at x=pi/3','central diff.','right skewed diff.','left skewed diff.','location','best')
xlabel('Grid siza(dx)');
ylabel('Value');
title('Comparision b\w value of derivative calculated by diff. order of approximation')
hold off
%plotting errors in approximation of derivative
subplot(2,1,2)
loglog(dx,err_central,'linewidth',2,'color','r');
hold on
xlim([.002 0.4]);
loglog(dx,err_right,'linewidth',2,'color','b');
loglog(dx,err_left,'linewidth',2,'color','g');
legend('central diff.','right skewed diff.','left skewed diff.','location','best')
xlabel('Grid siza(dx)');
ylabel('Absolute error');
title('Comparision b/w 4th order approximation method for error in calculating d2f/dx2 ');
Leave a comment
Thanks for choosing to leave a comment. Please keep in mind that all the comments are moderated as per our comment policy, and your email will not be published for privacy reasons. Please leave a personal & meaningful conversation.
Other comments...
FINAL INDEPENDENT PROJECT
Project : Design & Animate the drone camera for project model. Attached Link For Model Review : https://drive.google.com/file/d/1f6sjaJc6Od2AEnmh-JYFFoLMmUveWk61/view?usp=drive_link
15 May 2024 05:42 PM IST
Week - 4
AIM: Implement control logic of a “washing machine” using Stateflow as per given sequence: If the power supply is available, the system gets activated. If the Water supply is not available, stop the process & indicate through LED Soaking time should be 200s followed by Washing…
13 Mar 2024 10:27 AM IST
Week -2
1.Door Bell Simulink Model: Simulink Model Explanation: The pulse generator is used to create square wave pulses at regular intervals.The block waveform parameters Amplitude,pulse width,period and phase delay,determine the shape of the output waveform. …
12 Mar 2024 12:23 PM IST
Project 1
Attached Model for Project :- Attached link for grading :- https://drive.google.com/file/d/13bjiEKi2h1sYtm9LzZMouMksFAZYnVIQ/view?usp=drive_link
29 Oct 2023 11:00 AM IST
Related Courses
Skill-Lync offers industry relevant advanced engineering courses for engineering students by partnering with industry experts.
© 2025 Skill-Lync Inc. All Rights Reserved.