hw4: almost done

This commit is contained in:
Claudio Maggioni 2020-05-17 12:19:11 +02:00
parent c4990cab11
commit 631cd8d993
4 changed files with 61 additions and 7 deletions

View file

@ -1,7 +1,7 @@
%% Assignment 4 %% Assignment 4
% Name: Claudio Maggioni % Name: Claudio Maggioni
% %
% Date: 19/3/2019 % Date: 2020-05-17
% %
% This is a template file for the first assignment to get started with running % This is a template file for the first assignment to get started with running
% and publishing code in Matlab. Each problem has its own section (delineated % and publishing code in Matlab. Each problem has its own section (delineated
@ -11,11 +11,13 @@
% To generate a pdf for submission in your current directory, use the following % To generate a pdf for submission in your current directory, use the following
% three lines of code at the command window: % three lines of code at the command window:
% %
% >> options.format = 'pdf'; options.outputDir = pwd; publish('assignment3.m', options) % >> options.format = 'pdf'; options.outputDir = pwd; publish('assignment4.m', options)
% %
%% Problem 3 %% Problem 3
clear; clear all;
clc;
clf reset;
n=10; n=10;
f = @(x) (exp(-(x^2)/2)/sqrt(2*pi)); f = @(x) (exp(-(x^2)/2)/sqrt(2*pi));
@ -36,12 +38,21 @@ p_10 = computePolypoints(f, xe, x_10, 10);
p_5c = computePolypoints(f, xe, x_5c, 5); p_5c = computePolypoints(f, xe, x_5c, 5);
p_10c = computePolypoints(f, xe, x_10c, 10); p_10c = computePolypoints(f, xe, x_10c, 10);
figure;
subplot(1,2,1);
plot(xe, p_5, xe, p_10, xe, y); plot(xe, p_5, xe, p_10, xe, y);
subplot(1,2,2); figure;
plot(xe, p_5c, xe, p_10c, xe, y); plot(xe, p_5c, xe, p_10c, xe, y);
%% Question 6
y = [-0.0044; -0.0771; -0.2001; -0.3521; -0.3520; 0; 0.5741; 0.8673; ...
0.5741; 0; 0.3520; -0.3521; 0.2001; -0.0771; -0.0213; -0.0044];
figure;
alpha = b3interpolate(y);
x = (0:0.01:16)';
y_c = spline_curve(alpha, x);
plot(x, y_c);
%% Question 3 (continued)
function x = computeEquidistantXs(n) function x = computeEquidistantXs(n)
x = zeros(2*n+1,1); x = zeros(2*n+1,1);
for i = 1:2*n+1 for i = 1:2*n+1
@ -88,3 +99,46 @@ function p = HornerNewton(N, x, xe)
p = p .* (xe - x(i)) + N(i); p = p .* (xe - x(i)) + N(i);
end end
end end
%% Problem 6 (continued)
% assuming x_i = i - 1
function [alpha] = b3interpolate(y)
n = size(y, 1);
A = zeros(n+2);
B = [y; 0; 0];
for x_i = 0:n-1
for j = -1:n
%fprintf("A(%d, %d) = B3(%d - %d)\n", x_i + 1, j+2, x_i, j);
A(x_i + 1, j + 2) = B3(x_i - j);
end
end
A(n+1, 1:3) = [1 -2 1];
A(n+2, n-1:n+1) = [1 -2 1];
alpha = A \ B;
end
function [v] = spline_curve(alpha, x)
n = size(alpha, 1) - 2;
v = zeros(size(x));
for i = 1:size(x,1)
for j = -1:n
v(i) = v(i) + alpha(j + 2) * B3(x(i) - j);
end
end
end
function [y] = B3(x)
y = zeros (size (x));
i1 = find (-2 < x & x < -1);
i2 = find (-1 <= x & x < 1);
i3 = find (1 <= x & x < 2);
y(i1) = 0.5 * (x(i1) + 2) .^ 3;
y(i2) = 0.5 * (3 * abs (x(i2)) .^ 3 - 6 * x(i2) .^ 2 + 4);
y(i3) = 0.5 * (2 - x(i3)) .^ 3;
y = y / 3;
end

BIN
hw4/assignment4.pdf Normal file

Binary file not shown.

Binary file not shown.

View file

@ -184,7 +184,7 @@ a_0\\a_1\\a_2\\a_{-1}\\
y_0\\y_1\\y_2\\y_{3}\\ y_0\\y_1\\y_2\\y_{3}\\
\end{bmatrix}\] \end{bmatrix}\]
\subsection*{Question 5} \section*{Question 5}
$$1 = y_0 = s(x_0) = 0 = a_{-1}B_3(1) +a_0B_3(0) $$1 = y_0 = s(x_0) = 0 = a_{-1}B_3(1) +a_0B_3(0)
+a_1B_3(-1) +a_1B_3(-1)