added gates

This commit is contained in:
Tom van Woudenberg 2026-01-03 15:35:40 +01:00
parent 1ac94844a3
commit e22ea50d6d
5 changed files with 3263 additions and 0 deletions

View file

@ -57,6 +57,8 @@ sphinx:
summaries: false
individual: false
nb_execution_includepatterns: "**/MANUAL.ipynb"
sphinx_codex_name: "Voorbeeld"
sphinx_codex_merge_with_proof: true # default value
teachbooks:
attribution_location: margin

View file

@ -2,6 +2,11 @@ format: jb-book
root: intro
parts:
- caption: test sphinx_gated_directives
chapters:
- file: instructie.ipynb
- file: instructie_2.ipynb
- file: lesoefeningen.ipynb
- caption: Your First TeachBook!
chapters:
- file: intro/book.md

1470
book/instructie.ipynb Normal file

File diff suppressed because one or more lines are too long

1470
book/instructie_2.ipynb Normal file

File diff suppressed because one or more lines are too long

316
book/lesoefeningen.ipynb Normal file
View file

@ -0,0 +1,316 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "44f13f99",
"metadata": {},
"source": [
"````{margin}\n",
"```{attributiongrey} Bronvermelding\n",
":class: attribution\n",
"\n",
"Deze oefening is aangepast van https://oit.tudelft.nl/CT1000/2024/week_3/session_1/intro.html\n",
"\n",
"% Figures from https://github.com/TUDelft-books/CT1000/blob/2025/book/week_3/session_1/intro_data/Tekening1.vsdx\n",
"\n",
"```\n",
"```` \n",
"\n",
"# Begeleide oefening 1_oud\n",
"\n",
"Gegeven is de volgende constructie:\n",
"\n",
"```{figure} lesoefeningen_data/figure2.svg\n",
"---\n",
"align: center\n",
"---\n",
"Constructie, $EI = 6400 \\ \\rm{kNm^2}$\n",
"```\n",
"\n",
":::::{exercise}\n",
":label: ODE_3_1\n",
":nonumber: true\n",
"\n",
"Bepaal de segmenten en teken de vrijlichaamsschema's.\n",
"\n",
"```{h5p} https://tudelft.h5p.com/content/1292630673009985967/embed\n",
"```\n",
"\n",
":::::\n",
"\n",
"% solution_start\n",
"\n",
"::::{admonition} Solution\n",
":class: solution, dropdown\n",
"\n",
"$q_z = -12 \\cdot x + 0$\n",
"\n",
"::::\n",
"\n",
"% solution_end\n",
"\n",
":::::{exercise}\n",
":label: ODE_3_2\n",
":nonumber: true\n",
"\n",
"Bepaal de relaties van de krachtsgrootheden en verplaatsingen.\n",
"\n",
"```{h5p} https://tudelft.h5p.com/content/1292630677998825487/embed\n",
"```\n",
"\n",
":::::\n",
"\n",
"% solution_start\n",
"\n",
"::::{admonition} Solution\n",
":class: solution, dropdown\n",
"\n",
"- $ w \\left( 0\\right) = 0 $\n",
"- $ M \\left( 0\\right) = 0$\n",
"- $ w \\left( 8\\right) = 0$\n",
"- $ \\varphi \\left( 8 \\right) = 0$\n",
"\n",
"::::\n",
"\n",
"% solution_end\n",
"\n",
":::::{exercise-start}\n",
":label: ODE_3_3\n",
":nonumber: true\n",
"\n",
"Los de integratieconstanten op. Je kan gebruik maken van de volgende code cellen. (Klik op {fa}`rocket` --> {guilabel}`Live Code` om live python code te activeren op deze pagina.)\n",
"\n",
"```{h5p} https://tudelft.h5p.com/content/1292630704310133517/embed\n",
"```\n",
"\n",
":::::\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "91dc34be",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"A = np.array([\n",
" [ , , , ],\n",
" [ , , , ],\n",
" [ , , , ],\n",
" [ , , , ],\n",
"])\n",
"\n",
"b = np.array([\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
"])\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ce6f1792",
"metadata": {},
"outputs": [],
"source": [
"np.linalg.solve(A,b)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9e466305",
"metadata": {},
"outputs": [],
"source": [
"import sympy as sym\n",
"sym.init_printing()\n",
"\n",
"x = sym.symbols('x')\n",
"\n",
"q = \n",
"EI = 6400\n",
"\n",
"C_1, C_2, C_3, C_4 = sym.symbols('C_1 C_2 C_3 C_4')\n",
"\n",
"V = -sym.integrate(q, x) + C_1\n",
"M = sym.integrate(V, x) + C_2\n",
"kappa = M/EI\n",
"phi = sym.integrate(kappa, x) + C_3\n",
"w = -sym.integrate(phi, x) + C_4\n",
"\n",
"eq1 = sym.Eq(w.subs(x,0), )\n",
"eq2 = sym.Eq( .subs(x,0), )\n",
"eq3 = sym.Eq(w.subs(x,8), )\n",
"eq4 = sym.Eq( .subs(x,8),0)\n",
"\n",
"sol = sym.solve([eq1,eq2,eq3,eq4],(C_1,C_2,C_3,C_4))\n",
"for k, v in sol.items():\n",
" print(f\"{k} = {v} ≈ {v.evalf()}\")"
]
},
{
"cell_type": "markdown",
"id": "94270e4f",
"metadata": {},
"source": [
":::::{exercise-end}\n",
":::::\n",
"\n",
"% solution_start\n",
"\n",
"::::{solution-start} ODE_3_3\n",
":class: dropdown\n",
"::::\n",
"\n",
"$ w = - \\cfrac{x^{5}}{10} + \\cfrac{64 x^{3}}{5} - \\cfrac{2048 x}{5} = - 0.1 x^{5} + 12.8 x^{3} - 409.6 x $\n",
"% solution_end"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "f46e4efd",
"metadata": {
"tags": [
"solution"
]
},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"A = np.array([\n",
" [ 0 , 0 , 0,1],\n",
" [ 0 , 1 , 0,0],\n",
" [-1/75 ,-1/200,-8,1],\n",
" [ 1/200, 1/800, 1,0],\n",
"])\n",
"\n",
"b = np.array([\n",
" 0,\n",
" 0,\n",
" 64/125,\n",
" -8/25,\n",
"])\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "300cd851",
"metadata": {
"tags": [
"solution"
]
},
"outputs": [
{
"data": {
"text/plain": [
"array([-7.68e+01, 0.00e+00, 6.40e-02, 0.00e+00])"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.linalg.solve(A,b)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "96516034",
"metadata": {
"tags": [
"solution"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/latex": [
"$\\displaystyle - 0.1 x^{5} + 12.8 x^{3} - 409.6 x$"
],
"text/plain": [
" 5 3 \n",
"- 0.1⋅x + 12.8⋅x - 409.6⋅x"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import sympy as sym\n",
"sym.init_printing()\n",
"\n",
"x = sym.symbols('x')\n",
"\n",
"q = -12 * x\n",
"EI = 6400\n",
"\n",
"C_1, C_2, C_3, C_4 = sym.symbols('C_1 C_2 C_3 C_4')\n",
"\n",
"V = -sym.integrate(q, x) + C_1\n",
"M = sym.integrate(V, x) + C_2\n",
"kappa = M/EI\n",
"phi = sym.integrate(kappa, x) + C_3\n",
"w = -sym.integrate(phi, x) + C_4\n",
"\n",
"eq1 = sym.Eq(w.subs(x,0),0)\n",
"eq2 = sym.Eq(M.subs(x,0),0)\n",
"eq3 = sym.Eq(w.subs(x,8),0)\n",
"eq4 = sym.Eq(phi.subs(x,8),0)\n",
"\n",
"sol = sym.solve([eq1,eq2,eq3,eq4],(C_1,C_2,C_3,C_4))\n",
"\n",
"display((w.subs(sol)*EI).evalf())\n",
"\n",
"A,b = sym.linear_eq_to_matrix((eq1,eq2,eq3,eq4), (C_1,C_2,C_3,C_4))"
]
},
{
"cell_type": "markdown",
"id": "b3a4c9d4",
"metadata": {},
"source": [
"% solution_start\n",
"\n",
"::::{solution-end}\n",
"::::\n",
"\n",
"% solution_end"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}