Skip to content

Instantly share code, notes, and snippets.

@PavelEprines
Last active February 22, 2019 18:49
Show Gist options
  • Save PavelEprines/2347153c817f80d1117dcc07ea65f8db to your computer and use it in GitHub Desktop.
Save PavelEprines/2347153c817f80d1117dcc07ea65f8db to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Решение слау с трехдиагональной матрицей"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import random\n",
"import scipy.linalg as ln"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"n = 20\n",
"m = np.zeros((n, n + 1))\n",
"for i in range(n):\n",
" m[i, i] = np.random.randint(100)\n",
" m[i, n] = np.random.randint(100)\n",
"for i in range(n - 1):\n",
" m[i + 1, i] = np.random.randint(100)\n",
" m[i, i+1] = np.random.randint(100)\n",
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"def slau(m):\n",
" n = len(m)\n",
" x = np.zeros(n)\n",
" for i in range(n - 1):\n",
" m[i+1, 0:] = m[i+1, 0:] - m[i,0:]/m[i,i]*m[i+1,i]\n",
" for i in range(n-1, 0, -1):\n",
" m[i-1,0:] = m[i-1,0:] - m[i,0:]*m[i-1,i]/m[i,i]\n",
" for i in range(n):\n",
" x[i] = (m[i,n]/m[i,i])\n",
" return x"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[32., 46., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 40.],\n",
" [63., 11., 62., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 14.],\n",
" [ 0., 0., 99., 39., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 27.],\n",
" [ 0., 0., 66., 98., 10., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 59.],\n",
" [ 0., 0., 0., 16., 12., 68., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 3.],\n",
" [ 0., 0., 0., 0., 15., 15., 5., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 31.],\n",
" [ 0., 0., 0., 0., 0., 62., 45., 21., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 36.],\n",
" [ 0., 0., 0., 0., 0., 0., 45., 47., 8., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 65.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 70., 67., 44., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 17.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 9., 11., 63., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 81.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 78., 10., 9., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 6.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 65., 56., 43.,\n",
" 0., 0., 0., 0., 0., 0., 0., 20.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 46., 95.,\n",
" 45., 0., 0., 0., 0., 0., 0., 74.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 36.,\n",
" 42., 35., 0., 0., 0., 0., 0., 13.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 9., 85., 1., 0., 0., 0., 0., 30.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 40., 32., 18., 0., 0., 0., 10.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 81., 46., 66., 0., 0., 3.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 16., 22., 40., 0., 58.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 71., 69., 58., 75.],\n",
" [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 78., 88., 12.]])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-0.10078924, 0.93967947, 0.161504 , 0.28233601, 2.06718074,\n",
" -0.38711096, 1.15979064, 0.37191906, -0.58384687, 0.68371377,\n",
" 1.24974239, -6.64745531, 7.23312191, -6.83030305, 1.1280097 ,\n",
" -4.4080968 , 5.88548387, 1.35338762, -1.64855674, 1.59758438])"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"slau(m)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#Удивительно, работает. Если бога нет, то кто сотворил это чудо?"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.7.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment