In: Mechanical Engineering
MATLAB CODE: Making cubic spline iterpolation function. Then, To solve use Tridiagonal matrix algorithm(TDMA)
xi |
-0.5 |
-0.4 |
-0.2 |
0 |
0.2 |
0.4 |
0.6 |
0.8 |
yi |
0.04 |
0.1 |
0.4 |
1 |
0.35 |
0.2 |
0.3 |
0.04 |
hi first write the xi and yi in given format -
#ans.m
xi=[-0.5 -0.4 ...... 0.8];
yi=[0.04 0.1 ........ 0.04];
xii=linspace(-0.5 0.8 20);
yii=spline(xi,yi,xii); %%cubic spline command interpolate to xii points..
then use unmkpp command to get the coefficients..
these coeeficient will be in matrix shown below function.put syntax as per your own..
%%now for solving using tridiagonal matrix algorithm -
function y = tridiag( a, b, c, f ) % Solve the n x n tridiagonal system for y: % % [ a(1) c(1) ] [ y(1) ] [ f(1) ] % [ b(2) a(2) c(2) ] [ y(2) ] [ f(2) ] % [ b(3) a(3) c(3) ] [ ] [ ] % [ ... ... ... ] [ ... ] = [ ... ] % [ ... ... ... ] [ ] [ ] % [ b(n-1) a(n-1) c(n-1) ] [ y(n-1) ] [ f(n-1) ] % [ b(n) a(n) ] [ y(n) ] [ f(n) ] % % f must be a vector (row or column) of length n % a, b, c must be vectors of length n (note that b(1) and c(n) are not used) % some additional information is at the end of the file n = length(f); v = zeros(n,1); y = v; w = a(1); y(1) = f(1)/w; for i=2:n v(i-1) = c(i-1)/w; w = a(i) - b(i)*v(i-1); y(i) = ( f(i) - b(i)*y(i-1) )/w; end for j=n-1:-1:1 y(j) = y(j) - v(j)*y(j+1); end
ref: Mathworks/help/matlab