Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
TATA54-kurshemsida
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jan Snellman
TATA54-kurshemsida
Commits
c07a08e2
Commit
c07a08e2
authored
11 months ago
by
Jan Snellman
Browse files
Options
Downloads
Patches
Plain Diff
sagemath
parent
5313d4b0
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#126614
passed
11 months ago
Stage: deploy
Changes
2
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
.ipynb_checkpoints/Rosen12-3-checkpoint.ipynb
+967
-94
967 additions, 94 deletions
.ipynb_checkpoints/Rosen12-3-checkpoint.ipynb
Rosen12-3.ipynb
+967
-94
967 additions, 94 deletions
Rosen12-3.ipynb
with
1934 additions
and
188 deletions
.ipynb_checkpoints/Rosen12-3-checkpoint.ipynb
+
967
−
94
View file @
c07a08e2
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a0564571-faf2-47f7-80b8-6b93da370de6",
"cell_type": "markdown",
"id": "84d0f462",
"metadata": {},
"source": [
"# Rosen kap 12.3"
]
},
{
"cell_type": "markdown",
"id": "82be3b57",
"metadata": {},
"outputs": [],
"source": [
"# 12.3.1c"
"#
#
12.3.1c"
]
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": null,
"id": "c1cc2bbd",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 93,
"id": "97f1a9eb-89f3-493e-a564-9ceed016b7ba",
"metadata": {},
"outputs": [],
"source": [
"N=
6
\n",
"N=
10
\n",
"alpha = vector(QQbar,[0 for _ in range(N)])\n",
"a = vector(QQbar,[0 for _ in range(N)])\n",
"t = vector(QQbar,[0 for _ in range(N)])"
...
...
@@ -33,7 +47,7 @@
},
{
"cell_type": "code",
"execution_count":
13
,
"execution_count":
94
,
"id": "4c58f2d2-829b-4e8e-8b41-e18241a04c39",
"metadata": {},
"outputs": [],
...
...
@@ -43,32 +57,168 @@
},
{
"cell_type": "code",
"execution_count": 20,
"id": "d239123d-8f1d-4c2a-8723-e488035f4882",
"execution_count": 95,
"id": "6a2f74bb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.236067977499790?"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha[0]"
]
},
{
"cell_type": "code",
"execution_count": 97,
"id": "48a2ac86",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"x^2 - 5"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha[0].minpoly()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3355ee27",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 89,
"id": "1d1f5708",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"sqrt(5)"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha[0].radical_expression()"
]
},
{
"cell_type": "code",
"execution_count": 96,
"id": "d239123d-8f1d-4c2a-8723-e488035f4882",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 2.236067977499790? 2 0.2360679774997897?\n",
"1 4.236067977499789? 4 0.2360679774997897?\n",
"2 4.236067977499789? 4 0.2360679774997897?\n",
"3 4.23606797749979? 4 0.23606797749979?\n",
"4 4.2360679774998? 4 0.2360679774998?\n"
" 0 2.236067977499790? sqrt(5) 2 0.2360679774997897? sqrt(5) - 2\n",
" 1 4.236067977499789? sqrt(5) + 2 4 0.2360679774997897? sqrt(5) - 2\n",
" 2 4.236067977499789? sqrt(5) + 2 4 0.2360679774997897? sqrt(5) - 2\n",
" 3 4.23606797749979? sqrt(5) + 2 4 0.23606797749979? sqrt(5) - 2\n",
" 4 4.2360679774998? sqrt(5) + 2 4 0.2360679774998? sqrt(5) - 2\n",
" 5 4.236067977500? sqrt(5) + 2 4 0.236067977500? sqrt(5) - 2\n",
" 6 4.23606797750? sqrt(5) + 2 4 0.23606797750? sqrt(5) - 2\n",
" 7 4.236067978? sqrt(5) + 2 4 0.236067978? sqrt(5) - 2\n",
" 8 4.236067977499789? sqrt(5) + 2 4 0.2360679774997897? sqrt(5) - 2\n"
]
}
],
"source": [
"alpha[0] = sqrt(5)\n",
"for k in range(N-1):\n",
" a[k], t[k] = floor(alpha[k]), alpha[k] - floor(alpha[k])\n",
" alpha[k+1] = 1 / t[k]\n",
" print(k,alpha[k], a[k], t[k])"
" print(f\"{k : >5} {alpha[k] } {alpha[k].radical_expression()} {a[k] } {t[k] } {t[k].radical_expression()}\")"
]
},
{
"cell_type": "code",
"execution_count": 98,
"id": "8bca7737",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4.236067977499789?"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha[3]"
]
},
{
"cell_type": "code",
"execution_count": 99,
"id": "8688c62b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"x^2 - 4*x - 1"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha[3].minpoly()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"execution_count": null,
"id": "f64ad389",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "900adcfb",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 76,
"id": "91e64dfc-7d82-41da-97a3-907b70fb04cf",
"metadata": {},
"outputs": [
...
...
@@ -78,7 +228,7 @@
"[2; 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...]"
]
},
"execution_count":
24
,
"execution_count":
76
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -89,7 +239,28 @@
},
{
"cell_type": "code",
"execution_count": 25,
"execution_count": 77,
"id": "23bc6e7f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0; 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...]"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"continued_fraction(t[0])"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "4805e461-de3a-4ad1-b68b-0ac1254a9fa2",
"metadata": {},
"outputs": [
...
...
@@ -99,7 +270,7 @@
"[4; 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...]"
]
},
"execution_count":
25
,
"execution_count":
78
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -110,7 +281,7 @@
},
{
"cell_type": "code",
"execution_count":
26
,
"execution_count":
18
,
"id": "74e5c6b5-4141-48a2-9ed0-5145ec962206",
"metadata": {},
"outputs": [
...
...
@@ -120,7 +291,7 @@
"[0; 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...]"
]
},
"execution_count":
26
,
"execution_count":
18
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -139,7 +310,41 @@
},
{
"cell_type": "code",
"execution_count": 28,
"execution_count": null,
"id": "5069fea6",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "48ef12c1",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "727be0d3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 79,
"id": "1e494570",
"metadata": {},
"outputs": [],
"source": [
"# annat exempel med periodisk kb"
]
},
{
"cell_type": "code",
"execution_count": 91,
"id": "5f179ca2-6fe2-4acf-8ee5-efc16c9f92d7",
"metadata": {},
"outputs": [
...
...
@@ -147,11 +352,15 @@
"name": "stdout",
"output_type": "stream",
"text": [
"0 3.358898943540674? 3 0.3588989435406736?\n",
"1 2.786299647846891? 2 0.7862996478468912?\n",
"2 1.271779788708135? 1 0.2717797887081347?\n",
"3 3.679449471770337? 3 0.679449471770337?\n",
"4 1.471779788708135? 1 0.471779788708135?\n"
"0 3.358898943540674? sqrt(19) - 1 3 0.3588989435406736? sqrt(19) - 4\n",
"1 2.786299647846891? 1/3*sqrt(19) + 4/3 2 0.7862996478468912? 1/3*sqrt(19) - 2/3\n",
"2 1.271779788708135? 1/5*sqrt(19) + 2/5 1 0.2717797887081347? 1/5*sqrt(19) - 3/5\n",
"3 3.679449471770337? 1/2*sqrt(19) + 3/2 3 0.6794494717703368? 1/2*sqrt(19) - 3/2\n",
"4 1.471779788708135? 1/5*sqrt(19) + 3/5 1 0.4717797887081347? 1/5*sqrt(19) - 2/5\n",
"5 2.119632981180225? 1/3*sqrt(19) + 2/3 2 0.11963298118022452? 1/3*sqrt(19) - 4/3\n",
"6 8.358898943540674? sqrt(19) + 4 8 0.3588989435406736? sqrt(19) - 4\n",
"7 2.786299647846891? 1/3*sqrt(19) + 4/3 2 0.7862996478468912? 1/3*sqrt(19) - 2/3\n",
"8 1.271779788708135? 1/5*sqrt(19) + 2/5 1 0.2717797887081347? 1/5*sqrt(19) - 3/5\n"
]
}
],
...
...
@@ -160,7 +369,7 @@
"for k in range(N-1):\n",
" a[k], t[k] = floor(alpha[k]), alpha[k] - floor(alpha[k])\n",
" alpha[k+1] = 1 / t[k]\n",
" print(k,alpha[k],
a[k], t[k]
)"
" print(k,alpha[k],
alpha[k].radical_expression(), a[k], t[k], t[k].radical_expression()
)"
]
},
{
...
...
@@ -293,18 +502,16 @@
"source": []
},
{
"cell_type": "code",
"execution_count": 1,
"id": "44991d26-ebed-44ad-9883-e49b90842e8e",
"cell_type": "markdown",
"id": "f9d5feb9",
"metadata": {},
"outputs": [],
"source": [
"#12.3.2.a"
"#
#
12.3.2.a"
]
},
{
"cell_type": "code",
"execution_count":
2
,
"execution_count":
53
,
"id": "a05c12c9-9df9-464d-b932-62a81a1d4429",
"metadata": {},
"outputs": [],
...
...
@@ -316,15 +523,28 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
56
,
"id": "7ffc1d57-0784-4119-825f-32f5459cc945",
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"data": {
"text/plain": [
"[(0, -2), (1, -1), (2, 6), (3, 25), (4, 62), (5, 123), (6, 214), (7, 341)]"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[(j,f0(j)) for j in range(8)]"
]
},
{
"cell_type": "code",
"execution_count":
5
,
"execution_count":
40
,
"id": "1f050106-4454-441f-ab17-869bb1e7deb9",
"metadata": {},
"outputs": [
...
...
@@ -336,7 +556,7 @@
" (-0.6299605249474365? + 1.091123635971722?*I, 1)]"
]
},
"execution_count":
5
,
"execution_count":
40
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -347,7 +567,7 @@
},
{
"cell_type": "code",
"execution_count":
7
,
"execution_count":
41
,
"id": "3327b8b5-8e8e-4f34-97d0-8b24e06410e2",
"metadata": {
"scrolled": true
...
...
@@ -359,7 +579,7 @@
"1.259921049894873?"
]
},
"execution_count":
7
,
"execution_count":
41
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -371,7 +591,7 @@
},
{
"cell_type": "code",
"execution_count":
8
,
"execution_count":
42
,
"id": "4ddb6330-657c-4387-b902-6e055b0097b0",
"metadata": {},
"outputs": [
...
...
@@ -381,7 +601,7 @@
"[1; 3, 1, 5, 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, ...]"
]
},
"execution_count":
8
,
"execution_count":
42
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -398,7 +618,7 @@
},
{
"cell_type": "code",
"execution_count":
9
,
"execution_count":
100
,
"id": "78e5e15c-0cc0-4dff-a8a2-5693f4b4a339",
"metadata": {},
"outputs": [
...
...
@@ -408,7 +628,7 @@
"x^3 - 3*x^2 - 3*x - 1"
]
},
"execution_count":
9
,
"execution_count":
100
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -420,6 +640,48 @@
"f1"
]
},
{
"cell_type": "code",
"execution_count": 101,
"id": "d2cae2a9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-x^3 + 3*x^2 + 3*x + 1)/x^3"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f0(a0 + 1/x)"
]
},
{
"cell_type": "code",
"execution_count": 106,
"id": "3d7595ea",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(0, -1), (1, -6), (2, -11), (3, -10), (4, 3), (5, 34), (6, 89), (7, 174)]"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[(j,f1(j)) for j in range(8)]"
]
},
{
"cell_type": "code",
"execution_count": 47,
...
...
@@ -445,7 +707,7 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 10
3
,
"id": "c54abfa7-4930-4a3f-9c2c-3bf05d5b32a0",
"metadata": {},
"outputs": [
...
...
@@ -455,7 +717,7 @@
"[3; 1, 5, 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, 2, ...]"
]
},
"execution_count": 10,
"execution_count": 10
3
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -467,9 +729,11 @@
},
{
"cell_type": "code",
"execution_count": 1
2
,
"execution_count": 1
07
,
"id": "5801d40e-a2a8-46e9-bdd9-39b33d52f83f",
"metadata": {},
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
...
...
@@ -477,7 +741,7 @@
"10*x^3 - 6*x^2 - 6*x - 1"
]
},
"execution_count": 1
2
,
"execution_count": 1
07
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -491,7 +755,35 @@
},
{
"cell_type": "code",
"execution_count": 13,
"execution_count": 108,
"id": "b0a535b5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(0, -1),\n",
" (1, -3),\n",
" (2, 43),\n",
" (3, 197),\n",
" (4, 519),\n",
" (5, 1069),\n",
" (6, 1907),\n",
" (7, 3093)]"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[(j,f2(j)) for j in range(8)]"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "c4c0bc9d-9bbf-4d8d-b063-d1dc78245ff6",
"metadata": {},
"outputs": [
...
...
@@ -503,7 +795,7 @@
" (-0.2900943677742046? + 0.02403056328910778?*I, 1)]"
]
},
"execution_count":
13
,
"execution_count":
46
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -514,7 +806,7 @@
},
{
"cell_type": "code",
"execution_count":
1
4,
"execution_count": 4
7
,
"id": "c049c466-ebf9-4853-9ebf-2be2a169b069",
"metadata": {},
"outputs": [
...
...
@@ -524,7 +816,7 @@
"[1; 5, 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, 2, 1, ...]"
]
},
"execution_count":
1
4,
"execution_count": 4
7
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -536,55 +828,106 @@
},
{
"cell_type": "code",
"execution_count": 1
6
,
"id": "
9953eae5-e5d1-48f6-bda3-e464b1a6c6c1
",
"execution_count": 1
09
,
"id": "
47f04c9b
",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"
3*x^3 - 12*x^2 - 24*x -
10"
"
1.1801887355484
10
?
"
]
},
"execution_count": 1
6
,
"execution_count": 1
09
,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a2 = 1\n",
"f3 = (-x)^d*f2(a2 + 1/x)\n",
"f3 =R(f3)\n",
"f3"
"alfa2"
]
},
{
"cell_type": "code",
"execution_count": 1
7
,
"id": "
0a66ff0f-dc17-42ae-b8ee-6535c8541aac
",
"execution_count": 1
12
,
"id": "
a988ae62
",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"[(5.549736485782388?, 1),\n",
" (-0.7748682428911940? - 0.01443345604526783?*I, 1),\n",
" (-0.7748682428911940? + 0.01443345604526783?*I, 1)]"
"Graphics object consisting of 1 graphics primitive"
]
},
"execution_count": 1
7
,
"execution_count": 1
12
,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"
f3.roots(
)"
"
plot(SR(f2),(x,0,3)
)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "b4fc68d2-c006-43ce-945d-f809360adb11",
"execution_count": null,
"id": "46ca4963",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 48,
"id": "9953eae5-e5d1-48f6-bda3-e464b1a6c6c1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3*x^3 - 12*x^2 - 24*x - 10"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a2 = 1\n",
"f3 = (-x)^d*f2(a2 + 1/x)\n",
"f3 =R(f3)\n",
"f3"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "0a66ff0f-dc17-42ae-b8ee-6535c8541aac",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(5.549736485782388?, 1),\n",
" (-0.7748682428911940? - 0.01443345604526783?*I, 1),\n",
" (-0.7748682428911940? + 0.01443345604526783?*I, 1)]"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f3.roots()"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "b4fc68d2-c006-43ce-945d-f809360adb11",
"metadata": {},
"outputs": [
{
...
...
@@ -593,7 +936,7 @@
"[5; 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, 2, 1, 3, ...]"
]
},
"execution_count":
18
,
"execution_count":
50
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -605,7 +948,7 @@
},
{
"cell_type": "code",
"execution_count":
20
,
"execution_count":
51
,
"id": "0c50aa3c-5f4c-4d34-bc2f-a5de911952b9",
"metadata": {},
"outputs": [
...
...
@@ -615,7 +958,7 @@
"55*x^3 - 81*x^2 - 33*x - 3"
]
},
"execution_count":
20
,
"execution_count":
51
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -629,7 +972,7 @@
},
{
"cell_type": "code",
"execution_count": 2
1
,
"execution_count":
5
2,
"id": "d99ecd1d-0a85-4ebb-a69b-546456037c87",
"metadata": {},
"outputs": [
...
...
@@ -641,7 +984,7 @@
" (-0.1731630422019992? + 0.00043279622203746?*I, 1)]"
]
},
"execution_count": 2
1
,
"execution_count":
5
2,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -711,22 +1054,79 @@
},
{
"cell_type": "code",
"execution_count":
55
,
"id": "
d742e1d1-7935-46ee-bd91-3037e9791149
",
"execution_count":
null
,
"id": "
01c2df55
",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "b300d674",
"metadata": {},
"source": [
"#12.3.4"
"#
#
12.3.4"
]
},
{
"cell_type": "code",
"execution_count": 67,
"execution_count": 28,
"id": "fd9f44d8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2; 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8, 1, 1, 10, 1, 1, 12, 1, 1, ...]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ec=continued_fraction(exp(1))\n",
"ec"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "6e09c672",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2; 1, 2]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ec[:3]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "25a8b5f3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 31,
"id": "cd9a0eb9-823a-46cf-a3ce-ce344d55ceb4",
"metadata": {},
"outputs": [],
"source": [
"a=
v
ec
tor([2,1,2,1,1,4])
\n",
"a=ec
[:12]
\n",
"N=len(a)\n",
"v=[]\n",
"v.append(vector([1,0]))\n",
...
...
@@ -735,7 +1135,7 @@
},
{
"cell_type": "code",
"execution_count":
68
,
"execution_count":
32
,
"id": "22b9d3bd-d905-4ecc-a841-0469335e7707",
"metadata": {},
"outputs": [
...
...
@@ -745,7 +1145,7 @@
"[(1, 0), (0, 1)]"
]
},
"execution_count":
68
,
"execution_count":
32
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -756,7 +1156,7 @@
},
{
"cell_type": "code",
"execution_count":
72
,
"execution_count":
33
,
"id": "a89b77b0-93bf-4c2a-82db-f1f1a7d99938",
"metadata": {},
"outputs": [],
...
...
@@ -767,17 +1167,30 @@
},
{
"cell_type": "code",
"execution_count":
7
3,
"execution_count": 3
4
,
"id": "5f5c0c05-47f0-4538-8046-1a75fe629b55",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(1, 0), (0, 1), (1, 2), (1, 3), (3, 8), (4, 11), (7, 19), (32, 87)]"
"[(1, 0),\n",
" (0, 1),\n",
" (1, 2),\n",
" (1, 3),\n",
" (3, 8),\n",
" (4, 11),\n",
" (7, 19),\n",
" (32, 87),\n",
" (39, 106),\n",
" (71, 193),\n",
" (465, 1264),\n",
" (536, 1457),\n",
" (1001, 2721),\n",
" (8544, 23225)]"
]
},
"execution_count":
7
3,
"execution_count": 3
4
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -788,17 +1201,28 @@
},
{
"cell_type": "code",
"execution_count":
77
,
"execution_count":
35
,
"id": "b8feab8b-f3ed-477c-8ee2-9f88a8728ea2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2, 3, 8/3, 11/4, 19/7, 87/32]"
"[2,\n",
" 3,\n",
" 8/3,\n",
" 11/4,\n",
" 19/7,\n",
" 87/32,\n",
" 106/39,\n",
" 193/71,\n",
" 1264/465,\n",
" 1457/536,\n",
" 2721/1001,\n",
" 23225/8544]"
]
},
"execution_count":
77
,
"execution_count":
35
,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -831,16 +1255,465 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
36
,
"id": "dcbebe47-9e94-4540-8f4d-99f1217ca1b0",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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c9xxx212n+Hh4TSbzY0eAABs2rjP0FVVlfe85z35yU9+kltvvfVVt7366qvzwQ9+ML/4xS+yfv36/Omf/mmuvvrq7Ljjjpvc/pOf/GQ+9alPvWK9M3QAAK807qDr6+vLN77xjaxevTq77777Zrd74IEHctRRR+WMM87IMccck6eeeipnnnlment7c+mll25yn+Hh4QwPD29YbjabmTlzpqADANiEcQXdokWLct1112XVqlWZNWvWq2570kkn5Re/+EWuuuqqDetWr16dww8/PD/60Y+y2267jXo899ABAGzemO6hq6oqCxcuzPLly3PTTTeNGnNJ8rOf/Sw77LDxYSZNmrTh8wEAsHXGFHR9fX25/PLLs2zZsnR1dWVoaChDQ0P5+c9/vmGbJUuWZP78+RuWjz/++CxfvjxLly7Nww8/nNtuuy2nnnpq3vGOd2TGjBmv3VcCALCdGtMl146Ojk2uv+yyy3LKKackSU455ZQ8+uijueWWWzb8+QUXXJCLL744jzzySN7whjfkyCOPzGc+85m86U1v2qLjuuQKALB5W/U6dNuKoAMA2Dzv5QoAUDhBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBB7/24x8njUarpwCAsRN0kOTjH0922SWZNi05//xWTwMAY9NRVVXV6iFG02w2U6/X02g0UqvVWj0OE8z3v5/ss89Lyx0dydq1I4EHACVo6zN0AwMD6enpSW9vb6tHYQIbHt54uaqSX/2qNbMAwHg4QwdJTjopufzykY9POy35x39s6TgAMCaCDn7tnnuSyZOTP/iDVk8CAGMzudUDQLt4+9tbPQEAjE9b30MHAMDoBB0AQOEEHQBA4QQdAEDhBB0AQOEEHQBA4bxsCdDWli0becyalZx7btLV1eqJxu+FF5Lly5Nf/CL5b/8ted3rWj3R1rnqquTuu5N3vSs55phWT7N1vv/95J//eeQt//76r5Oddmr1ROP3y18mF1888haGJ5208Vsbluj//t/k5ptHXlrqfe9r9TRb56mnkn/6p6SzM/mbv3lt/z7zwsJA27r55uTII19aPuGE5MorWzfP1nrf+5Jrrhn5+KCDkttuG/mLvURLl478QvqN665L3vOelo2zVZ58Mtl//+THPx5Zft/7RmK1VCee+NLPye/8TnLvvcnu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CtfWQTcwMJCenp709va2ehQAgLbVUVVV1eohRtNsNlOv19NoNFKr1Vo9DgBAW2nrM3QAAIxO0AEAFE7QAQAUTtABABRO0AEAFE7QAQAUTtABABRO0AEAFE7QAQAUTtABABRO0AEAFE7QAQAUTtABABRuTEHX39+f3t7edHV1pbu7O/PmzctDDz20xfvfdtttmTx5ct72treNdU4AADZjTEE3ODiYvr6+3HHHHVm5cmXWr1+fuXPnZt26daPu22g0Mn/+/Lz73e8e97AAALxSR1VV1Xh3Xrt2bbq7uzM4OJg5c+a86rYnnnhi9t5770yaNCnXXXdd1qxZs8XHaTabqdfraTQaqdVq4x0XAGBC2qp76BqNRpJk2rRpr7rdZZddlh/84Af5xCc+sTWHAwBgEyaPd8eqqrJ48eIcdthh2W+//Ta73fe///187GMfy6233prJk7fscMPDwxkeHt6w3Gw2xzsmAMCEN+4zdAsXLsy9996bK664YrPbvPDCC3n/+9+fT33qU9lnn322+HP39/enXq9veMycOXO8YwIATHjjuodu0aJFue6667Jq1arMmjVrs9v99Kc/ze/8zu9k0qRJG9a9+OKLqaoqkyZNyo033pgjjzzyFftt6gzdzJkz3UMHALAJY7rkWlVVFi1alGuvvTa33HLLq8ZcktRqtdx3330brbvoooty00035eqrr97s/p2dnens7BzLaAAA260xBV1fX1+WLVuW66+/Pl1dXRkaGkqS1Ov1TJ06NUmyZMmSPPnkk/nKV76SHXbY4RX313V3d2fKlCmvet8dAABbbkz30C1dujSNRiNHHHFEdttttw2PK6+8csM2Tz31VB5//PHXfFAAADZtq16HblvxOnQAAJvnvVwBAAon6AAACifoAAAKJ+gAAAon6AAACifoAAAKJ+gAAAon6AAACifoAAAKJ+gAAAon6AAACifoAAAKJ+gAAAon6AAACtfWQTcwMJCenp709va2ehQAgLbVUVVV1eohRtNsNlOv19NoNFKr1Vo9DgBAW2nrM3QAAIxO0AEAFE7QAQAUTtABABRO0AEAFE7QAQAUTtABABRO0AEAFE7QAQAUTtABABRO0AEAFE7QAQAUTtABABRO0AEAFE7QAQAUTtABABRO0AEAFE7QAQAUrq2DbmBgID09Pent7W31KAAAbaujqqqq1UOMptlspl6vp9FopFartXocAIC20tZn6AAAGJ2gAwAonKADACicoAMAKJygAwAonKADACicoAMAKJygAwAonKADACicoAMAKJygAwAonKADACicoAMAKJygAwAonKADACicoAMAKJygAwAoXFsH3cDAQHp6etLb29vqUQAA2lZHVVVVq4cYTbPZTL1eT6PRSK1Wa/U4AABtpa3P0AEAMDpBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBBwBQuDEFXX9/f3p7e9PV1ZXu7u7MmzcvDz300Kvus3z58hx99NH53d/93dRqtRx88MH5l3/5l60aGgCAl4wp6AYHB9PX15c77rgjK1euzPr16zN37tysW7dus/usWrUqRx99dG644Ybcfffdede73pXjjz8+99xzz1YPDwBA0lFVVTXendeuXZvu7u4MDg5mzpw5W7zfvvvumz//8z/P3/7t327R9s1mM/V6PY1GI7VabbzjAgBMSJO3ZudGo5EkmTZt2hbv8+KLL+a555571X2Gh4czPDy8YbnZbI5/SACACW7c/yiiqqosXrw4hx12WPbbb78t3u/zn/981q1blxNOOGGz2/T396der294zJw5c7xjAgBMeOO+5NrX15dvfOMbWb16dXbfffct2ueKK67IRz7ykVx//fU56qijNrvdps7QzZw50yVXAIBNGNcl10WLFmXFihVZtWrVFsfclVdemQ9/+MO56qqrXjXmkqSzszOdnZ3jGQ0AYLszpqCrqiqLFi3Ktddem1tuuSWzZs3aov2uuOKKfOhDH8oVV1yR4447blyDAgCwaWMKur6+vixbtizXX399urq6MjQ0lCSp1+uZOnVqkmTJkiV58skn85WvfCXJSMzNnz8/X/jCF/JHf/RHG/aZOnVq6vX6a/m1AABsl8Z0D11HR8cm11922WU55ZRTkiSnnHJKHn300dxyyy1JkiOOOCKDg4Ov2Ofkk0/Ol7/85S06rpctAQDYvK16HbptRdABAGye93IFACicoAMAKJygAwAonKADACicoAMAKJygAwAonKADACicoAMAKJygAwAonKADACicoAMAKJygAwAonKADAChcWwfdwMBAenp60tvb2+pRAADaVkdVVVWrhxhNs9lMvV5Po9FIrVZr9TgAAG2lrc/QAQAwOkEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAUDhBBwBQOEEHAFA4QQcAULi2DrqBgYH09PSkt7e31aMAALStjqqqqlYPMZpms5l6vZ5Go5FardbqcQAA2kpbn6EDAGB0gg4AoHCCDgCgcIIOAKBwgg4AoHCCDgCgcIIOAKBwgg4AoHCCDgCgcIIOAKBwgg4AoHCCDgCgcIIOAKBwgg4AoHCCDgCgcIIOAKBwgg4AoHCCDgCgcG0ddAMDA+np6Ulvb2+rRwEAaFsdVVVVrR5iNM1mM/V6PY1GI7VardXjAAC0lbY+QwcAwOgEHQBA4QQdAEDhBB0AQOEEHQBA4QQdAEDhBB0AQOEEHQBA4QQdAEDhBB0AQOEEHQBA4QQdAEDhBB0AQOHGFHT9/f3p7e1NV1dXuru7M2/evDz00EOj7jc4OJiDDjooU6ZMyV577ZWLL7543AMDALCxMQXd4OBg+vr6cscdd2TlypVZv3595s6dm3Xr1m12n0ceeSTHHntsDj/88Nxzzz05++yzc+qpp+aaa67Z6uEBAEg6qqqqxrvz2rVr093dncHBwcyZM2eT25x11llZsWJFHnzwwQ3rFixYkO9+97u5/fbbRz3GTTcln/98MzfcUM9DDzWyzz618Y4LADAhbdU9dI1GI0kybdq0zW5z++23Z+7cuRutO+aYY3LXXXflV7/61Sb3GR4eTrPZzD33NPPHf9zMDTc0kyR//udbMy0AwMQ07qCrqiqLFy/OYYcdlv3222+z2w0NDWX69OkbrZs+fXrWr1+fZ599dpP79Pf3p16v58AD6/nlL+tJZiZJ1qxJXnhhvBMDAExM4w66hQsX5t57780VV1wx6rYdHR0bLf/mKu9vr/+NJUuWpNFo5N//vZHXv76R5IkkySGHJJMmjXdiAICJaVxBt2jRoqxYsSI333xzdt9991fddtddd83Q0NBG65555plMnjw5u+yyyyb36ezsTK1Wy7771jI4WMvJJ4/cN7cF7QgAsN0ZU9BVVZWFCxdm+fLluemmmzJr1qxR9zn44IOzcuXKjdbdeOONmT17dnbcccdR9z/wwOSLXxz5+A1vGMu0AADbhzEFXV9fXy6//PIsW7YsXV1dGRoaytDQUH7+859v2GbJkiWZP3/+huUFCxbksccey+LFi/Pggw/mS1/6Ui699NJ89KMffe2+CgCA7diYXrZkc/e8XXbZZTnllFOSJKecckoeffTR3HLLLRv+fHBwMGeccUbuv//+zJgxI2eddVYWLFiwxUM2m83U6/U0Go3Ual62BADg5bbqdei2FUEHALB53ssVAKBwgg4AoHBFXHKtqirPPfdcurq6NnsfHwDA9qqIoAMAYPNccgUAKJygAwAonKADACicoAMAKJygAwAonKADACicoAMAKJygAwAonKADACicoAMAKNzkVh34N+/PCgDA5m3Je9m3LOiee+651Ov1Vh0eAKAIjUYjtVrtVbfpqKqq2kbzbGQsZ+iazWZmzpyZJ554YtQvaGv19vbmzjvvLP4Y2+o42+q5mUjfs21xnIn2M7OtjjORfmaSifM921bH8dy073G29981bX2GrqOjY8xPSq1W+y//IZs0adKEOMa2PE7yX//cTLTv2bY6zkT5mdlWx5lIPzPJxPqeeW7a8xjb8jiJ3zWvxj+K+C19fX0T4hjb8jjbwkT7nnlu2vM4E+l5SSbW98xz057H2JbH2RZK/p617JLrWDSbzdTr9S26hsy25blpT56X9uW5aV+em/bluRldEWfoOjs784lPfCKdnZ2tHoXf4rlpT56X9uW5aV+em/bluRldEWfoAADYvCLO0AEAsHmCDgCgcIIOAKBwgg4AoHBtH3QXXXRRZs2alSlTpuSggw7Krbfe2uqRtnv9/f3p7e1NV1dXuru7M2/evDz00EOtHotN6O/vT0dHR04//fRWj0KSJ598Mn/5l3+ZXXbZJTvvvHPe9ra35e677271WNu19evX5+Mf/3hmzZqVqVOnZq+99srf/d3f5cUXX2z1aNudVatW5fjjj8+MGTPS0dGR6667bqM/r6oqn/zkJzNjxoxMnTo1RxxxRO6///7WDNuG2jrorrzyypx++uk555xzcs899+Twww/PH//xH+fxxx9v9WjbtcHBwfT19eWOO+7IypUrs379+sydOzfr1q1r9Wi8zJ133plLLrkk+++/f6tHIclPfvKTHHroodlxxx3zzW9+Mw888EA+//nP5w1veEOrR9uufeYzn8nFF1+cCy+8MA8++GDOO++8fPazn80FF1zQ6tG2O+vWrcsBBxyQCy+8cJN/ft555+X888/PhRdemDvvvDO77rprjj766C1+G9GJrq1ftuQP//APc+CBB2bp0qUb1r31rW/NvHnz0t/f38LJeLm1a9emu7s7g4ODmTNnTqvHIcnzzz+fAw88MBdddFH+/u//Pm9729vyj//4j60ea7v2sY99LLfddpurDG3mT/7kTzJ9+vRceumlG9a9973vzc4775x//ud/buFk27eOjo5ce+21mTdvXpKRs3MzZszI6aefnrPOOitJMjw8nOnTp+czn/lM/uqv/qqF07aHtj1D98tf/jJ333135s6du9H6uXPn5tvf/naLpmJTGo1GkmTatGktnoTf6Ovry3HHHZejjjqq1aPwaytWrMjs2bPzZ3/2Z+nu7s7b3/72/NM//VOrx9ruHXbYYfnXf/3XfO9730uSfPe7383q1atz7LHHtngyXu6RRx7J0NDQRk3Q2dmZd77znZrg1ya3eoDNefbZZ/PCCy9k+vTpG62fPn16hoaGWjQVv62qqixevDiHHXZY9ttvv1aPQ5Kvfe1r+bd/+7fceeedrR6Fl3n44YezdOnSLF68OGeffXa+853v5NRTT01nZ2fmz5/f6vG2W2eddVYajUbe8pa3ZNKkSXnhhRfy6U9/On/xF3/R6tF4md/83t9UEzz22GOtGKnttG3Q/UZHR8dGy1VVvWIdrbNw4cLce++9Wb16datHIckTTzyR0047LTfeeGOmTJnS6nF4mRdffDGzZ8/OueeemyR5+9vfnvvvvz9Lly4VdC105ZVX5vLLL8+yZcuy7777Zs2aNTn99NMzY8aMnHzyya0ej9+iCTavbYPujW98YyZNmvSKs3HPPPPMKwqd1li0aFFWrFiRVatWZffdd2/1OCS5++6788wzz+Sggw7asO6FF17IqlWrcuGFF2Z4eDiTJk1q4YTbr9122y09PT0brXvrW9+aa665pkUTkSRnnnlmPvaxj+XEE09MkvzBH/xBHnvssfT39wu6NrLrrrsmGTlTt9tuu21Yrwle0rb30O2000456KCDsnLlyo3Wr1y5MoccckiLpiIZ+T+ihQsXZvny5bnpppsya9asVo/Er7373e/OfffdlzVr1mx4zJ49Ox/4wAeyZs0aMddChx566Cte3ud73/te9txzzxZNRJL87Gc/yw47bPyrcNKkSV62pM3MmjUru+6660ZN8Mtf/jKDg4Oa4Nfa9gxdkixevDgnnXRSZs+enYMPPjiXXHJJHn/88SxYsKDVo23X+vr6smzZslx//fXp6uracBa1Xq9n6tSpLZ5u+9bV1fWKexlf97rXZZdddnGPY4udccYZOeSQQ3LuuefmhBNOyHe+851ccsklueSSS1o92nbt+OOPz6c//ensscce2XfffXPPPffk/PPPz4c+9KFWj7bdef755/Mf//EfG5YfeeSRrFmzJtOmTcsee+yR008/Peeee2723nvv7L333jn33HOz88475/3vf38Lp24jVZsbGBio9txzz2qnnXaqDjzwwGpwcLDVI233kmzycdlll7V6NDbhne98Z3Xaaae1egyqqvr6179e7bffflVnZ2f1lre8pbrkkktaPdJ2r9lsVqeddlq1xx57VFOmTKn22muv6pxzzqmGh4dbPdp25+abb97k75aTTz65qqqqevHFF6tPfOIT1a677lp1dnZWc+bMqe67777WDt1G2vp16AAAGF3b3kMHAMCWEXQAAIUTdAAAhRN0AACFE3QAAIUTdAAAhRN0AACFE3QAAIUTdAAAhRN0AACFE3QAAIUTdAAAhfv/V1k6/lzS4CcAAAAASUVORK5CYII=\n",
"text/plain": [
"Graphics object consisting of 1 graphics primitive"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list_plot(conve)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "70755b4a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"Graphics object consisting of 1 graphics primitive"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list_plot(v,aspect_ratio=1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bc21d88d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "de8187ff",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "91a54c73",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "d6da924d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 113,
"id": "a945b6b8",
"metadata": {},
"outputs": [],
"source": [
"# Periodiska KB"
]
},
{
"cell_type": "code",
"execution_count": 147,
"id": "1ea536b5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(15, 25, 175, 5*sqrt(7))"
]
},
"execution_count": 147,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#initialisering\n",
"N=20\n",
"alpha = vector(SR,[0 for _ in range(N)])\n",
"a = vector([0 for _ in range(N)])\n",
"t = vector(SR,[0 for _ in range(N)])\n",
"P = vector([0 for _ in range(N)])\n",
"Q = vector([0 for _ in range(N)])\n",
"d=7\n",
"\n",
"P[0] = 3\n",
"Q[0] = 5\n",
"c = Q[0]\n",
"P[0], Q[0], d = c*P[0], c*Q[0], d*c^2\n",
"sqrtd = sqrt(d)\n",
"P[0], Q[0], d, sqrtd"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "60fbe63e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "2b2044c7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 156,
"id": "e8d81086",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0 (15 +sqrt(175))/25 = 1/5*sqrt(7) + 3/5 = 1 + (1/5*sqrt(7) - 2/5)\n",
" 1 (10 +sqrt(175))/3 = 5/3*sqrt(7) + 10/3 = 7 + (5/3*sqrt(7) - 11/3)\n",
" 2 (11 +sqrt(175))/18 = 5/18*sqrt(7) + 11/18 = 1 + (5/18*sqrt(7) - 7/18)\n",
" 3 (7 +sqrt(175))/7 = 5/7*sqrt(7) + 1 = 2 + (5/7*sqrt(7) - 1)\n",
" 4 (7 +sqrt(175))/18 = 5/18*sqrt(7) + 7/18 = 1 + (5/18*sqrt(7) - 11/18)\n",
" 5 (11 +sqrt(175))/3 = 5/3*sqrt(7) + 11/3 = 8 + (5/3*sqrt(7) - 13/3)\n",
" 6 (13 +sqrt(175))/2 = 5/2*sqrt(7) + 13/2 = 13 + (5/2*sqrt(7) - 13/2)\n",
" 7 (13 +sqrt(175))/3 = 5/3*sqrt(7) + 13/3 = 8 + (5/3*sqrt(7) - 11/3)\n",
" 8 (11 +sqrt(175))/18 = 5/18*sqrt(7) + 11/18 = 1 + (5/18*sqrt(7) - 7/18)\n",
" 9 (7 +sqrt(175))/7 = 5/7*sqrt(7) + 1 = 2 + (5/7*sqrt(7) - 1)\n",
" 10 (7 +sqrt(175))/18 = 5/18*sqrt(7) + 7/18 = 1 + (5/18*sqrt(7) - 11/18)\n",
" 11 (11 +sqrt(175))/3 = 5/3*sqrt(7) + 11/3 = 8 + (5/3*sqrt(7) - 13/3)\n",
" 12 (13 +sqrt(175))/2 = 5/2*sqrt(7) + 13/2 = 13 + (5/2*sqrt(7) - 13/2)\n",
" 13 (13 +sqrt(175))/3 = 5/3*sqrt(7) + 13/3 = 8 + (5/3*sqrt(7) - 11/3)\n",
" 14 (11 +sqrt(175))/18 = 5/18*sqrt(7) + 11/18 = 1 + (5/18*sqrt(7) - 7/18)\n",
" 15 (7 +sqrt(175))/7 = 5/7*sqrt(7) + 1 = 2 + (5/7*sqrt(7) - 1)\n",
" 16 (7 +sqrt(175))/18 = 5/18*sqrt(7) + 7/18 = 1 + (5/18*sqrt(7) - 11/18)\n",
" 17 (11 +sqrt(175))/3 = 5/3*sqrt(7) + 11/3 = 8 + (5/3*sqrt(7) - 13/3)\n",
" 18 (13 +sqrt(175))/2 = 5/2*sqrt(7) + 13/2 = 13 + (5/2*sqrt(7) - 13/2)\n"
]
}
],
"source": [
"\n",
"for k in range(N-1):\n",
" alpha[k] = (P[k] + sqrtd)/Q[k]\n",
" a[k] = floor(alpha[k])\n",
" t[k] = alpha[k] - a[k]\n",
" P[k+1] = a[k]*Q[k] - P[k]\n",
" Q[k+1] = (d-P[k+1]^2)/Q[k]\n",
" print(f\"{k : >3} ({P[k]} +sqrt({d}))/{Q[k]} = { alpha[k]} = {a[k]} + ({t[k]})\")"
]
},
{
"cell_type": "code",
"execution_count": 149,
"id": "a32e4b8a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1; 7, 1, 2, 1, 8, 13, 8, 1, 2, 1, 8, 13, 8, 1, 2, 1, 8, 13, 8, ...]"
]
},
"execution_count": 149,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"continued_fraction(alpha[0])"
]
},
{
"cell_type": "code",
"execution_count": 150,
"id": "eb8056ec",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1/5*sqrt(7) - 2/5"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t[0]"
]
},
{
"cell_type": "code",
"execution_count": 151,
"id": "e5f91d32",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5/(sqrt(7) - 2)"
]
},
"execution_count": 151,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1/t[0]"
]
},
{
"cell_type": "code",
"execution_count": 152,
"id": "2f142363",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5/3*sqrt(7) + 10/3"
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha[1]"
]
},
{
"cell_type": "code",
"execution_count": 153,
"id": "b80c955d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10, 3)"
]
},
"execution_count": 153,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"P[1], Q[1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b8271bda",
"metadata": {},
"outputs": [],
"source": [
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3b01a838",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "74450347",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 159,
"id": "32a6f9f4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3/2*sqrt(5) - 5/2"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c1=(3*sqrt(5)-5)/2\n",
"c1"
]
},
{
"cell_type": "code",
"execution_count": 160,
"id": "27b5b213",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0; 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, ...]"
]
},
"execution_count": 160,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"continued_fraction(c1)"
]
},
{
"cell_type": "code",
"execution_count": 161,
"id": "d05d9322",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1; 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, ...]"
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"continued_fraction(1/c1)"
]
},
{
"cell_type": "code",
"execution_count": 163,
"id": "c890c08e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.17082039324994"
]
},
"execution_count": 163,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numerical_approx(1/c1)"
]
},
{
"cell_type": "code",
"execution_count": 164,
"id": "d91e2d39",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2/(3*sqrt(5) - 5)"
]
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1/c1"
]
},
{
"cell_type": "code",
"execution_count": 169,
"id": "a3e5b318",
"metadata": {},
"outputs": [],
"source": [
"d1=1/c1"
]
},
{
"cell_type": "code",
"execution_count": 172,
"id": "d99006ca",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(x - 1.170820393249937?) * (x + 0.1708203932499369?)"
]
},
"execution_count": 172,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d1.minpoly().change_ring(QQbar).factor()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "96dd6c78",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "SageMath 10.
2.beta9
",
"display_name": "SageMath 10.
1
",
"language": "sage",
"name": "sagemath"
},
...
...
@@ -854,7 +1727,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.
1
"
"version": "3.11.
6
"
}
},
"nbformat": 4,
...
...
%% Cell type:code id:a0564571-faf2-47f7-80b8-6b93da370de6 tags:
%% Cell type:markdown id:84d0f462 tags:
# Rosen kap 12.3
%% Cell type:markdown id:82be3b57 tags:
## 12.3.1c
%% Cell type:code id:c1cc2bbd tags:
```
sage
# 12.3.1c
```
%% Cell type:code id:97f1a9eb-89f3-493e-a564-9ceed016b7ba tags:
```
sage
N=
6
N=
10
alpha = vector(QQbar,[0 for _ in range(N)])
a = vector(QQbar,[0 for _ in range(N)])
t = vector(QQbar,[0 for _ in range(N)])
```
%% Cell type:code id:43236aea-32a2-4b2e-ad87-674ea0443341 tags:
```
sage
```
%% Cell type:code id:4c58f2d2-829b-4e8e-8b41-e18241a04c39 tags:
```
sage
alpha[0] = sqrt(5)
```
%% Cell type:code id:6a2f74bb tags:
```
sage
alpha[0]
```
%% Output
2.236067977499790?
%% Cell type:code id:48a2ac86 tags:
```
sage
alpha[0].minpoly()
```
%% Output
x^2 - 5
%% Cell type:code id:3355ee27 tags:
```
sage
```
%% Cell type:code id:1d1f5708 tags:
```
sage
alpha[0].radical_expression()
```
%% Output
sqrt(5)
%% Cell type:code id:d239123d-8f1d-4c2a-8723-e488035f4882 tags:
```
sage
alpha[0] = sqrt(5)
for k in range(N-1):
a[k], t[k] = floor(alpha[k]), alpha[k] - floor(alpha[k])
alpha[k+1] = 1 / t[k]
print(k,alpha[k], a[k], t[k])
print(f"{k : >5} {alpha[k] } {alpha[k].radical_expression()} {a[k] } {t[k] } {t[k].radical_expression()}")
```
%% Output
0 2.236067977499790? sqrt(5) 2 0.2360679774997897? sqrt(5) - 2
1 4.236067977499789? sqrt(5) + 2 4 0.2360679774997897? sqrt(5) - 2
2 4.236067977499789? sqrt(5) + 2 4 0.2360679774997897? sqrt(5) - 2
3 4.23606797749979? sqrt(5) + 2 4 0.23606797749979? sqrt(5) - 2
4 4.2360679774998? sqrt(5) + 2 4 0.2360679774998? sqrt(5) - 2
5 4.236067977500? sqrt(5) + 2 4 0.236067977500? sqrt(5) - 2
6 4.23606797750? sqrt(5) + 2 4 0.23606797750? sqrt(5) - 2
7 4.236067978? sqrt(5) + 2 4 0.236067978? sqrt(5) - 2
8 4.236067977499789? sqrt(5) + 2 4 0.2360679774997897? sqrt(5) - 2
%% Cell type:code id:8bca7737 tags:
```
sage
alpha[3]
```
%% Output
0 2.236067977499790? 2 0.2360679774997897?
1 4.236067977499789? 4 0.2360679774997897?
2 4.236067977499789? 4 0.2360679774997897?
3 4.23606797749979? 4 0.23606797749979?
4 4.2360679774998? 4 0.2360679774998?
4.236067977499789?
%% Cell type:code id:8688c62b tags:
```
sage
alpha[3].minpoly()
```
%% Output
x^2 - 4*x - 1
%% Cell type:code id:f64ad389 tags:
```
sage
```
%% Cell type:code id:900adcfb tags:
```
sage
```
%% Cell type:code id:91e64dfc-7d82-41da-97a3-907b70fb04cf tags:
```
sage
continued_fraction(alpha[0])
```
%% Output
[2; 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...]
%% Cell type:code id:23bc6e7f tags:
```
sage
continued_fraction(t[0])
```
%% Output
[0; 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...]
%% Cell type:code id:4805e461-de3a-4ad1-b68b-0ac1254a9fa2 tags:
```
sage
continued_fraction(alpha[1])
```
%% Output
[4; 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...]
%% Cell type:code id:74e5c6b5-4141-48a2-9ed0-5145ec962206 tags:
```
sage
continued_fraction(t[1])
```
%% Output
[0; 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, ...]
%% Cell type:code id:ce40fb53-525d-4778-ab65-d3b9de12fd0a tags:
```
sage
```
%% Cell type:code id:5069fea6 tags:
```
sage
```
%% Cell type:code id:48ef12c1 tags:
```
sage
```
%% Cell type:code id:727be0d3 tags:
```
sage
```
%% Cell type:code id:1e494570 tags:
```
sage
# annat exempel med periodisk kb
```
%% Cell type:code id:5f179ca2-6fe2-4acf-8ee5-efc16c9f92d7 tags:
```
sage
alpha[0] = sqrt(19)-1
for k in range(N-1):
a[k], t[k] = floor(alpha[k]), alpha[k] - floor(alpha[k])
alpha[k+1] = 1 / t[k]
print(k,alpha[k],
a[k], t[k]
)
print(k,alpha[k],
alpha[k].radical_expression(), a[k], t[k], t[k].radical_expression()
)
```
%% Output
0 3.358898943540674? 3 0.3588989435406736?
1 2.786299647846891? 2 0.7862996478468912?
2 1.271779788708135? 1 0.2717797887081347?
3 3.679449471770337? 3 0.679449471770337?
4 1.471779788708135? 1 0.471779788708135?
0 3.358898943540674? sqrt(19) - 1 3 0.3588989435406736? sqrt(19) - 4
1 2.786299647846891? 1/3*sqrt(19) + 4/3 2 0.7862996478468912? 1/3*sqrt(19) - 2/3
2 1.271779788708135? 1/5*sqrt(19) + 2/5 1 0.2717797887081347? 1/5*sqrt(19) - 3/5
3 3.679449471770337? 1/2*sqrt(19) + 3/2 3 0.6794494717703368? 1/2*sqrt(19) - 3/2
4 1.471779788708135? 1/5*sqrt(19) + 3/5 1 0.4717797887081347? 1/5*sqrt(19) - 2/5
5 2.119632981180225? 1/3*sqrt(19) + 2/3 2 0.11963298118022452? 1/3*sqrt(19) - 4/3
6 8.358898943540674? sqrt(19) + 4 8 0.3588989435406736? sqrt(19) - 4
7 2.786299647846891? 1/3*sqrt(19) + 4/3 2 0.7862996478468912? 1/3*sqrt(19) - 2/3
8 1.271779788708135? 1/5*sqrt(19) + 2/5 1 0.2717797887081347? 1/5*sqrt(19) - 3/5
%% Cell type:code id:befb67c1-8720-4d6f-88da-1920b91edfab tags:
```
sage
continued_fraction(alpha[0])
```
%% Output
[3; 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, ...]
%% Cell type:code id:73ca37dd-732c-4614-87e5-f546b69ff166 tags:
```
sage
continued_fraction(t[0])
```
%% Output
[0; 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, ...]
%% Cell type:code id:3e32ecf1-bb17-4e8c-88cc-ab86cb26c262 tags:
```
sage
continued_fraction(1/t[0])
```
%% Output
[2; 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, 1, ...]
%% Cell type:code id:ad4f7e53-2f82-4592-b1b1-ce52cc96373f tags:
```
sage
continued_fraction(a[0] + t[0])
```
%% Output
[3; 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, ...]
%% Cell type:code id:2a3daa68-23ea-4292-b642-b9b293468494 tags:
```
sage
continued_fraction(a[0] + 1/(a[1] +t[1]))
```
%% Output
[3; 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, 1, 3, 1, 2, 8, 2, ...]
%% Cell type:code id:e33f1445-ebf7-4ad9-8441-093613207188 tags:
```
sage
```
%% Cell type:code id:1c92946d-cb2e-458f-967e-c10cc12be1aa tags:
```
sage
```
%% Cell type:code id:e5b2db5f-d125-43eb-837f-27896ceabd02 tags:
```
sage
```
%% Cell type:
code id:44991d26-ebed-44ad-9883-e49b90842e8e
tags:
%% Cell type:
markdown id:f9d5feb9
tags:
```
sage
#12.3.2.a
```
## 12.3.2.a
%% Cell type:code id:a05c12c9-9df9-464d-b932-62a81a1d4429 tags:
```
sage
R.
<x>
= QQbar[]
f0 = x^3-2
d=3
```
%% Cell type:code id:7ffc1d57-0784-4119-825f-32f5459cc945 tags:
```
sage
[(j,f0(j)) for j in range(8)]
```
%% Output
[(0, -2), (1, -1), (2, 6), (3, 25), (4, 62), (5, 123), (6, 214), (7, 341)]
%% Cell type:code id:1f050106-4454-441f-ab17-869bb1e7deb9 tags:
```
sage
f0.roots()
```
%% Output
[(1.259921049894873?, 1),
(-0.6299605249474365? - 1.091123635971722?*I, 1),
(-0.6299605249474365? + 1.091123635971722?*I, 1)]
%% Cell type:code id:3327b8b5-8e8e-4f34-97d0-8b24e06410e2 tags:
```
sage
alfa0=f0.roots()
[
0
][
0
]
alfa0
```
%% Output
1.259921049894873?
%% Cell type:code id:4ddb6330-657c-4387-b902-6e055b0097b0 tags:
```
sage
continued_fraction(alfa0)
```
%% Output
[1; 3, 1, 5, 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, ...]
%% Cell type:raw id:d800b558-13db-47be-be2c-a1a878594129 tags:
%% Cell type:code id:78e5e15c-0cc0-4dff-a8a2-5693f4b4a339 tags:
```
sage
a0 = 1
f1 = (-x)^d
*
f0(a0 + 1/x)
f1 =R(f1)
f1
```
%% Output
x^3 - 3*x^2 - 3*x - 1
%% Cell type:code id:d2cae2a9 tags:
```
sage
f0(a0 + 1/x)
```
%% Output
(-x^3 + 3*x^2 + 3*x + 1)/x^3
%% Cell type:code id:3d7595ea tags:
```
sage
[(j,f1(j)) for j in range(8)]
```
%% Output
[(0, -1), (1, -6), (2, -11), (3, -10), (4, 3), (5, 34), (6, 89), (7, 174)]
%% Cell type:code id:5d9d0f98-5ecc-4e6a-b074-813c329fdbf1 tags:
```
sage
f1.roots()
```
%% Output
[(3.847322101863073?, 1),
(-0.4236610509315363? - 0.2836060010268813?*I, 1),
(-0.4236610509315363? + 0.2836060010268813?*I, 1)]
%% Cell type:code id:c54abfa7-4930-4a3f-9c2c-3bf05d5b32a0 tags:
```
sage
alfa1=f1.roots()
[
0
][
0
]
continued_fraction(alfa1)
```
%% Output
[3; 1, 5, 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, 2, ...]
%% Cell type:code id:5801d40e-a2a8-46e9-bdd9-39b33d52f83f tags:
```
sage
a1 = 3
f2 = (-x)^d
*
f1(a1 + 1/x)
f2 =R(f2)
f2
```
%% Output
10*x^3 - 6*x^2 - 6*x - 1
%% Cell type:code id:b0a535b5 tags:
```
sage
[(j,f2(j)) for j in range(8)]
```
%% Output
[(0, -1),
(1, -3),
(2, 43),
(3, 197),
(4, 519),
(5, 1069),
(6, 1907),
(7, 3093)]
%% Cell type:code id:c4c0bc9d-9bbf-4d8d-b063-d1dc78245ff6 tags:
```
sage
f2.roots()
```
%% Output
[(1.180188735548410?, 1),
(-0.2900943677742046? - 0.02403056328910778?*I, 1),
(-0.2900943677742046? + 0.02403056328910778?*I, 1)]
%% Cell type:code id:c049c466-ebf9-4853-9ebf-2be2a169b069 tags:
```
sage
alfa2=f2.roots()
[
0
][
0
]
continued_fraction(alfa2)
```
%% Output
[1; 5, 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, 2, 1, ...]
%% Cell type:code id:47f04c9b tags:
```
sage
alfa2
```
%% Output
1.180188735548410?
%% Cell type:code id:a988ae62 tags:
```
sage
plot(SR(f2),(x,0,3))
```
%% Output
Graphics object consisting of 1 graphics primitive
%% Cell type:code id:46ca4963 tags:
```
sage
```
%% Cell type:code id:9953eae5-e5d1-48f6-bda3-e464b1a6c6c1 tags:
```
sage
a2 = 1
f3 = (-x)^d
*
f2(a2 + 1/x)
f3 =R(f3)
f3
```
%% Output
3*x^3 - 12*x^2 - 24*x - 10
%% Cell type:code id:0a66ff0f-dc17-42ae-b8ee-6535c8541aac tags:
```
sage
f3.roots()
```
%% Output
[(5.549736485782388?, 1),
(-0.7748682428911940? - 0.01443345604526783?*I, 1),
(-0.7748682428911940? + 0.01443345604526783?*I, 1)]
%% Cell type:code id:b4fc68d2-c006-43ce-945d-f809360adb11 tags:
```
sage
alfa3=f3.roots()
[
0
][
0
]
continued_fraction(alfa3)
```
%% Output
[5; 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, 2, 1, 3, ...]
%% Cell type:code id:0c50aa3c-5f4c-4d34-bc2f-a5de911952b9 tags:
```
sage
a3 = 5
f4 = (-x)^d
*
f3(a3 + 1/x)
f4 =R(f4)
f4
```
%% Output
55*x^3 - 81*x^2 - 33*x - 3
%% Cell type:code id:d99ecd1d-0a85-4ebb-a69b-546456037c87 tags:
```
sage
f4.roots()
```
%% Output
[(1.819053357131272?, 1),
(-0.1731630422019992? - 0.00043279622203746?*I, 1),
(-0.1731630422019992? + 0.00043279622203746?*I, 1)]
%% Cell type:code id:c72bd901-5e62-4abf-ab21-758fc8a6d91d tags:
```
sage
alfa4=f4.roots()
[
0
][
0
]
continued_fraction(alfa4)
```
%% Output
[1; 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, 2, 1, 3, 4, ...]
%% Cell type:code id:468aa920-5d96-4aba-af0d-906c8823f6c4 tags:
```
sage
continued_fraction(2^(1/3))
```
%% Output
[1; 3, 1, 5, 1, 1, 4, 1, 1, 8, 1, 14, 1, 10, 2, 1, 4, 12, 2, 3, ...]
%% Cell type:code id:73ee5ba0-8a57-4afc-a637-3ef24d89ad58 tags:
```
sage
```
%% Cell type:code id:c9930f4b-758a-4edd-b462-827914d8f867 tags:
```
sage
```
%% Cell type:code id:d742e1d1-7935-46ee-bd91-3037e9791149 tags:
%% Cell type:code id:01c2df55 tags:
```
sage
```
%% Cell type:markdown id:b300d674 tags:
## 12.3.4
%% Cell type:code id:fd9f44d8 tags:
```
sage
ec=continued_fraction(exp(1))
ec
```
%% Output
[2; 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8, 1, 1, 10, 1, 1, 12, 1, 1, ...]
%% Cell type:code id:6e09c672 tags:
```
sage
ec[:3]
```
%% Output
[2; 1, 2]
%% Cell type:code id:25a8b5f3 tags:
```
sage
#12.3.4
```
%% Cell type:code id:cd9a0eb9-823a-46cf-a3ce-ce344d55ceb4 tags:
```
sage
a=
v
ec
tor([2,1,2,1,1,4])
a=ec
[:12]
N=len(a)
v=[]
v.append(vector([1,0]))
v.append(vector([0,1]))
```
%% Cell type:code id:22b9d3bd-d905-4ecc-a841-0469335e7707 tags:
```
sage
v
```
%% Output
[(1, 0), (0, 1)]
%% Cell type:code id:a89b77b0-93bf-4c2a-82db-f1f1a7d99938 tags:
```
sage
for k in range(N):
v.append(a[k]
*
v[-1] + v[-2])
```
%% Cell type:code id:5f5c0c05-47f0-4538-8046-1a75fe629b55 tags:
```
sage
v
```
%% Output
[(1, 0), (0, 1), (1, 2), (1, 3), (3, 8), (4, 11), (7, 19), (32, 87)]
[(1, 0),
(0, 1),
(1, 2),
(1, 3),
(3, 8),
(4, 11),
(7, 19),
(32, 87),
(39, 106),
(71, 193),
(465, 1264),
(536, 1457),
(1001, 2721),
(8544, 23225)]
%% Cell type:code id:b8feab8b-f3ed-477c-8ee2-9f88a8728ea2 tags:
```
sage
conve =[c[1]/c[0] for c in v[2:]]
conve
```
%% Output
[2, 3, 8/3, 11/4, 19/7, 87/32]
[2,
3,
8/3,
11/4,
19/7,
87/32,
106/39,
193/71,
1264/465,
1457/536,
2721/1001,
23225/8544]
%% Cell type:code id:a560f987-04f8-40a1-8b1e-366949e8464e tags:
```
sage
conve[5] - conve[4]
```
%% Output
1/224
%% Cell type:code id:dcbebe47-9e94-4540-8f4d-99f1217ca1b0 tags:
```
sage
list_plot(conve)
```
%% Output
Graphics object consisting of 1 graphics primitive
%% Cell type:code id:70755b4a tags:
```
sage
list_plot(v,aspect_ratio=1)
```
%% Output
Graphics object consisting of 1 graphics primitive
%% Cell type:code id:bc21d88d tags:
```
sage
```
%% Cell type:code id:de8187ff tags:
```
sage
```
%% Cell type:code id:91a54c73 tags:
```
sage
```
%% Cell type:code id:d6da924d tags:
```
sage
```
%% Cell type:code id:a945b6b8 tags:
```
sage
# Periodiska KB
```
%% Cell type:code id:1ea536b5 tags:
```
sage
#initialisering
N=20
alpha = vector(SR,[0 for _ in range(N)])
a = vector([0 for _ in range(N)])
t = vector(SR,[0 for _ in range(N)])
P = vector([0 for _ in range(N)])
Q = vector([0 for _ in range(N)])
d=7
P[0] = 3
Q[0] = 5
c = Q[0]
P[0], Q[0], d = c
*P[0], c*
Q[0], d
*
c^2
sqrtd = sqrt(d)
P[0], Q[0], d, sqrtd
```
%% Output
(15, 25, 175, 5*sqrt(7))
%% Cell type:code id:60fbe63e tags:
```
sage
```
%% Cell type:code id:2b2044c7 tags:
```
sage
```
%% Cell type:code id:e8d81086 tags:
```
sage
for k in range(N-1):
alpha[k] = (P[k] + sqrtd)/Q[k]
a[k] = floor(alpha[k])
t[k] = alpha[k] - a[k]
P[k+1] = a[k]
*
Q[k] - P[k]
Q[k+1] = (d-P[k+1]^2)/Q[k]
print(f"{k : >3} ({P[k]} +sqrt({d}))/{Q[k]} = { alpha[k]} = {a[k]} + ({t[k]})")
```
%% Output
0 (15 +sqrt(175))/25 = 1/5*sqrt(7) + 3/5 = 1 + (1/5*sqrt(7) - 2/5)
1 (10 +sqrt(175))/3 = 5/3*sqrt(7) + 10/3 = 7 + (5/3*sqrt(7) - 11/3)
2 (11 +sqrt(175))/18 = 5/18*sqrt(7) + 11/18 = 1 + (5/18*sqrt(7) - 7/18)
3 (7 +sqrt(175))/7 = 5/7*sqrt(7) + 1 = 2 + (5/7*sqrt(7) - 1)
4 (7 +sqrt(175))/18 = 5/18*sqrt(7) + 7/18 = 1 + (5/18*sqrt(7) - 11/18)
5 (11 +sqrt(175))/3 = 5/3*sqrt(7) + 11/3 = 8 + (5/3*sqrt(7) - 13/3)
6 (13 +sqrt(175))/2 = 5/2*sqrt(7) + 13/2 = 13 + (5/2*sqrt(7) - 13/2)
7 (13 +sqrt(175))/3 = 5/3*sqrt(7) + 13/3 = 8 + (5/3*sqrt(7) - 11/3)
8 (11 +sqrt(175))/18 = 5/18*sqrt(7) + 11/18 = 1 + (5/18*sqrt(7) - 7/18)
9 (7 +sqrt(175))/7 = 5/7*sqrt(7) + 1 = 2 + (5/7*sqrt(7) - 1)
10 (7 +sqrt(175))/18 = 5/18*sqrt(7) + 7/18 = 1 + (5/18*sqrt(7) - 11/18)
11 (11 +sqrt(175))/3 = 5/3*sqrt(7) + 11/3 = 8 + (5/3*sqrt(7) - 13/3)
12 (13 +sqrt(175))/2 = 5/2*sqrt(7) + 13/2 = 13 + (5/2*sqrt(7) - 13/2)
13 (13 +sqrt(175))/3 = 5/3*sqrt(7) + 13/3 = 8 + (5/3*sqrt(7) - 11/3)
14 (11 +sqrt(175))/18 = 5/18*sqrt(7) + 11/18 = 1 + (5/18*sqrt(7) - 7/18)
15 (7 +sqrt(175))/7 = 5/7*sqrt(7) + 1 = 2 + (5/7*sqrt(7) - 1)
16 (7 +sqrt(175))/18 = 5/18*sqrt(7) + 7/18 = 1 + (5/18*sqrt(7) - 11/18)
17 (11 +sqrt(175))/3 = 5/3*sqrt(7) + 11/3 = 8 + (5/3*sqrt(7) - 13/3)
18 (13 +sqrt(175))/2 = 5/2*sqrt(7) + 13/2 = 13 + (5/2*sqrt(7) - 13/2)
%% Cell type:code id:a32e4b8a tags:
```
sage
continued_fraction(alpha[0])
```
%% Output
[1; 7, 1, 2, 1, 8, 13, 8, 1, 2, 1, 8, 13, 8, 1, 2, 1, 8, 13, 8, ...]
%% Cell type:code id:eb8056ec tags:
```
sage
t[0]
```
%% Output
1/5*sqrt(7) - 2/5
%% Cell type:code id:e5f91d32 tags:
```
sage
1/t[0]
```
%% Output
5/(sqrt(7) - 2)
%% Cell type:code id:2f142363 tags:
```
sage
alpha[1]
```
%% Output
5/3*sqrt(7) + 10/3
%% Cell type:code id:b80c955d tags:
```
sage
P[1], Q[1]
```
%% Output
(10, 3)
%% Cell type:code id:b8271bda tags:
```
sage
```
%% Cell type:code id:3b01a838 tags:
```
sage
```
%% Cell type:code id:74450347 tags:
```
sage
```
%% Cell type:code id:32a6f9f4 tags:
```
sage
c1=(3
*
sqrt(5)-5)/2
c1
```
%% Output
3/2*sqrt(5) - 5/2
%% Cell type:code id:27b5b213 tags:
```
sage
continued_fraction(c1)
```
%% Output
[0; 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, ...]
%% Cell type:code id:d05d9322 tags:
```
sage
continued_fraction(1/c1)
```
%% Output
[1; 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, ...]
%% Cell type:code id:c890c08e tags:
```
sage
numerical_approx(1/c1)
```
%% Output
1.17082039324994
%% Cell type:code id:d91e2d39 tags:
```
sage
1/c1
```
%% Output
2/(3*sqrt(5) - 5)
%% Cell type:code id:a3e5b318 tags:
```
sage
d1=1/c1
```
%% Cell type:code id:d99006ca tags:
```
sage
d1.minpoly().change_ring(QQbar).factor()
```
%% Output
(x - 1.170820393249937?) * (x + 0.1708203932499369?)
%% Cell type:code id:96dd6c78 tags:
```
sage
```
...
...
This diff is collapsed.
Click to expand it.
Rosen12-3.ipynb
+
967
−
94
View file @
c07a08e2
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment