2015-05-21 22:54:28 +03:00
|
|
|
{
|
|
|
|
|
"cells": [
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"#A step-by-step basic example"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## import basic modules"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 1,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"from getfem import Mesh, MeshFem, Fem, MeshIm, Integ, Model\n",
|
|
|
|
|
"from numpy import arange"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## creation of a simple cartesian mesh"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 2,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"m = Mesh('cartesian', arange(0,1.1,0.1), arange(0,1.1,0.1))"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## create a MeshFem of for a field of dimension 1 (i.e. a scalar field)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 3,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"mf = MeshFem(m, 1)"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## assign the Q2 fem to all convexes of the MeshFem"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 4,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"mf.set_fem(Fem('FEM_QK(2,2)'))"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## view the expression of its basis functions on the reference convex"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 5,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"('1 - 3*x - 3*y + 2*x^2 + 9*x*y + 2*y^2 - 6*x^2*y - 6*x*y^2 + 4*x^2*y^2', '4*x - 4*x^2 - 12*x*y + 12*x^2*y + 8*x*y^2 - 8*x^2*y^2', '-x + 2*x^2 + 3*x*y - 6*x^2*y - 2*x*y^2 + 4*x^2*y^2', '4*y - 12*x*y - 4*y^2 + 8*x^2*y + 12*x*y^2 - 8*x^2*y^2', '16*x*y - 16*x^2*y - 16*x*y^2 + 16*x^2*y^2', '-4*x*y + 8*x^2*y + 4*x*y^2 - 8*x^2*y^2', '-y + 3*x*y + 2*y^2 - 2*x^2*y - 6*x*y^2 + 4*x^2*y^2', '-4*x*y + 4*x^2*y + 8*x*y^2 - 8*x^2*y^2', 'x*y - 2*x^2*y - 2*x*y^2 + 4*x^2*y^2')\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"print Fem('FEM_QK(2,2)').poly_str()"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## an exact integration will be used"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 6,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"mim = MeshIm(m, Integ('IM_EXACT_PARALLELEPIPED(2)'))"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## detect the border of the mesh"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 7,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"border = m.outer_faces()"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## mark it as boundary #42"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 8,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"m.set_region(42, border)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## empty real model"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 9,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"md = Model('real')"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## declare that \"u\" is an unknown of the system on the finite element method `mf`"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 10,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"md.add_fem_variable('u', mf)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## add generic elliptic brick on \"u\""
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 11,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"md.add_Laplacian_brick(mim, 'u');"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## add Dirichlet condition"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 12,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
|
|
|
|
"text/plain": [
|
|
|
|
|
"1"
|
|
|
|
|
]
|
|
|
|
|
},
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 12,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
|
|
|
|
"g = mf.eval('x*(x-1) - y*(y-1)')\n",
|
|
|
|
|
"md.add_initialized_fem_data('DirichletData', mf, g)\n",
|
|
|
|
|
"md.add_Dirichlet_condition_with_multipliers(mim, 'u', mf, 42, 'DirichletData')"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## solve the linear system"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 13,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
|
|
|
|
"text/plain": [
|
|
|
|
|
"(0, 1)"
|
|
|
|
|
]
|
|
|
|
|
},
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 13,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
|
|
|
|
"md.solve()"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## extracted solution"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 14,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"u = md.variable('u')"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"## export computed solution"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 15,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"mf.export_to_pos('u.pos',u,'Computed solution')"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 16,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Overwriting gscript\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
|
|
|
|
"%%writefile gscript\n",
|
2015-05-26 18:12:54 +03:00
|
|
|
"Print \"A_step-by-step_basic_example_python_image1.png\";\n",
|
2015-05-21 22:54:28 +03:00
|
|
|
"Exit;"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 17,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"Print \"A_step-by-step_basic_example_python_image1.png\";\r\n",
|
2015-05-21 22:54:28 +03:00
|
|
|
"Exit;"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
|
|
|
|
"!cat gscript"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 18,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"!gmsh u.pos gscript"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 19,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"from IPython.core.display import Image"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 20,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
2015-05-26 18:12:54 +03:00
|
|
|
"image/png": "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\nIbau0ZsoKAHhOT2iH3u
|
2015-05-21 22:54:28 +03:00
|
|
|
"text/plain": [
|
|
|
|
|
"<IPython.core.display.Image object>"
|
|
|
|
|
]
|
|
|
|
|
},
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 20,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"Image('A_step-by-step_basic_example_python_image1.png')"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# add source term"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 21,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
|
|
|
|
"text/plain": [
|
|
|
|
|
"2"
|
|
|
|
|
]
|
|
|
|
|
},
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 21,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"f = mf.eval('5')\n",
|
2015-05-21 22:54:28 +03:00
|
|
|
"md.add_initialized_fem_data('VolumicData', mf, f)\n",
|
|
|
|
|
"md.add_source_term_brick(mim, 'u', 'VolumicData')"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 22,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"md.solve()\n",
|
|
|
|
|
"u = md.variable('u')\n",
|
|
|
|
|
"mf.export_to_pos('u.pos',u,'Computed solution')"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 23,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Overwriting gscript\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
|
|
|
|
"%%writefile gscript\n",
|
2015-05-26 18:12:54 +03:00
|
|
|
"Print \"A_step-by-step_basic_example_python_image2.png\";\n",
|
2015-05-21 22:54:28 +03:00
|
|
|
"Exit;"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 24,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"!gmsh u.pos gscript"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 25,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
2015-05-26 18:12:54 +03:00
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAIAAAAxBA+LAAAADHRFWHRDcmVhdG9yAEdtc2j/U5Jh\nAAAAHnRFWHREYXRlAE1vbiBNYXkgMjUgMTY6NTk6MjEgMjAxNQo0XOyAAAAgAElEQVR4nOy9Pawt\nTbPf9e+1zz77uUgEBLYwGR9GMhZIGJKbINuAEBYYIgS+IrEgAAIjZ0gWCRbxJTEiAALARkRgkIUA\n6yICIIBLgMCSbclEGHBAgHTf5zznnNUEM9NT3V1dXf0163nfqb/2WaenunumZtas/q3qj1nOew+T\nyWQyme6qx6sdMJlMJpPplTIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYy\nEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQ\nmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCa\nTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpM\nJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwm\nk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT\n6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp\n1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nW\nMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYy\nEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQ\nmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCa\nTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6dYyEJpMJpPp1jIQmkwmk+nWMhCaTCaT6db69GoH\n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\n9IgCBwZKf0A+RtjMvNz
|
2015-05-21 22:54:28 +03:00
|
|
|
"text/plain": [
|
|
|
|
|
"<IPython.core.display.Image object>"
|
|
|
|
|
]
|
|
|
|
|
},
|
2015-05-26 18:12:54 +03:00
|
|
|
"execution_count": 25,
|
2015-05-21 22:54:28 +03:00
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
2015-05-26 18:12:54 +03:00
|
|
|
"Image('A_step-by-step_basic_example_python_image2.png')"
|
2015-05-21 22:54:28 +03:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": []
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"metadata": {
|
|
|
|
|
"kernelspec": {
|
|
|
|
|
"display_name": "Python 2",
|
|
|
|
|
"language": "python",
|
|
|
|
|
"name": "python2"
|
|
|
|
|
},
|
|
|
|
|
"language_info": {
|
|
|
|
|
"codemirror_mode": {
|
|
|
|
|
"name": "ipython",
|
|
|
|
|
"version": 2
|
|
|
|
|
},
|
|
|
|
|
"file_extension": ".py",
|
|
|
|
|
"mimetype": "text/x-python",
|
|
|
|
|
"name": "python",
|
|
|
|
|
"nbconvert_exporter": "python",
|
|
|
|
|
"pygments_lexer": "ipython2",
|
|
|
|
|
"version": "2.7.9"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"nbformat": 4,
|
|
|
|
|
"nbformat_minor": 0
|
|
|
|
|
}
|