/ concept-collection / jupyterlite-numbl-kernel
Sign in
concept-collection / jupyterlite-numbl-kernel
jupyterlite-numbl-kernel / demo / content / 07-numerical-methods.ipynb
111 lines · 2.6 KBCodeBlameHistory
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "id": "nm-0",
6 "metadata": {},
7 "source": "# Numerical methods\n\nPolynomials, interpolation, the FFT, statistics, and quadrature."
8 },
9 {
10 "cell_type": "markdown",
11 "id": "nm-1",
12 "metadata": {},
13 "source": "## Polynomials: fit, evaluate, roots"
14 },
15 {
16 "cell_type": "code",
17 "id": "nm-2",
18 "metadata": {},
19 "execution_count": null,
20 "outputs": [],
21 "source": "x = 0:0.5:5;\ny = 2 * x.^2 - 3 * x + 1;\np = polyfit(x, y, 2)\npolyval(p, 10)\nroots([1 -3 2])'"
22 },
23 {
24 "cell_type": "markdown",
25 "id": "nm-3",
26 "metadata": {},
27 "source": "## Interpolation"
28 },
29 {
30 "cell_type": "code",
31 "id": "nm-4",
32 "metadata": {},
33 "execution_count": null,
34 "outputs": [],
35 "source": "xs = 0:10;\nys = xs.^2;\ninterp1(xs, ys, 3.5)\ninterp1(xs, ys, [1.5 5.5 8.5])"
36 },
37 {
38 "cell_type": "markdown",
39 "id": "nm-5",
40 "metadata": {},
41 "source": "## The FFT"
42 },
43 {
44 "cell_type": "code",
45 "id": "nm-6",
46 "metadata": {},
47 "execution_count": null,
48 "outputs": [],
49 "source": "t = 0:0.01:1 - 0.01;\nsig = sin(2 * pi * 5 * t) + 0.5 * sin(2 * pi * 12 * t);\nF = abs(fft(sig));\n[~, idx] = max(F(1:50));\nfprintf('dominant frequency near %d Hz\\n', idx - 1);"
50 },
51 {
52 "cell_type": "markdown",
53 "id": "nm-7",
54 "metadata": {},
55 "source": "## Basic statistics"
56 },
57 {
58 "cell_type": "code",
59 "id": "nm-8",
60 "metadata": {},
61 "execution_count": null,
62 "outputs": [],
63 "source": "data = [4 8 15 16 23 42];\n[mean(data), median(data), std(data)]\n[min(data), max(data)]"
64 },
65 {
66 "cell_type": "markdown",
67 "id": "nm-9",
68 "metadata": {},
69 "source": "## Sorting, differences, cumulative sums"
70 },
71 {
72 "cell_type": "code",
73 "id": "nm-10",
74 "metadata": {},
75 "execution_count": null,
76 "outputs": [],
77 "source": "v = [3 1 4 1 5 9 2 6];\nsort(v)\nunique(v)\ncumsum(v)\ndiff(v)"
78 },
79 {
80 "cell_type": "markdown",
81 "id": "nm-11",
82 "metadata": {},
83 "source": "## Numerical integration with trapz"
84 },
85 {
86 "cell_type": "code",
87 "id": "nm-12",
88 "metadata": {},
89 "execution_count": null,
90 "outputs": [],
91 "source": "x = linspace(0, pi, 200);\napprox = trapz(x, sin(x)) % exact value is 2"
92 }
93 ],
94 "metadata": {
95 "kernelspec": {
96 "display_name": "numbl (MATLAB syntax)",
97 "language": "numbl",
98 "name": "numbl"
99 },
100 "language_info": {
101 "codemirror_mode": "octave",
102 "file_extension": ".m",
103 "mimetype": "text/x-octave",
104 "name": "numbl",
105 "nbconvert_exporter": "script",
106 "pygments_lexer": "matlab"
107 }
108 },
109 "nbformat": 4,
110 "nbformat_minor": 5
moveopenescclose