Assessment test 2022
Contents
Assessment test 2022¶
You may gain maximum of 2 points. To obtain the assessment, it is neccessary to gain at least 1 point.
Fill your solution to this notebook and send it to petr.valenta[at]email.com no later than 13/05/2022 9:00 CEST.
import numpy as np
import scipy.linalg as la
import matplotlib.pyplot as plt
Task 1¶
Fit the following data
| \( i \) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| \( x_i \) | 0.00 | 0.45 | 0.90 | 1.35 | 1.79 | 2.24 | 2.69 | 3.14 | 3.59 | 4.04 | 4.49 | 4.93 | 5.38 | 5.83 | 6.28 | 
| \( y_i \) | 2.74 | 1.70 | 1.57 | 0.04 | -1.30 | -0.70 | -1.36 | -0.78 | -0.50 | -0.31 | 1.63 | 2.74 | 2.78 | 3.77 | 1.39 | 
using the least squares method with the model function defined as
where \( \beta = \left[ \beta_0, \, \beta_1, \, \beta_2 \right] \) is the vector of adjustable parameters and \( x_{\mathrm{min}} \) and \( x_{\mathrm{max}} \) are the minimum and maximum values of \( x \), respectively.
[0.75 points] Print the values of \( \beta_0 \), \( \beta_1 \), and \( \beta_2 \).
[0.25 points] Plot the datapoints \( \left( x_i, y_i \right) \) as well as the calculated fitting function \( f \left( x; \beta \right) \) in the interval \( \left[ x_{\mathrm{min}}, \, x_{\mathrm{max}} \right] \).
x_p = np.array([0.00, 0.45, 0.90, 1.35, 1.79, 2.24, 2.69, 3.14, 3.59, 4.04, 4.49, 4.93, 5.38, 5.83, 6.28])
y_p = np.array([2.74, 1.70, 1.57, 0.04, -1.30, -0.70, -1.36, -0.78, -0.50, -0.31, 1.63, 2.74, 2.78, 3.77, 1.39])
def least_squares(x, y):
    
    # add your code here
    
    return lambda x: beta[0] + beta[1] * np.sin((2.0 * np.pi * (x - np.min(x)) / (np.max(x) - np.min(x)))) \
        + beta[2] * np.cos(2.0 * np.pi * (x - np.min(x)) / (np.max(x) - np.min(x)))
Task 2¶
Solve the following ordinary differential equation
with the initial conditions \( y \left( 0 \right) = 2 \) and \( y^{\ \prime} \! \left( 0 \right) = 0 \) in the interval \( x \in \left[ 0, \ 25 \right] \) using the \( 4^{\mathrm{th}} \) order Runge-Kutta method with the finite step of size \( h = 0.1 \).
[0.75 points] Print the values of \( y \left( 25 \right) \) and \( y^{\ \prime} \! \left( 25 \right) \).
[0.25 points] Plot \( y \left( x \right) \), \( y^{\ \prime} \! \left( x \right) \), and \( y^{\ \prime \prime} \! \left( x \right) \) in the interval \( x \in \left[ 0, \ 25 \right] \).
def runge_kutta_4(f, g, x_0, x_n, y_0, z_0, h):
    # add your code here
    
    return x, y, z