├── .github └── workflows │ ├── build_deploy.yml │ └── build_pdf.yml ├── .gitignore ├── README.md ├── _config.yml ├── _static ├── analytics.js ├── analytics_gtag.js ├── bode │ ├── image_00.png │ ├── image_01.png │ ├── image_02.png │ ├── image_03.png │ └── image_04.png ├── controllers │ ├── image_0.png │ └── image_1.png ├── convolution.png ├── justify.css ├── root_locus │ ├── image_00.png │ ├── image_01.png │ ├── image_02.png │ ├── image_03.png │ ├── image_04.png │ ├── image_05.png │ ├── image_06.png │ ├── image_07.png │ ├── image_08.png │ ├── image_09.png │ ├── image_10.png │ ├── image_11.png │ ├── image_12.png │ ├── image_13.png │ ├── image_14.png │ ├── image_15.png │ ├── image_16.png │ ├── image_17.png │ ├── image_18.png │ ├── image_19.png │ ├── image_20.png │ ├── image_21.png │ ├── image_22.png │ ├── image_23.png │ ├── image_24.png │ ├── image_25.png │ ├── image_26.png │ ├── image_27.png │ ├── image_28.png │ ├── image_29.png │ ├── image_30.png │ ├── image_31.png │ ├── image_32.png │ └── image_33.png └── sintonization │ ├── image_00.png │ ├── image_01.png │ ├── image_02.png │ ├── image_03.png │ ├── image_04.png │ ├── image_05.png │ ├── image_06.png │ ├── image_07.png │ ├── image_08.png │ ├── image_09.png │ ├── image_10.png │ ├── image_11.png │ ├── image_12.png │ ├── image_13.png │ ├── image_14.png │ ├── image_15.png │ ├── image_16.png │ ├── image_17.png │ ├── image_18.png │ └── image_19.png ├── _toc.yml └── chapters ├── ELC01_Transformada_de_Laplace.ipynb ├── ELC02_Funcion_de_transferencia.ipynb ├── ELC03_Sistemas_Primer_Orden.ipynb ├── ELC04_Sistemas_Segundo_Orden.ipynb ├── ELC05_Root_Locus.ipynb ├── ELC06_Controladores.ipynb ├── ELC07_Sintonización.ipynb ├── ELC08_Bode.ipynb └── ELC09_Nyquist.ipynb /.github/workflows/build_deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to Github Pages 2 | 3 | on: 4 | push: 5 | branches: source 6 | 7 | workflow_dispatch: 8 | repository_dispatch: 9 | 10 | jobs: 11 | deploy-book: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | 16 | - uses: actions/setup-python@v2 17 | with: 18 | python-version: 3.8 19 | 20 | - name: Install dependencies 21 | run: pip install jupyter-book 22 | 23 | - name: Install Imagemagick 24 | run: sudo apt-get install -y imagemagick 25 | 26 | - name: Build the book 27 | run: jupyter-book build . 28 | 29 | - name: Crop Images 30 | run: mogrify -trim _build/html/_images/*.png 31 | 32 | - name: Deploy to Github Pages 33 | uses: peaceiris/actions-gh-pages@v3.6.1 34 | with: 35 | publish_branch: master 36 | full_commit_message: ${{ github.event.head_commit.message }} 37 | github_token: ${{ secrets.GITHUB_TOKEN }} 38 | publish_dir: _build/html 39 | -------------------------------------------------------------------------------- /.github/workflows/build_pdf.yml: -------------------------------------------------------------------------------- 1 | name: Build PDF of the Book 2 | # This Workflow was adapted from the official docs: 3 | # https://github.com/executablebooks/jupyter-book 4 | 5 | on: 6 | push: 7 | branches: source 8 | 9 | workflow_dispatch: 10 | repository_dispatch: 11 | 12 | jobs: 13 | pdf_from_latex: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | 19 | 20 | - name: Set up Python 3.8 21 | uses: actions/setup-python@v2 22 | with: 23 | python-version: 3.8 24 | 25 | 26 | - uses: actions/cache@v2 27 | with: 28 | path: ~/.cache/pip 29 | key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} 30 | restore-keys: | 31 | ${{ runner.os }}-pip- 32 | 33 | 34 | - name: Install Python dependencies 35 | run: | 36 | python -m pip install --upgrade pip 37 | pip install wheel 38 | pushd . 39 | cd .. 40 | git clone https://github.com/executablebooks/jupyter-book.git 41 | cd jupyter-book 42 | pip install -e .[sphinx,pdflatex] 43 | popd 44 | 45 | 46 | - name: Install latex dependencies 47 | run: | 48 | sudo apt-get -qq update 49 | sudo apt-get install -y \ 50 | texlive-latex-recommended \ 51 | texlive-latex-extra \ 52 | texlive-fonts-extra \ 53 | fonts-freefont-otf \ 54 | texlive-xetex \ 55 | latexmk \ 56 | xindy 57 | 58 | 59 | - name: Build PDF from LaTeX 60 | run: jb build . --builder latex -n -W --keep-going 61 | 62 | - name: Crop Images 63 | run: mogrify -trim _build/jupyter_execute/chapters/*.png 64 | 65 | - name: Build PDF from LaTeX 66 | run: | 67 | cd _build/latex 68 | make all-pdf 69 | 70 | - uses: actions/upload-artifact@v2 71 | with: 72 | name: Book PDF 73 | path: _build/latex/python.pdf 74 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | _build/ 132 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Teoría de Control con Matlab](https://elc.github.io/control) 2 | Este es un libro de código abierto basado en Jupyter sobre cómo iniciarse en la teoría de control con Matlab 3 | ## Contenido 4 | 5 | * [Capítulo 1: Transformada de Laplace](https://elc.github.io/control-theory-with-matlab/chapters/ELC01_Transformada_de_Laplace.html) 6 | * [Capítulo 2: Función de Transferencia](https://elc.github.io/control-theory-with-matlab/chapters/ELC02_Funcion_de_transferencia.html) 7 | * [Capítulo 3: Sistemas de Primer Orden](https://elc.github.io/control-theory-with-matlab/chapters/ELC03_Sistemas_Primer_Orden.html) 8 | * [Capítulo 4: Sistemas de Segundo Orden](https://elc.github.io/control-theory-with-matlab/chapters/ELC04_Sistemas_Segundo_Orden.html) 9 | * [Capítulo 5: Root Locus](https://elc.github.io/control-theory-with-matlab/chapters/ELC05_Root_Locus.html) 10 | * [Capítulo 6: Controladores](https://elc.github.io/control-theory-with-matlab/chapters/ELC06_Controladores.html) 11 | * [Capítulo 7: Sintonización](https://elc.github.io/control-theory-with-matlab/chapters/ELC07_Sintonizaci%C3%B3n.html) 12 | * [Capítulo 8: Bode](https://elc.github.io/control-theory-with-matlab/chapters/ELC08_Bode.html) 13 | * [Capítulo 9: Nyquist](https://elc.github.io/control-theory-with-matlab/chapters/ELC09_Nyquist.html) 14 | 15 | Los siguientes son temas que no están cubiertos en ninguno de los capítulos: 16 | 17 | - Reducción de bloques (Real y Simbólica) 18 | - Arreglo de Routh 19 | - Compensadores (Lag, Lead, Notch) 20 | 21 | --- 22 | ## Como leer el libro 23 | 24 | El libro se puede leer de varias maneras diferentes, empezando por la más recomendada a la menos recomendada: 25 | 26 | 1. La mejor manera es leer el libro online en el navegador, teniendo Matlab abierto y copiando y pegando el código de lo que sea relevante. Todo lo referido a Simulink se ilustra paso a paso con capturas de pantalla. Los contenidos se actualizan de forma sincronizada a medida que se suben cambios en este repositorio. 27 | 28 | 2. Otra posibilidad es clonar el repositorio para descargar los archivos .ipynb en tu máquina local. Si tienes Jupyter instalado, puedes ver los capítulos en tu navegador *además* de editar y ejecutar el código proporcionado (y probar algunas preguntas de práctica). Esta es la opción que más control da al usuario, pero requiere seguir pasos adicionales: 29 | - Jupyter es un requisito para ver los archivos ipynb. Se puede descargar [aquí](http://jupyter.org/). 30 | - Además, necesitarás tener Matlab instalado ya que el código está escrito en ese lenguaje. Alternativamente podría usarse Octave como alternativa gratuita pero no se realizaron pruebas de compatibilidad 31 | - Es necesario tener instalado el kernel de matbal como se detalla en la [documentación de matlab_kernel](https://github.com/Calysto/matlab_kernel). 32 | 33 | 3. Los PDF son el último método recomendado para leer el libro, ya que los PDF son estáticos y no interactivos. Si se desean PDFs, se pueden crear dinámicamente utilizando la utilidad [nbconvert](https://github.com/jupyter/nbconvert). 34 | 35 | --- 36 | ## Cómo contribuir 37 | 38 | ### ¿Con qué se puede contribuir? 39 | 40 | - La lista actual de capítulos no está finalizada. Si ves algo que falta, no dudes en empezar por ahí. 41 | - Limpiar el código de Matlab según buenas prácticas 42 | - Dar mejores explicaciones 43 | - Errores de ortografía/gramática 44 | - Sugerencias 45 | - Contribuir a los estilos de Jupyter notebook 46 | - Traducciones 47 | 48 | ### Commits 49 | 50 | - Todos los commits son bienvenidos, incluso si son menores ;) 51 | - Si no estás familiarizado con Github, puedes enviarme tus contribuciones al correo electrónico que aparece a continuación. 52 | 53 | 54 | --- 55 | ## Frequently Asked Questions (FAQ) 56 | 57 | ### 1. Why use an external tool like Jupyter instead of the native Matlab Live Editor? 58 | 59 | Jupyter provides useful advantages over the Live Editor: 60 | 1. It can be easily integrated in source control, because it json. 61 | 1. It is not version dependent, meaning if it can be then migrated to any Matlab Version. 62 | 1. In Live Editor the execution is "per section" whereas in Jupyter is "per cell", providing faster output in Jupyter. 63 | 1. Performance of Live Editor notebooks with a good amount of LaTeX is poor while in Jupyter it is managable. 64 | 65 | On the other hand, using Jupyter has drawbacks too: 66 | 1. There is no built-in help, one has to use the Matlab site or the Matlab software. 67 | 1. Interactivity options for plots (panning, zoom, etc.) are limited. 68 | 1. There is currently limited support for Matlab Apps such as Control System Designer. 69 | 1. Symbolic Expressions are not natively print using LaTeX typical fonts. 70 | 1. There are services such as NBviewer that allow the rendering of the notebook online. 71 | 1. Transparent integration with HTML in cells to improve User Experience 72 | 73 | All things considered, the advantages of using Jupyter overcome its drawbacks by far and therefore it was chosen as the go-to tool. 74 | 75 | ### 2. Can I use this material in my class/course? 76 | 77 | The material is free to use for public and/or non-commercial uses, however, I would like to get notify if you do so. Knowing other people is using the material motivates to improve it. You can let me know by using the contact information in the bottom section. 78 | 79 | For commercial use, please contact first. 80 | 81 | ### 3. Can I request some changes in the material? 82 | 83 | Suggestions and recommendations are welcome, please visit the Contributing section above. 84 | 85 | ### 4. I found a typo/error, how do I report it? 86 | 87 | Same answer as 3. 88 | 89 | ### 5. I would like to have a translation to X language of this material, how can I get it? 90 | 91 | Please send an email to get notify of translations. 92 | 93 | At the moment there is English to Spanish Translation 94 | 95 | ### 6. How can I use this in Matlab? 96 | 97 | Matlab does not provide a built-in Jupyter inport function, however all code cells are copy/paste friendly. You can paste them in any .m file and it should work out of the box. 98 | 99 | ### 6. I cannot execute the Notebook because of X error? 100 | 101 | For execution problems, please refer to the [Matlab Kernel Developers](https://github.com/Calysto/matlab_kernel) 102 | 103 | --- 104 | ## Contact 105 | Contact the main author, Ezequiel Leonardo Castaño at castanoezequielleonardo *at* gmail.com 106 | 107 | --- 108 | ## Reconocimientos 109 | 110 | This format was heavily inspired by the [Bayesian Methods for Hackers by Cam Davidson-Pilon](http://camdavidsonpilon.github.io/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/) 111 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: "Teoría de Control con Matlab" 2 | copyright: "2021, Ezequiel Leonardo Castaño" 3 | author: "Ezequiel Leonardo Castaño" 4 | 5 | execute: 6 | execute_notebooks: "off" 7 | 8 | parse: 9 | myst_enable_extensions: 10 | - html_image 11 | - dollarmath 12 | 13 | html: 14 | use_edit_page_button : true 15 | use_repository_button: true 16 | baseurl : "https://elc.github.io/control-theory-with-matlab" 17 | 18 | repository: 19 | url: https://www.github.com/elc/control-theory-with-matlab 20 | 21 | sphinx: 22 | config: 23 | mathjax_path: https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js 24 | html_theme_options: 25 | use_download_button: True 26 | toc_title: "Chapter Index" 27 | -------------------------------------------------------------------------------- /_static/analytics_gtag.js: -------------------------------------------------------------------------------- 1 | window.dataLayer = window.dataLayer || []; 2 | 3 | function gtag() { 4 | dataLayer.push(arguments); 5 | } 6 | gtag('js', new Date()); 7 | 8 | gtag('config', 'G-Y3GBPLEV2K'); -------------------------------------------------------------------------------- /_static/bode/image_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/bode/image_00.png -------------------------------------------------------------------------------- /_static/bode/image_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/bode/image_01.png -------------------------------------------------------------------------------- /_static/bode/image_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/bode/image_02.png -------------------------------------------------------------------------------- /_static/bode/image_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/bode/image_03.png -------------------------------------------------------------------------------- /_static/bode/image_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/bode/image_04.png -------------------------------------------------------------------------------- /_static/controllers/image_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/controllers/image_0.png -------------------------------------------------------------------------------- /_static/controllers/image_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/controllers/image_1.png -------------------------------------------------------------------------------- /_static/convolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/convolution.png -------------------------------------------------------------------------------- /_static/justify.css: -------------------------------------------------------------------------------- 1 | p { 2 | text-align: justify; 3 | } -------------------------------------------------------------------------------- /_static/root_locus/image_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_00.png -------------------------------------------------------------------------------- /_static/root_locus/image_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_01.png -------------------------------------------------------------------------------- /_static/root_locus/image_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_02.png -------------------------------------------------------------------------------- /_static/root_locus/image_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_03.png -------------------------------------------------------------------------------- /_static/root_locus/image_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_04.png -------------------------------------------------------------------------------- /_static/root_locus/image_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_05.png -------------------------------------------------------------------------------- /_static/root_locus/image_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_06.png -------------------------------------------------------------------------------- /_static/root_locus/image_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_07.png -------------------------------------------------------------------------------- /_static/root_locus/image_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_08.png -------------------------------------------------------------------------------- /_static/root_locus/image_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_09.png -------------------------------------------------------------------------------- /_static/root_locus/image_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_10.png -------------------------------------------------------------------------------- /_static/root_locus/image_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_11.png -------------------------------------------------------------------------------- /_static/root_locus/image_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_12.png -------------------------------------------------------------------------------- /_static/root_locus/image_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_13.png -------------------------------------------------------------------------------- /_static/root_locus/image_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_14.png -------------------------------------------------------------------------------- /_static/root_locus/image_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_15.png -------------------------------------------------------------------------------- /_static/root_locus/image_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_16.png -------------------------------------------------------------------------------- /_static/root_locus/image_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_17.png -------------------------------------------------------------------------------- /_static/root_locus/image_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_18.png -------------------------------------------------------------------------------- /_static/root_locus/image_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_19.png -------------------------------------------------------------------------------- /_static/root_locus/image_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_20.png -------------------------------------------------------------------------------- /_static/root_locus/image_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_21.png -------------------------------------------------------------------------------- /_static/root_locus/image_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_22.png -------------------------------------------------------------------------------- /_static/root_locus/image_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_23.png -------------------------------------------------------------------------------- /_static/root_locus/image_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_24.png -------------------------------------------------------------------------------- /_static/root_locus/image_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_25.png -------------------------------------------------------------------------------- /_static/root_locus/image_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_26.png -------------------------------------------------------------------------------- /_static/root_locus/image_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_27.png -------------------------------------------------------------------------------- /_static/root_locus/image_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_28.png -------------------------------------------------------------------------------- /_static/root_locus/image_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_29.png -------------------------------------------------------------------------------- /_static/root_locus/image_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_30.png -------------------------------------------------------------------------------- /_static/root_locus/image_31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_31.png -------------------------------------------------------------------------------- /_static/root_locus/image_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_32.png -------------------------------------------------------------------------------- /_static/root_locus/image_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/root_locus/image_33.png -------------------------------------------------------------------------------- /_static/sintonization/image_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_00.png -------------------------------------------------------------------------------- /_static/sintonization/image_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_01.png -------------------------------------------------------------------------------- /_static/sintonization/image_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_02.png -------------------------------------------------------------------------------- /_static/sintonization/image_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_03.png -------------------------------------------------------------------------------- /_static/sintonization/image_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_04.png -------------------------------------------------------------------------------- /_static/sintonization/image_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_05.png -------------------------------------------------------------------------------- /_static/sintonization/image_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_06.png -------------------------------------------------------------------------------- /_static/sintonization/image_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_07.png -------------------------------------------------------------------------------- /_static/sintonization/image_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_08.png -------------------------------------------------------------------------------- /_static/sintonization/image_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_09.png -------------------------------------------------------------------------------- /_static/sintonization/image_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_10.png -------------------------------------------------------------------------------- /_static/sintonization/image_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_11.png -------------------------------------------------------------------------------- /_static/sintonization/image_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_12.png -------------------------------------------------------------------------------- /_static/sintonization/image_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_13.png -------------------------------------------------------------------------------- /_static/sintonization/image_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_14.png -------------------------------------------------------------------------------- /_static/sintonization/image_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_15.png -------------------------------------------------------------------------------- /_static/sintonization/image_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_16.png -------------------------------------------------------------------------------- /_static/sintonization/image_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_17.png -------------------------------------------------------------------------------- /_static/sintonization/image_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_18.png -------------------------------------------------------------------------------- /_static/sintonization/image_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ELC/control-theory-with-matlab/1289df8afa344943909e8fc67fc78771a0ee927c/_static/sintonization/image_19.png -------------------------------------------------------------------------------- /_toc.yml: -------------------------------------------------------------------------------- 1 | format: jb-book 2 | 3 | root: README 4 | 5 | options: 6 | numbered: True 7 | 8 | chapters: 9 | - file: chapters/ELC01_Transformada_de_Laplace 10 | - file: chapters/ELC02_Funcion_de_transferencia 11 | - file: chapters/ELC03_Sistemas_Primer_Orden 12 | - file: chapters/ELC04_Sistemas_Segundo_Orden 13 | - file: chapters/ELC05_Root_Locus 14 | - file: chapters/ELC06_Controladores 15 | - file: chapters/ELC07_Sintonización 16 | - file: chapters/ELC08_Bode 17 | - file: chapters/ELC09_Nyquist 18 | -------------------------------------------------------------------------------- /chapters/ELC01_Transformada_de_Laplace.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "source": [ 6 | "# Introducción a la Teoría de Control Con Matlab\r\n", 7 | "\r\n", 8 | " Version 0.1\r\n", 9 | "\r\n", 10 | "`Contenido Original creado por Ezequiel Leonardo Castaño`\r\n", 11 | "\r\n", 12 | "Este contenido está en BORRADOR y puede estar incompleto y/o sufrir modificaciones\r\n", 13 | "\r\n", 14 | "___\r\n", 15 | "\r\n", 16 | "Enlaces Útiles:\r\n", 17 | "\r\n", 18 | "- Los demás capítulos pueden encontrarse en el [homepage](https://elc.github.io/control). \r\n", 19 | "- El repositorio completo está disponible en Github como [Control Theory With Matlab](https://github.com/ELC/control-theory-with-matlab)\r\n", 20 | "- Ante dudas y sugerencias, no dudes en utilizar los [Github Issues](https://github.com/ELC/control-theory-with-matlab/issues)" 21 | ], 22 | "metadata": {} 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": null, 27 | "source": [ 28 | "%plot inline --format=png -w 1600" 29 | ], 30 | "outputs": [], 31 | "metadata": {} 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 2, 36 | "source": [ 37 | "format compact;" 38 | ], 39 | "outputs": [ 40 | { 41 | "output_type": "stream", 42 | "name": "stdout", 43 | "text": [ 44 | "\n" 45 | ] 46 | } 47 | ], 48 | "metadata": {} 49 | }, 50 | { 51 | "cell_type": "markdown", 52 | "source": [ 53 | "## Transformada de Laplace\r\n", 54 | "\r\n", 55 | "### Definición\r\n", 56 | "\r\n", 57 | "La transformada de Laplace es una **generalización** de la transformada de Fourier\r\n", 58 | "\r\n", 59 | "La transformada de Fourier convierte una función del **dominio del tiempo** al **dominio de la frecuencia**\r\n", 60 | "\r\n", 61 | "$$X(\\omega )=\\int_{-\\infty }^{\\infty } x(t)e^{-j\\omega t} dt$$\r\n", 62 | "\r\n", 63 | "El término $e^{-j\\omega t}$ es la forma exponencial de una función senoidal, donde $j$ representa a la unidad imaginaria. Sin embargo, esta transformación resulta bastante restrictiva ya que no hay componentes exponenciales puras.\r\n", 64 | "\r\n", 65 | "Para añadir un componente exponencial, se agrega un factor exponencial a la función $x(t)$quedando:\r\n", 66 | "\r\n", 67 | "$$X(\\sigma ,\\omega )=\\int_{-\\infty }^{\\infty } [x(t)\\cdot e^{-\\sigma t} ]e^{-j\\omega t} dt$$" 68 | ], 69 | "metadata": {} 70 | }, 71 | { 72 | "cell_type": "markdown", 73 | "source": [ 74 | "### Desarrollo\r\n", 75 | "\r\n", 76 | "Al trabajar algebraicamente se tiene\r\n", 77 | "\r\n", 78 | "$$X(\\sigma ,\\omega )=\\int_{-\\infty }^{\\infty } x(t)\\cdot [e^{-\\sigma t} \\cdot e^{-j\\omega t} ]dt$$\r\n", 79 | "\r\n", 80 | "$$X(\\sigma ,\\omega )=\\int_{-\\infty }^{\\infty } x(t)\\cdot e^{-\\sigma t-j\\omega t} dt$$\r\n", 81 | "\r\n", 82 | "$$X(\\sigma ,\\omega )=\\int_{-\\infty }^{\\infty } x(t)\\cdot e^{-(\\sigma -j\\omega )t} dt$$\r\n", 83 | "\r\n", 84 | "Y luego se reemplaza a la expresión $\\sigma -j\\omega$ por una nueva variable compleja llamada $s$, donde $\\sigma$ es la parte real y $\\omega$ la parte imaginaria, este nuevo dominio diferente del tiempo se conoce como **plano** $s$.\r\n", 85 | "\r\n", 86 | "$$X(s)=\\int_{-\\infty }^{\\infty } x(t)e^{-st} dt$$\r\n", 87 | "\r\n", 88 | "Esta forma de expresar a la función $x(t)$ como $X(s)$es lo que se conoce como transformada de Laplace, símbolicamente se representa\r\n", 89 | "\r\n", 90 | "$$\\mathcal{L}\\lbrace x(t)\\rbrace =X(s)$$\r\n", 91 | "\r\n", 92 | "Análogamente para la transformación inversa\r\n", 93 | "\r\n", 94 | "$${\\mathcal{L}}^{-1} \\lbrace X(s)\\rbrace =x(t)$$ " 95 | ], 96 | "metadata": {} 97 | }, 98 | { 99 | "cell_type": "markdown", 100 | "source": [ 101 | "## Propiedades\r\n", 102 | "\r\n", 103 | "Algunas de las propiedades de la transformada de Laplace son\r\n", 104 | "\r\n", 105 | "### Linearidad\r\n", 106 | "\r\n", 107 | "$$\\mathcal{L}\\lbrace a\\cdot f(t)+b\\cdot g(t)\\rbrace =a\\cdot F(s)+b\\cdot G(s)$$" 108 | ], 109 | "metadata": {} 110 | }, 111 | { 112 | "cell_type": "markdown", 113 | "source": [ 114 | "### Retraso o Delay\n", 115 | "\n", 116 | "Dada una función escalón definida por $\\gamma (t-a)=\\left\\lbrace \\begin{array}{lcc}\n", 117 | "0 & si & x\\le a\\\\\n", 118 | "1 & si & x\\ge a\n", 119 | "\\end{array}\\right.$\n", 120 | "\n", 121 | "$$\\mathcal{L}\\lbrace f(t-a)\\cdot \\gamma (t-a)\\rbrace =e^{-as} \\cdot F(s)$$" 122 | ], 123 | "metadata": {} 124 | }, 125 | { 126 | "cell_type": "markdown", 127 | "source": [ 128 | "### Derivada\n", 129 | "\n", 130 | "$$\\mathcal{L}\\lbrace f^{^{\\prime } } (t)\\rbrace =s\\cdot F(s)-f(0)$$\n", 131 | "\n", 132 | "$$\\mathcal{L}\\lbrace f^{^{\\prime \\prime } } (t)\\rbrace =s^2 \\cdot F(s)-s\\cdot f(0)-f^{^{\\prime } } (0)$$" 133 | ], 134 | "metadata": {} 135 | }, 136 | { 137 | "cell_type": "markdown", 138 | "source": [ 139 | "### Integral\n", 140 | "\n", 141 | "$$\\mathcal{L}\\lbrace \\int_0^t f(t)dt\\rbrace =\\frac{1}{s}\\mathcal{L}\\lbrace f(t)\\rbrace$$" 142 | ], 143 | "metadata": {} 144 | }, 145 | { 146 | "cell_type": "markdown", 147 | "source": [ 148 | "### Teorema del valor inicial\n", 149 | "\n", 150 | "$$\\lim_{s\\to \\infty } (s\\cdot F(s))=\\lim_{t\\to 0} f(t)$$" 151 | ], 152 | "metadata": {} 153 | }, 154 | { 155 | "cell_type": "markdown", 156 | "source": [ 157 | "### Teorema del valor final}\n", 158 | "\n", 159 | "$$\\lim_{s\\to 0} (s\\cdot F(s))=\\lim_{t\\to \\infty } f(t)$$" 160 | ], 161 | "metadata": {} 162 | }, 163 | { 164 | "cell_type": "markdown", 165 | "source": [ 166 | "### Convolución\n", 167 | "\n", 168 | "$$\\mathcal{L}\\lbrace f(t)*g(t)\\rbrace =F(s)\\cdot G(s)$$\n", 169 | "\n", 170 | "La operación convolución puede verse gráficamente en esta animación ([Fuente](https://en.wikipedia.org/wiki/Convolution))\n", 171 | "\n", 172 | "
\n", 173 | "\n", 174 | "
" 175 | ], 176 | "metadata": {} 177 | }, 178 | { 179 | "cell_type": "markdown", 180 | "source": [ 181 | "## Transformaciones comunes\n", 182 | "\n", 183 | "Normalemente en lugar de hacer la integral, que puede llevar mucho tiempo, se recurre a tablas que tienen las transformadas pre-calculadas. Algunas de las transformadas más comunes son:\n", 184 | "\n", 185 | "### Función impulso \n", 186 | "\n", 187 | "$$\\mathcal{L}\\lbrace \\delta (c)\\rbrace =c$$ \n", 188 | "\n", 189 | "### Función escalón\n", 190 | "\n", 191 | "$$\\mathcal{L}\\lbrace c\\rbrace =\\frac{c}{s}$$ \n", 192 | "\n", 193 | "### Función rampa\n", 194 | "\n", 195 | "$$\\mathcal{L}\\lbrace c\\cdot t\\rbrace =\\frac{c}{s^2 }$$ \n", 196 | "\n", 197 | "### Función exponencial\n", 198 | "\n", 199 | "$$\\mathcal{L}\\lbrace e^{a\\cdot t} \\rbrace =\\frac{1}{s-a}$$ \n", 200 | "\n", 201 | "\n", 202 | "## Laplace en Matlab\n", 203 | "\n", 204 | "Definimos los símbolos a utilizar" 205 | ], 206 | "metadata": {} 207 | }, 208 | { 209 | "cell_type": "code", 210 | "execution_count": 3, 211 | "source": [ 212 | "a = sym(\"a\");\r\n", 213 | "t = sym(\"t\", 'positive');\r\n", 214 | "s = sym(\"s\");" 215 | ], 216 | "outputs": [ 217 | { 218 | "output_type": "stream", 219 | "name": "stdout", 220 | "text": [ 221 | "\n" 222 | ] 223 | } 224 | ], 225 | "metadata": {} 226 | }, 227 | { 228 | "cell_type": "markdown", 229 | "source": [ 230 | "A continuación se muestran algunos ejemplos con sus transformadas y antitransformadas\n", 231 | "\n", 232 | "### Escalón" 233 | ], 234 | "metadata": {} 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 5, 239 | "source": [ 240 | "funcion = a;\r\n", 241 | "transformada = laplace(funcion, t, s)" 242 | ], 243 | "outputs": [ 244 | { 245 | "output_type": "stream", 246 | "name": "stdout", 247 | "text": [ 248 | "transformada =\n", 249 | "a/s\n", 250 | "\n" 251 | ] 252 | } 253 | ], 254 | "metadata": {} 255 | }, 256 | { 257 | "cell_type": "code", 258 | "execution_count": 6, 259 | "source": [ 260 | "transformada_inversa = ilaplace(transformada)" 261 | ], 262 | "outputs": [ 263 | { 264 | "output_type": "stream", 265 | "name": "stdout", 266 | "text": [ 267 | "transformada_inversa =\n", 268 | "a\n", 269 | "\n" 270 | ] 271 | } 272 | ], 273 | "metadata": {} 274 | }, 275 | { 276 | "cell_type": "markdown", 277 | "source": [ 278 | "#### Ejemplo Gráfico" 279 | ], 280 | "metadata": {} 281 | }, 282 | { 283 | "cell_type": "code", 284 | "execution_count": 7, 285 | "source": [ 286 | "syms f(t) g(t) h(t);\r\n", 287 | "f(t) = 1;\r\n", 288 | "g(t) = 0.5;\r\n", 289 | "h(t) = 2;\r\n", 290 | "\r\n", 291 | "figure;\r\n", 292 | "hold on;\r\n", 293 | "fplot([f, g, h], [0 10])\r\n", 294 | "ylim([0 2.5])\r\n", 295 | "grid on\r\n", 296 | "legend(\"a=1\", \"a=0.5\", \"a=2\")" 297 | ], 298 | "outputs": [ 299 | { 300 | "output_type": "stream", 301 | "name": "stdout", 302 | "text": [ 303 | "\n" 304 | ] 305 | }, 306 | { 307 | "output_type": "display_data", 308 | "data": { 309 | "text/plain": [ 310 | "" 311 | ], 312 | "image/png": "iVBORw0KGgoAAAANSUhEUgAABkAAAAGkCAIAAADmHH7qAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5QcYDSQAVODxBAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyNC1KdWwtMjAyMSAxMDozNjowMBuTPT4AACAASURBVHic7d1/dJb1ffDxqzfUUOAgpWJGHBUlTQDNpKJyoFHQgdUKyK+GGpzVsrMCRXnmOQXa7BB7RFexUsxxHilrOe5ssDJO2WCHCpvBEKUT5emQHxrMaEJUdu+Um/BDG34kef7Is4xBa+l2c11f7rxef+W6cxE+fIwJ95vrvvKJ9vb2CAAAAABClUp6AAAAAAD4OAIWAAAAAEETsAAAAAAImoAFAAAAQNAELAAAAACCJmABAAAAEDQBCwAAAICgCVgAAAAABE3AAgAAACBoAhYAAAAAQROwAAAAAAiagAUAAABA0AQsAAAAAIImYAEAAAAQNAELAAAAgKAJWAAAAAAETcACAAAAIGgCFgAAAABBE7AAAAAACJqABQAAAEDQBCwAAAAAgiZgAQAAABA0AQsAAACAoAlYAAAAAARNwAIAAAAgaAIWAAAAAEHrnvQAXErq6+sbGhr69et34403nv/eTCZz4MCBzsOioqI+ffrEOB0AAACQmwQsLtSSJUuqq6tHjBixf//+Xr16rVq1Ki8v7+wT1q9fv2zZss4Hq6qqSktLk5gUAAAAyCkCFhfk7bff/vGPf1xbW9u3b98oiiZOnLhx48bp06effc7evXsrKirKy8sTmhEAAADITe6BxQXp27fvihUrOupVFEXXXHPNBx98cM45+/btGzx4cCaTOX36dOwDAgAAADnrE+3t7UnPwCWmsbFxwoQJa9euHTp0aOeDra2tJSUl1157bSaTaW5unjp16pIlS87/tcXFxb/142/evDmb4wIAANCFDRo0KOkRyAIvIeR3k06nH3zwwblz555drzoeHzdu3KJFiwoKCtLpdFlZ2Zo1a+67777zP0JdXV1cwxJFUdTQ0ODrdczsPH52Hj87j5+dx8/O42fn8bPz+Nl5zBoaGpIegezwEkJ+B7t3754yZcoDDzwwZ86cc95VUFBQVVVVUFAQRVF+fv748eN37tyZxIwAAABArhGwuFDbt2//2te+9thjjz300EPnv7exsXHdunWdh6dOnerWrVuM0wEAAAA5S8DigjQ1Nc2bN2/p0qW333776dOnT58+3draGkXRrl27Dh06FEVRS0tLZWVlfX19FEXpdPrll1+eOHFiwkMDAAAAOcE9sLggq1ev/vDDD2fPnt35yMyZMxcvXrx8+fJ77rln+vTpxcXFFRUVZWVlJSUlu3fvfvjhh0tLSxMcGAAAAMgZAhYXZOHChQsXLjz/8VWrVnW+XV5eXl5eHuNQAAAAQJfgJYQAAAAABE3AAgAAACBoAhYAAAAAQROwAAAAAAiam7gDAABALiguLk56hATU1dUlPQJxELAAAAAgR3S1mtM1m13X5CWEAAAAAARNwAIAAAAgaAIWAAAAAEETsAAAAAAImoAFAAAAJK+mpqampibpKQiUgAUAAAAkbOfOnWVlZfX19UkPQqC6Jz0AAAAAkIPa2tqqq6tPnDgxYMCAkSNHfsyZzz///NNPP33ttdfGNhuXHFdgAQAAAFnW0tJy0003rVq1asuWLV/96lcrKyujKNqwYUOP/27Dhg1RFF133XV79+69/vrrk56acLkCCwAAAHLNdzb/IpHft/KL13S88c4770ybNq2ioiKKok2bNlVVVUVRNGnSpJaWlvN/1ZgxY+IckkuRgAUAAAC5pjMkJWX48OEnT55csGBBU1PTjh07Ol4e2NTU9Morr5x92tixYwcOHJjMiFxSBCwAAAAgy1566aVZs2YtXbp0xowZ6XT6mWeeiaLo8OHD27ZtO/u0kpISAYsLIWABAAAAWbZly5Zx48bNnDkziqIFCxbs27cviqLhw4evXLky6dG4JAlYAAAAQJbNnj17zJgxkydPPnr06NixY48ePdrW1pZK+VFy/A8JWAAAAECWFRUVHTp06MSJEz179kylUh0/hfDjuTiLjyFgAQAAABdF7969kx6BHOHiPQAAAACCJmABAAAAEDQBCwAAAICgCVgAAAAABE3AAgAAACBofgohAAAAkKRjx449++yzBw4cmDFjxl133XXOe19//fU9e/Z0vD1w4MA777wz9gFJnoAFAAAAJOnuu+8eO3bslClTFi1adPjw4ZkzZ5793uXLlx8/fnzQoEFRFJ08eVLA6poELAAAACD72traqqurT5w4MWDAgJEjR/6m0372s58dP378iSeeiKIoPz//61//+jkBa9euXX//939fVFR00ScmYAIWAAAAkGUtLS2jR48eOnTo5ZdfXl1dPWPGjO985zsbNmwoKys7+7S1a9cePXr0hhtu6Di8+eab9+zZ09bWlkr9/3t2nzlz5sCBAxs2bNi5c+eQIUMWLlzYo0ePuP8wBEDAAgAAgFyzf3pBIr9v0boPOt545513pk2bVlFREUXRpk2bqqqqoiiaNGlSS0vLOb/khRde6GxSqVQqlUqdOXPmsssu63jkjTfeuOyyy/r06TNz5swXXnhh6tSpmzZtiukPQ0gELAAAAMg1nSEpKcOHDz958uSCBQuampp27Nhx7bXXRlHU1NT0yiuvnH3a2LFjU6lUW1tb5yNnX34VRdGoUaOOHTvW8fYdd9zRp0+fQ4cODRgwII4/AyERsAAAAIAse+mll2bNmrV06dIZM2ak0+lnnnkmiqLDhw9v27bt7NNKSko+/elPHz9+vOPw8OHDl112Wffu/xUrmpqaDh8+PHz48CiKevbs2b179+PHjwtYXZCABQAAAGTZli1bxo0b13E79gULFuzbty+KouHDh69cufKcM6+66qpZs2al0+n8/PwXX3zxy1/+chRFNTU1119//Wc+85m333573rx5b731Vo8ePX7yk5989rOfdTf3rknAAgAAALJs9uzZY8aMmTx58tGjR8eOHXv06NFzXhvYqX///n/xF39xyy23DB069ODBg1u3bo2iaOLEiX/7t3/7pS996c4775w8efLQoUOLi4sPHDiwbt262P8oBEHAAgAAALKsqKjo0KFDJ06c6NmzZyqVqqys/JiT/+iP/mjmzJktLS09e/bseKTzvldRFC1duvTJJ588depU53vpggQsAAAA4KLo3bv3BZ6ZSqU+pk9179797Btj0QX9mov3AAAAACAcAhYAAAAAQROwAAAAAAiagAUAAABA0AQsAAAAAIImYAEAAAAQND+EEgAAAEjS+++//4Mf/ODgwYMjR478kz/5k1TK1Tacy+cEAAAAkJhjx47ddNNNl19++bRp07Zs2fLQQw8lPREhcgUWAAAAkH1tbW3V1dUnTpwYMGDAyJEjf9Np1dXVY8eOffTRR6Mo+sIXvtC/f/8XX3wxxjG5NAhYAAAAQJa1tLSMHj166NChl19+eXV19YwZM77zne9s2LChrKzs7NPWrl07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k56lq+j4u+LnPve5q6++OulZuoRzngp5Tnqpcw8s4rBx48bvfve7o0eP3rlz57333jt//vykJ+oqnn/++TVr1tTW1iY9SJewZMmS6urqESNG7N+/v1evXqtWrcrLy0t6qBz3/e9//6c//emIESPeeOONL3/5y1//+teTnqirqK+vnzJlyve///1x48YlPUvu++EPf7hs2bLOrydVVVWlpaXJjpTzampqvvWtb40ePbqxsTEvL++v/uqvUimvWriItmzZsmjRos7DlpaWsrKyxx57LLmJuoRVq1b95V/+5ejRo3fv3n3TTTctWbIk6Yly39NPP71+/fovfOELu3fvnjBhwrx585KeKMed81TIc9Jc0A4X2ZkzZz7/+c+/++677e3thw8fvuGGG37xi18kPVTuO3LkyKJFiz7/+c+XlpYmPUuXsG/fvuuvv/7IkSMdhxMmTPi7v/u7ZEfKefv37+/c+X/8x38MHTr08OHDSQ/VJZw6dWrSpEljx479p3/6p6Rn6RL+9E//9G/+5m+SnqILOXPmzKhRo15//fWOw3vuueenP/1psiN1KbW1tbfddlvn91MuktbW1mHDhu3fv7+9vf3o0aPDhg3bt29f0kPluLfeeuv666//4IMP2tvbW1pabr/99rfeeivpoXLW+U+FPCfNDf41iYtu27Ztffv2LSwsjKKoX79+t91226uvvpr0ULlv+fLl/fr1e/LJJ5MepKvo27fvihUr+vbt23F4zTXXfPDBB8mOlPMGDx68fv36jp1/8pOfbG1tPX36dNJDdQnLli37wz/8w6KioqQH6Sr27ds3ePDgTCbjMzweNTU1V1111S233NJx+I//+I933XVXsiN1HR999NG3vvWtJUuWdH4/5eJpb2/v0aNHFEWf+tSnUqnUqVOnkp4ox9XX1996660DBgyIoigvL2/EiBGbN29Oeqicdf5TIc9Jc4N7YHHRNTc3DxkypPOwd+/e+/fvT3CeLmLx4sWpVKqmpibpQbqKAQMGdPyNJIqixsbGrVu3zpkzJ9mRcl4qlSosLGxtbV23bt3q1au/8Y1v5OfnJz1U7tuxY8frr7/+k5/8xAs249Ha2nrw4MHHH388k8k0NzdPnTrVy3wutiNHjgwcOHDx4sX/8A//0K1bt2984xuzZs1KeqiuYuXKlUOGDHHvzhikUqnKysq5c+eOGzdu+/btM2bMuOGGG5IeKsfl5eW9//77nYfHjh3z2uSL5/ynQp6T5gb/z3DRtba2nv3VOZVKtbW1JThPF+E7YlLS6fSDDz44d+5c90ONRyaTOXny5JVXXvnaa681NzcnPU6OO3bs2OLFi5ctW5b0IF1IOp0eN27cD37wg+3bt2/durW2tnbNmjVJD5Xj6uvrN2/efN111+3atWvNmjUvvPCCf6WPx8mTJ1etWvXII48kPUhX8eabb/bs2bN///59+/b9t3/7t48++ijpiXLc6NGj0+n0008/vWPHjhdffHHPnj2eE1085z8V8pw0N3iKy0WXl5fX2traedjW1ta9u0v/yE27d++eMmXKAw8817tSiwAABClJREFU4PKr2PTv3/+BBx5YuXJljx49XnzxxaTHyXFLly4dNmxYY2NjTU1NJpPZu3dvXV1d0kPluIKCgqqqqoKCgiiK8vPzx48fv3PnzqSHynGf/exnr7766hkzZkRRVFxcPH78+E2bNiU9VJfw0ksvDRw4sKSkJOlBuoTq6uqf//znq1evLi8vX7FiRRRFP/rRj5IeKsf17dv3r//6rxsbG6uqqo4fPz5p0iQ/7SdOnpPmBv/NuOiuvPLKPXv2dB4eOXLkS1/6UoLzwEWyffv2+fPnP/HEE3feeWfSs3QJBw4c2L59+/33399x+Hu/93v//u//nuxIOa9///779u1bvXp1FEXvv/9+TU1Nnz59/CDqi6qxsfGNN96YPn16x+GpU6e6deuW7Eg57zOf+czZh65ojk1NTc348eOTnqKrOHLkSFFRUefXk6uvvrqpqSnZkXLeiRMnPvzww+eee67jcM6cOX6Sb5w8J80NviVz0d18881RFHW8Avndd9/dvn37qFGjkh4KsqypqWnevHlLly69/fbbT58+ffr06bP/kYeLobW19c///M8PHDgQRdEvf/nLV1991TOfi23+/Pkr/lNJScncuXMfeuihpIfKcS0tLZWVlfX19VEUpdPpl19+eeLEiUkPleNuv/32TCazdevWKIoymUxtba2dx+Nf/uVf3IYpNsOGDXvttdc6voceO3bszTff7PzBBVwkx48fLy8vT6fTURT9/Oc/f/PNN/29JU6ek+YGV2Bx0aVSqe9973uPPvpoYWHh3r17n3rqqSuuuCLpoSDLVq9e/eGHH86ePbvzkZkzZy5evDjBkXLe5z73uT/7sz+bOnXqiBEjdu7cOWfOnDvuuCPpoSDLiouLKyoqysrKSkpKdu/e/fDDD5eWliY9VI775Cc/+dxzz33zm99csWJFfX391772tZEjRyY9VO5ra2s7fPjwsGHDkh6kqxg6dOi3v/3tsrKy6667bu/evdOmTZs2bVrSQ+W4AQMGLFy48O67777uuuvee++95557rk+fPkkP1YV4TpobPtHe3p70DHQVH330UY8ePVyKD2RRW1tbJpP59Kc/7XVV5LC2traWlhbfQ2P2q1/96rLLLvO1hRzW8bUlLy/P53lsWltbT5482bNnz6QH6bo8J72kCVgAAAAABE13BAAAACBoAhYAAAAAQROwAAAAAAiagAUAAABA0AQsAAAAAIImYAEAAAAQNAELAAAAgKAJWAAAAAAETcACAAAAIGgCFgAAAABBE7AAAAAACJqABQAAAEDQBCwAAAAAgiZgAQAAABA0AQsAAACAoAlYAAAAAARNwAIAAAAgaAIWAAAAAEETsAAAAAAImoAFAAAAQNAELAAAAACCJmABAAAAEDQBCwAAAICgCVgAAAAABE3AAgAAACBo/w+V82+FZ6Fr4AAAAABJRU5ErkJggg==" 313 | }, 314 | "metadata": {} 315 | } 316 | ], 317 | "metadata": {} 318 | }, 319 | { 320 | "cell_type": "markdown", 321 | "source": [ 322 | "### Rampa" 323 | ], 324 | "metadata": {} 325 | }, 326 | { 327 | "cell_type": "code", 328 | "execution_count": 8, 329 | "source": [ 330 | "funcion = a * t;\r\n", 331 | "transformada = laplace(funcion, t, s)" 332 | ], 333 | "outputs": [ 334 | { 335 | "output_type": "stream", 336 | "name": "stdout", 337 | "text": [ 338 | "transformada =\n", 339 | "a/s^2\n", 340 | "\n" 341 | ] 342 | } 343 | ], 344 | "metadata": {} 345 | }, 346 | { 347 | "cell_type": "code", 348 | "execution_count": 9, 349 | "source": [ 350 | "transformada_inversa = ilaplace(transformada)" 351 | ], 352 | "outputs": [ 353 | { 354 | "output_type": "stream", 355 | "name": "stdout", 356 | "text": [ 357 | "transformada_inversa =\n", 358 | "a*t\n", 359 | "\n" 360 | ] 361 | } 362 | ], 363 | "metadata": {} 364 | }, 365 | { 366 | "cell_type": "markdown", 367 | "source": [ 368 | "#### Ejemplo Gráfico" 369 | ], 370 | "metadata": {} 371 | }, 372 | { 373 | "cell_type": "code", 374 | "execution_count": 10, 375 | "source": [ 376 | "syms f(t) g(t) h(t);\r\n", 377 | "f(t) = 1 * t;\r\n", 378 | "g(t) = 0.5 * t;\r\n", 379 | "h(t) = 2 * t;\r\n", 380 | "\r\n", 381 | "figure;\r\n", 382 | "hold on;\r\n", 383 | "fplot([f, g, h], [0 10])\r\n", 384 | "ylim([0 10])\r\n", 385 | "grid on\r\n", 386 | "legend(\"a=1\", \"a=0.5\", \"a=2\")" 387 | ], 388 | "outputs": [ 389 | { 390 | "output_type": "stream", 391 | "name": "stdout", 392 | "text": [ 393 | "\n" 394 | ] 395 | }, 396 | { 397 | "output_type": "display_data", 398 | "data": { 399 | "text/plain": [ 400 | "" 401 | ], 402 | "image/png": "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k8nUz5kPDw+vWbNmx44dra2tF1544YFe9sQTT2zfvv0rX/lKCOHUU0+96aabRgRYv/jFL3784x+fffbZ+/32+jnPOifAojSam5v/x//4H8uXL7/vvvsuuuiiK664Yvv27UkPBUC909QOQDllcoVMvhCvY5+Xbl559cyk50pGoVCYO3fuzJkz/+iP/mjNmjWLFi268847H3744YULF8Zf9sADD7z++uvvete7ok/f/e53P/fcc8PDw8Wdnj179rz00ksPP/zw008/fc4559x2220TJ2oKq0cCLEpjx44dv/vd7771rW9Fny5ZsmT+/PnJjgRAPRvemR3qXbF7yzpN7QCMtWIdeyY/lGppqpA69hevOi2Rv+7ZD/5H9MGvfvWrBQsW3H777SGERx555L777gshXHHFFYVCYcS3fOc73ylmUg0NDQ0NDXv27Dn++OOjP3nqqaeOP/74yZMnX3fddd/5znc+/vGPP/LII2X6m6GSCLAoje3bt1977bVr1qw59dRTn3nmmfXr1991111JDwVAPXpLU/tsTe0AjIkotAohxOvYO9LNSc/1pmKQlJRZs2bt2rXr1ltvHRgYePLJJ88888wQwsDAQHd3d/xlHR0dDQ0Nw8PDxT+JX78KIVx88cXbtm2LPr700ksnT548ODgYPUCMuiLAojRaW1tvu+22D3/4w+eee242m/3Wt741efLkpIcCoO4M9S4f6l3R1L7UQwYBGAvxy1aL57SGEPbde2nSQ1WoRx999MYbb7z77rsXLVq0efPme++9N4SwZcuWn/70p/GXnXfeeS0tLcUKmi1bthx//PHjx78ZVgwMDGzZsmXWrFkhhEmTJo0fP3779u0CrDokwKJkbrjhhhtuuCHpKQCoU7sGHhzqXTGuaXpzlTe1A1BpiqFVd3++Mi9bVabHHnts/vz5UR37rbfe+vzzz4cQZs2a9b3vfW/EK08//fQbb7xx8+bNp5566v333/+JT3wihNDT0/POd75z6tSpL7zwwmc+85l///d/nzhx4j/90z/98R//8YHa3KltAiwAoLppageg5Ip17PENwa707KTnqiaf+tSn5s2bd+WVV77++usdHR2vv/76iN3AomnTpv23//bf3vOe98ycOfM3v/lNV1dXCOFP//RP//Ef//EjH/nIZZddduWVV86cObO9vf2ll1568MEHy/63QkUQYAEA1arY1N7UvrSx7aqkxwGg6o2uY7cheNTOPvvswcHBHTt2TJo0qaGhYdmyZQd58X/6T//puuuuKxQKkyZNiv6k2HsVQrj77ru/+tWvvvHGG8WvUocEWABA9dHUDkCpVH4de1U78cQTD/OVDQ0NB8mnxo8fHy/Gog75rx8AqDKa2gE4dlFutWr9YAhBHTtUPgEWAFA1ouiqse0qTe0AHIXRdexdS85PTZmY9FzAoQmwAIAqMLwzu+3xa0IIk+eu1tQOwOHL5Ard/flNuYI6dqhqAiwAoKIVHzKoqR2AwxevY+9It6RaJtoQhKomwAIAKlS8qf2k9tVJjwNApYtCq0y+sOqpQXXsUGMEWABAJdLUDsDhyOQKmXyhpy9frGOfl25eefXMpOcCSkyABQBUlmJ0NeWKjUnPAkCFim8IplqaOtLN6tir2ssvv/z3f//3v/nNby688MK/+Iu/aGhoSHoiKo4ACwCoFHteW7fj2VtCCB4yCMBoUWgVQojXsdsQrAHbtm2bM2fOLbfcsmDBgu9///tPPPHE/fffn/RQVBwBFgCQvGJT+4mz7vGQQQDi4petFs9pDSGoY68Ww8PDa9as2bFjR2tr64UXXnigl61Zs6ajo+Nzn/tcCOG9733vtGnTBFiMJsACAJKkqR2A0YqhVXd/3mWrKlUoFObOnTtz5sw/+qM/WrNmzaJFi+68886HH3544cKF8Zc98MADV1555ZVXXhl9+qtf/erUU09NYl4qnQALAEhGFF1pagcgUqxjj28IdqVnJz1XtRrqXZ7IX7ep/a+iD371q18tWLDg9ttvDyE88sgj9913XwjhiiuuKBQKB/rezZs3X3/99d/85jfLMyrVRYAFACRAUzsAkRF17F2fnr3s8jOSHqoWFIOkpMyaNWvXrl233nrrwMDAk08+eeaZZ4YQBgYGuru74y/r6Ohoa2sLIbz44ouXX375LbfcsmjRokQGpsIJsACAsoqa2sc1TdfUDlC31LHXg0cfffTGG2+8++67Fy1atHnz5nvvvTeEsGXLlp/+9Kfxl5133nltbW1r1669+uqrv/vd7370ox9NaF4qnQALACgTTe0AdS7KrVatHwwhqGOveY899tj8+fOvu+66EMKtt976/PPPhxBmzZr1ve99b8QrN23a9PGPf/zhhx+++OKLExiUKiHAAgDGnKZ2gLo1uo69a8n5qSkTk56LMfepT31q3rx5V1555euvv97R0fH6668PDw83NDSMfuWKFStee+21uXPnFv9k3759ZZyU6iDAAgDGUDy60tQOUCcyuUJ3f35TrqCOvZ6dffbZg4ODO3bsmDRpUkNDw7Jlyw70ym9+85uK2zkkARYAMFaKTe2iK4B6EK9j70i3pFom2hDkxBNPTHoEaoQACwAoPU3tAHUiCq0y+cKqpwbVsQNjR4AFAJSSpnaAmpfJFTL5Qk9fvljHPi/dvPLqmUnPBdQyARYAUBrDO7NDvSt2b1mnqR2gJsU3BFMtTR3pZnXsFai9vT3pEWBMCLAAgGP1lqb22equAGpHFFqFEOJ17DYEK1Zvb2/SI8BYEWBRSplMpq+v7/TTT5850/1hgHqhqR2g9sQvWy2e0xpCUMcOJEuARcmsXLnyv//3/z537txf/vKXc+bM+fKXv5z0RACMLU3tALWkGFp19+ddtgIqjQCL0hgeHv7GN77x4x//+Kyzztq2bdvFF1983XXXuYcFUKsa3nhl+79+QVM7QLXLbtuT6d/a05ePbwh2pWcnPRfASAIsSmbfvn0TJ04MITQ1NTU0NLzxxhv7fdkhOwU7OztLP1wdy2azSY9Qd5x5+Tnzcmp445XGzfc3vr5+2+k37j79Q1t3hLAjk/RQdcH7vPycefk587LJbtvz0Avb171cyOQLqZZXLzp94sbPnvmHL27NZLYmOVyt8z4vs2w2m0qlkp6CEhBgURoNDQ3Lli379Kc/PX/+/Mcff3zRokXvete79vtKtYLl5/d1+Tnz8nPmZRBvat/cdpszLz9nXn7OvPyc+dgZXcf+tTktqXFbnXn5OXM4CgIsSmb9+vWTJk2aNm1ac3Nzf3//zp07J02alPRQAJTGyKb2TCbhgQA4PFFutWr9YAhhdB27y1ZAtRBgURpr1qx55plnOjs7x40bd+21137yk5/8/ve//5nPfCbpuQA4VlF01dh2laZ2gGoxuo69a8n5qSkTk54L4OgJsCiNfD5/9tlnjxs3Lvr07W9/+8DAQLIjAXCMhndmtz1+TQhh8tzVmtoBKlwmV+juz2/KFdSxAzVJgEVpvOMd7/jiF7/40ksvnXnmmdu2bVu/fv0nP/nJpIcC4CgN78z+7plb9g5lm9qXNrZdlfQ4ABxQ8bJVJj/UkW5JtUyMbwgC1AwBFqUxc+bMv/7rv164cOG55567YcOGBQsWLFiwIOmhADhi8ab2k9pXJz0OAPsRhVaZfGHVU4PFy1Yd6eak5wIYQwIsSmbRokWLFi1KegoAjt7IpnYAKkYmV8jkCz19+WId+7x088qrZyY9F0CZCLAAgDejqylXbEx6FgDeFN8QTLU0daSb1bED9UmABQB1bc9r63Y8e0sIQXQFUCGi0CqEEK9jtyEI1DkBFgDUqWJT+4mz7vGQQYDExS9bRaHVssvPSHoogEohwAKAuqOpHaBCFEOr7v68y1YAByHAAoA6EkVXmtoBElSsY49vCHalZyc9F0BFE2ABQL3Q1A6QoNF17PvuvTTpoQCqhgALAGpf1NQ+rml68/y1DZOmJz0OQL1Qxw5QKgIsAKhlmtoByi/KrVatHwwhLJ7TGkJw2QrgGAmwAKA2aWoHKKfRdexdS85PTZmY9FwANUKABQC1Jh5daWoHGDuZXKG7P78pV1DHDjDWBFgAUFOKTe2iK4AxEq9j70i3pFom2hAEGGsCLACoEZraAcZOFFpl8oVVTw2qYwcoPwEWAFQ9Te0AYyGTK2TyhZ6+fLGOfV66eeXVM5OeC6AeCbAAoIoN78wO9a7YvWWdpnaAUolvCKZamjrSzerYARInwAKAqvSWpvbZ6q4AjkkUWoUQ4nXsNgQBKocACwCqj6Z2gJKIX7ZaPKc1hKCOHaAyCbAAoJpoagc4RsXQqrs/77IVQLUQYAFAddDUDnDUinXs8Q3BrvTspOcC4HAJsACg0hXrriwMAhyR0XXsNgQBqpQACwAq11ua2qVXAIdBHTtATRJgAUCFGupdLroCOExRbrVq/WAIQR07QO0RYAFAxYma2kVXAAc3uo69a8n5qSkTk54LgNITYAFABYma2kMIk+eu9pBBgNEyuUJ3f35TrqCOHaCuCLAojVwu99JLL8X/5OSTT06lUgmNA1B9inVXHjIIMFq8jr0j3ZJqmWhDEKCuCLAojfXr13/+858vflooFBYuXPi3f/u3yU0EUDU0tQMcyJ2dGzP5wqqnBtWxA9Q5ARalcdlll1122WXRxz/72c9uv/32v/qrv0p2JICqoKkdIC6TK2TyhZ6+fLGOfV66eeXVM5OeC4CECbAosZ07d37hC1/46le/2ty8//9zrL29/eA/obOzcwzmql/ZbDbpEeqOMy+/Kj3z8TuenZi9a3fLh3bN+EEIIWQyCQ90JKr0zKuaMy8/Z15O2W17Hnphe89Lr7/6xm+mnzThotMn/uBPT5k+Ofq3lV2ZqvoNWV28z8vPmZdZNptVblMbBFiU2Pe+971zzjnnkksuOdALent7yzkPIQS/r8vPmZdfdZ15san9hPf/r+ptaq+uM68Nzrz8nPmYimqtQgjFOvZb39909XvPSXquuuN9Xn7OHI6CAItS2rVr18qVK3/wgx8kPQhAhRremR3qXbF7yzpN7UDditexL57TGkIo1rG7aQXAgQiwKKVHH320ra3tvPPOS3oQgIpTbGpval96wux7kh4HoKyKoVV3f14dOwBHQYBFKfX09Hzwgx9MegqAiqOpHahDxTr24obgssvP6ErPTnouAKqSAItSWrdu3cc+9rGkpwCoIEO9y4d6VzS1LxVdAXUiviGYamnqSDcXNwQB4KgJsCiZ4eHhLVu2vOMd70h6EICKsOe1dTuevWVc0/Tm+Wurt6kd4DDd2bkxxOrYbQgCUFoCLEqmoaHBEwYBwh8eMrh3KKupHaht0WWrVesHQwgj6tgBoLQEWABQMsWm9sa2BSe1r056HIDSG13H3rXk/NSUiUnPBUCNE2ABQAnEoyt1V0CNyeQK3f35TbmCOnYAkiLAAoBjpakdqEnxOvaOdEuqZaINQQCSIsACgKOnqR2oMVFolckXVj01qI4dgMohwAKAo6GpHagZmVwhky/09OWLdezz0s0rr56Z9FwA8CYBFgAcmeGd2aHeFbu3rNPUDlS1+IZgqqWpI92sjh2AiiXAAoDD9Zam9tnqroBqdWfnxngduw1BACqfAAsADoumdqB6xS9bLZ7TGkJQxw5AdRFgAcAhaGoHqlExtOruz7tsBUC1E2ABwAFpageqS7GOPb4h2JWenfRcAHCsBFgAsB/Fpvam9qWNbVclPQ7AwYyuY7chCECNEWABwFtoageqQhRahRDUsQNQDwRYAPAmTe1AhYtyq1XrB0MI6tgBqB8CLAAI4Q/R1YSpF2lqByrN6Dr2riXnp6ZMTHouACgfARYA9W54Z3bb49eEECbPXa2pHagQmVyhuz+/KVdQxw4AQYAFQD0rPmTQwiBQIeJ17B3pllTLRBuCABAEWADUp3hT+0ntq5MeB6hrUWiVyRdWPTWojh0A9kuABUDd0dQOJC6TK2TyhZ6+fLGOfV66eeXVM5OeCwAqlAALgDpSjK6mXLEx6VmAehTfEEy1NHWkm9WxA8DhEGABUBf2vLZux7O3hBA8ZBAosyi0CiHE69htCALAERFgAVDjik3tJ866x0MGgbKJX7ZaPKc1hKCOHQCOmgALgJqlqR0os2Jo1d2fd9kKAEpIgAVAbdLUDpTH6Dr2rk/PTnooAKg1AixKKZfLPfvssyeccMKFF16Y9CxA/dLUDpSBOnYAKCcBFiXT09PzhS98Ye7cuZs2bWpsbPyHf/iHhoaGpIcC6kvU1D6uabqmdmAsqGMHgKQIsCiNvXv3fuELX1i+fPl73vOeEMJHP/rRxx577EMf+lDScwH1QlM7MHai3Kq4IRjUsQNA2QmwKI2enp7TTz89Sq9CCP/n//yfZOcB6sfwzmzj5vu39f2LpnaghDK5woqf5599JF+sY7chCAAJEmBRGvl8vq2t7Y477vjf//t/jxs37i//8i9vvPHG/b6yvb394D+qs7NzDAasX9lsNukR6o4zL5uGN16ZkO+ckH9027iLd531gxBCyGQSnqlueJ+XnzMvg+y2PeteHnp5257lT+anTx7/wdP23fSuU1d+pOX3X972SmZbovPVAe/z8nPm5efMyyybzaZSqaSnoAQEWJRGX19fZ2fnHXfc8cUvfrG3t/f6669vb29/3/veN/qVvb295R+vzvl9XX7OvAyKTe1NFz6xI5Nx5uXnzMvPmY+ReB17R7ol1XLivntnhxAyfrckwZmXnzMvP2cOR0GARWn88R//8dvf/vZFixaFENrb2z/4wQ8+8sgj+w2wAI6Rpnbg2EWhVSZfWPXUoDp2AKh8AixKY+rUqfFPPX8QGAua2oFjkckVMvlCT1++WMc+L9288uqZSc8FAByaAIvS+MAHPnDHHXd0dXV94AMfyOVya9euvfvuu5MeCqgdwzuzQ70rdm9Z1zx/bdKzAFUmviGYamnqSDerYweAqiPAojQmTJjwrW9965Zbbvnud7/b19f3n//zf77wwguTHgqoBcM7s7sGHtw18FBj24Lm2dIr4LBEoVUI4W8f22hDEABqgACLkpkzZ05XV1fSUwA1pdjU7uIVcDjil60Wz2kNIey799KkhwIASkCABUAl0tQOHKZiaNXdn3fZCgBqlQALgMqiqR04pNF17MsuP6MrPTvpuQCAsSLAAqBSFJvam9qXNrZdlfQ4QMVRxw4AdUuABUDyNLUDB6KOHQAIAiwAEqepHRgtyq3iG4LLLj8j6aEAgMQIsABIzFDv8l0DD2lqByKj69htCAIAEQEWAAkY3pnd9vg1IQRN7VDnMrlCd39+U64Q3xBUxw4AjCDAAqCsig8Z1NQO9Sxex96Rbkm1TNx376VJDwUAVC4BFgBlEm9qP6l9ddLjAOUWhVaZfGHVU4Pq2AGAIyLAAqAcNLVDfcrkCpl8oacvX6xjn5duXnn1zKTnAgCqjAALgLFVjK6mXLEx6VmAMolvCKZamjrSzerYAYBjIcACYKzseW3djmdvCSF4yCDUgyi0CiHE69htCAIAJSHAAqD0ik3tFgah5sUvW0Wh1bLLz0h6wRfvBAAAIABJREFUKACg1giwACglTe1QD4qhVXd/3mUrAKAMBFgAlIymdqhho+vYl11+Rld6dtJzAQB1QYAFQAloaodapY4dAKgEAiwAjknU1D6uabqmdqgZ6tgBgEojwALgKBWb2k+cdc/4ky9KehzgWEW5VXFDMISw795Lkx4KACAEARYAR0FTO9SM0XXsNgQBgAokwALgCMSjK03tUKUyuUJ3f35TrhDfEFTHDgBUMgEWAIfLQwahqsXr2DvSLamWiTYEAYBqIcAC4NA0tUOVikKrTL6w6qlBdewAQPUSYAFwMJraoepkcoVMvtDTly/Wsc9LN6+8embScwEAHD0BFgD7N7wzO9S7YveWdZraoSrENwRTLU0d6WZ17ABAzRBgUTK5XO6ll14qfnr22WdPnjw5wXmAo/aWpvbZ6q6gckWhVQghXsduQxAAqD0CLErmRz/60Te/+c3Gxsbo0/vuu+9973tfsiMBR0FTO1S++GWrxXNaQwjq2AGA2ibAomQ2bNhw++23X3vttUkPAhwlTe1QybLb9tzfubG7f2t3f95lKwCg3giwKJnnn39+0aJFuVzupJNOmjBhwoFe1t7efvCf09nZWerR6lo2m016hLpTjWfe8MYrTQN3Hbf7lcL02/acOGvLb/eEkEl6qCNQjWde7Zx5eWS37clu3/Pz7NCDv9q+Z8/eq9/ZfNO7mlZ+pOUPX9+ayWxNcr5a531efs68/Jx5+TnzMbUvNxjyr+zLDe7LD0YfD/f/W3jwP5KeixIQYFEae/fu/c1vfvOlL30pl8tt3br14x//+Je//OX9vrK3t7fMs5FKpZIeoe5U0ZkXm9qb2pc2tl2V9DhHr4rOvGY487Ezuo597Wdnhm2vOPPyc+bl58zLz5mXnzMvid2/HdjzanbnhsdDCEMbnggh7Nzw+IRpbRNOaRs/bfqEU9omnHXehFPaNp/QmvSklIYAi9LYvHnz/PnzP//5z5922mmbN29euHDh6tWrr7nmmqTnAg5IUztUlEPWsWe2JTccACRqRFa1+7cDu18diLKqpnMvDiFMXXhzCGH6uQ/u55szmbLOypgRYFEap5122n333Rd9fOqpp37wgx98+umnBVhQsTS1Q4WIcqtV6wdDCOrYAahzu387EKKI6tXffxCFViOyquiCVbKjUn4CLEpj06ZNTz311FVX/X7/6I033hg3blyyIwH7tWvgwaHeFZraIUHFDcFiHXvXkvNTUyYmPRcAlE88qypesJowrS2E0HTuxVE+NXXhzfu/VEVdEmBRGoVCYdmyZbNmzZoxY8bmzZv/7//9v3fddVfSQwFvMbwzu+3xa0IIJ866Z/zJFyU9DtSXTK6QyRd6+vLxDcGu9Oyk5wKAMRdfANxvVjXp3LkTTmmTVXFwAixKo729/fbbb1+4cOF55533y1/+8rOf/ez73ve+pIcCfm94Z/Z3z9yydyhb7U3tUHVG17HbEASghh2yrEpWxVETYFEy11577bXXXpv0FMBbxJvaT2pfnfQ4UBcOWccOADVg928HlFVRTgIsgJqlqR3Kqbt/a09fXh07ADVGWRUVQoAFUIPi0ZWmdhg78Tr2jnRLR7pZHTsA1SvKp6K9P2VVVBoBFkBN2fPauh3P3hJCEF3BGMnkCt39+U25gjp2AKrXiLKqEEKUVU04pS3a+5NVUWkEWAA1otjU7iGDMBbidewd6ZZUy0QbggBUvmgB8ODF6lMX3hxCkFVR4QRYAFVPUzuMkfiGoDp2AKrCtq4H4sXq0QKgYnVqgAALoLppaofSyuQKmXwhXsduQxCASnPIsqqgWJ2aI8ACqFbF6GrKFRuTngWqXnxDMNXSpI4dgAqhrAoiAiyAqrT1Xy4Z1zRdUzscuzs7N8br2G0IApCsLQ/cG5RVwSgCLIBqMrwzO9S7YveWdZra4ahFl62KG4IhBHXsAJRTVKw+tOGJeFlVCGFEVqWsCuIEWADVodjU3tS+9ITZ9yQ9DlSZ0XXsNgQBKIN4VhUtA76x4fGssio4cgIsgCow1Ls8esigpnY4fMU69viGoDp2AMZIvKxqv8XqUVnVnhO+kUqlEp4VqpAAC6Ciia7gSI2uY7chCEBpjShWH11WdbBi9UymvMNCjRBgAVSo4Z3ZbY9f09i2YPLc1Zra4eCi0CqEoI4dgBIaXVY1OquafqftPygHARZAxRnemf3dM7fsHcqKruDguvu39vTl1bEDcOxGl1WNWAAMitUhUQIsgApSbGr3kEE4kHgde0e6pSPdrI4dgCMS5VPRXaqDlFUpVoeKIsACqBTqruBAMrlCd39+U66gjh2AIzKirCqEEGVVE05pi+5SyaqgWgiwAJI31Lt8qHdFU/tS0RXExevYO9ItqZaJNgQBOJBDFqsrq4KqJsACSNKe19btePaWxrYFU67YmPQsUBHiG4Lq2AEYbXSxehRaxbMqZVVQewRYAMmImtpDCJraIZMrZPKFeB27DUEAwmGUVYUQpi682QIg1AMBFkC5aWqHSHxDMNXSpI4doJ4pqwIOToAFUFaa2qlzUWgVQojXsdsQBKgrBy+rmrrw5qQHBCqRAAugTDS1U8+i3Kq4IRhCUMcOUPOUVQElJMACGHO7Bh4c6l0xrmm6pnbqyug6dhuCALUqnlUpqwLGggCL0vvFL35x2mmnTZs2LelBIHnDO7PbHr8mhKDuijpRrGOPbwiqYweoJfEFwP1mVcqqgLEgwKLE+vr6rr/++r/7u7+bP39+0rNAkqKHDO4dyja1L21suyrpcWBsja5jtyEIUAMOXlYVQph07tzJH1iY9JhAXRBgUUq7d++++eabTz755KQHgSQ1vPHKUO+Po6b2k9pXJz0OjBV17AA1Y3RZ1eisSlkVkCwBFqX0zW9+80/+5E82bNhwkNe0t7cf/Id0dnaWdKh6l81mkx6hvjRuvv/Ezau2nrp414wfhBBCJpPwQPXB+7yc1r1c+Hl26B+f2zp+/G+uOuekEMLGz575hy9uzWS2JjhbbfM+Lz9nXn7OvDz25Qb39T+zLz+4Lze465XMi9nnj2tpDSEcl5593JTWEELD+68LLW87fkprCGFPCNtDCNF/7tzrn22Onfd5mWWz2VQqlfQUlIAAi5J58sknf/7zn//TP/3TTTfddJCX9fb2lm0kIn5fl0fxIYOvtqz+47PVXZWb9/mYitexd6RbOtLN/+sTJ73v/5mR9Fx1x/u8/Jx5+TnzEooWAKO7VCPKqiade/GEU9omnHXeluEJZ/zJnyU9ad3xPoejIMCiNLZt23bHHXd85zvfSXoQSMCe19btePaWEELz/LUNk6YP+38mqQmZXKG7P78pV9hvHXvG+xygkowoqwohRFnVhFPaor2/AxWr5/w+B6qEAIvSuPvuu9/xjnds2rRp06ZNuVxuw4YNbW1th9wWhGpXbGr3kEFqRryOvSPdkmqZqI4doKIcslh96sKbQwgeAgjUGAEWpTFt2rTnn3/+hz/8YQjh5Zdf7unpmTx5sgCLGja8M7tr4EFN7dSG+IagOnaACjG6WD0KrRSrA/VJgEVpLF26tPjxTTfd9IlPfGL+/PkJzgNjqlh31Tx/bdKzwFHK5AqZfKGnL79q/WAIYfGc1q5Pz056KIA6dZCyqqZzL47yqakLb3apCqhnAiyAI1CMrqZcsTHpWeBoxDcEUy1NHenmriXnp6ZMTHougHpx1GVVAHVOgEXpffe73016BCi9qKl9XNP0qKk96XHgCEShVQghXsduQxBgrCmrAighARbAIWhqp0pFuVVxQzCEoI4dYIzs/u2AsiqAMSXAAjggTe1UndF17DYEAUooXqyurAqgnARYAPsRRVea2qkKxTr2+IZgV1ojO8AxiS8A7jerUlYFUE4CLICRNLVTFUbXsdsQBDg6hyyrklUBJE6ABfAmTe1Uvjs7NwZ17ADHYFvXA8Wyqv0WqyurAqhAAiyAEDS1U9m6+7f29OXVsQMcvsMsq5JVAVQLARZQ74pN7aIrKkq8jr0j3dKRblbHDrBfUT4V3aVSVgVQqwRYQF0b6l0ePWRQUzuVIJMrdPfnN+UK6tgB9mtEWVUIIcqqJpzSFt2lklUB1CoBFlCnik3toisSF69j70i3pFom2hAEiGx54N5w4LKqEIKsCqBOCLCAuhM1tTe2LfCQQRIU3xBUxw7Us3hZ1d6tW7MvvxBdsFKsDkCcAAuoI1FTewhh8tzVHjJI+WVyhUy+EK9jtyEI1JVDllWFEKYuvNmlKgBGE2ABdUFTO8m6s3NjtCGYamlSxw7Ug6Mrq9qeyTSlUokMDECFE2ABtU9TO+UXbQiGEOJ17DYEgRqmrAqAMSXAAmqZpnbKLF7HvnhOawhBHTtQM+JlVdEHyqoAKBsBFlCbNLVTNurYgdoTz6qUVQFQCQRYQK3R1E4ZFOvY4xuC6tiBahQvq9pvVrXfsioAKDMBFlA7NLUz1uIbglEduw1BoBpteeDe/ZZVyaoAqFgCLKAWFKMrTe2UnDp2oOpEC4DxhwDut1hdWRUAVUSABVQ9DxlkLHT3b+3py69aPxhCUMcOVKyDlFXJqgCoJQIsoIp5yCClFa9j70i3dKSbu5acn5oyMem5AEL4Q0FVdJdKWRUA9UaABVSl6CGDIYTm+Ws1tXMsMrlCd39+U66gjh2oHPFi9aENT4QQoqxqwilt0V0qWRUA9UaABVSZ6CGDe4eymto5FvE69o50y8qrZy67/IykhwLq0YisanRZ1fQ7pVQAIMACqke8qf2k9tVJj0P1iW8IqmMHyixeVhV9EIVWitUB4HAIsCil3t7egYGBGTNmpFKppGeh1qi74uhkcoVMvhCvY7chCIy1Q5ZVhRCmLrzZAiAAHD4BFiXzd3/3d//8z/98wQUXfP3rX//EJz5x0003JT0RNaIYXU25YmPSs1A14huCqZYmdezAGFFWBQDlIcCiNH79619///vfX7t2bXNz86uvvjpv3rxPfOITU6ZMSXouqlvU1D6uabqmdg5HFFqFEOJ17DYEgVI5ZFnV1IU3hxBkVQAwFgRYlEY6nf7Rj37U3NwcQpgwYcLevXt3796d9FBUMU3tHL5MrrDi5/lnH8ln8kOL57SGEPbde2nSQwFVrFhWtffXv9zS3KysCgAqgQCL0mhoaJgxY8bevXsffPDBH/7wh3/5l3956qmn7veV7e3tB/9RnZ2dYzBg/cpms0mPcGQa3nhlQr5zQv7R3S0f2jXja1t3hLAjk/RQR6bqzrwaZbfteeiF7eteLqx7eWj65PEfPG3fTe869aLTW6KvZjKZRKerC97n5efMx8K+3GAIYV//M/vyg/tygyH/ynD/vx3X0hpCOC49e/v4E0IIDe+/7vhPfiN6/Z4QtocQov/cuTf4bVNq3ufl58zLz5mXWTab1dFcGwRYlFIul9u1a9cpp5zyr//6rzfccEN0IWuE3t7e8g9W56rl93X0kMGo7qrpwieSHueYVMuZV5diHXtxQ/Brc1qiDcFMJuPMy8+Zl58zPxbxBcARxeqTzr14wiltE846r3jBKuJ3SyKcefk58/Jz5nAUBFiU0rRp02644YYbbrjhz//8z++///6lS5cmPRFVQ1M7BzKijr3r07OXXX5G0kMBFe2QZVWTzp07+QMLkx4TADgCAixK46WXXnr88cevv/766NO3ve1tr7zySrIjUS00tTOaOnbgcERlVYcsVldWBQA1QIBFaezdu/drX/va3LlzzzzzzNdee+1nP/vZl770paSHotJpameE7v6tPX35VesHQwjq2IG4YrH67lcHRiwAyqoAoB4IsCiNs84662/+5m8+/vGPX3DBBU8//fSSJUsuvdS/dnJAwzuzQ70rdm9Z19i24KT21UmPQ5KKG4Ld/fmOdEtHurlryfmpKROTngtITJRPRXepRmRVTedePOGUtknnzp1wStv0cx9MelIAoHwEWJTMNddcc8011yQ9BZUuamrfNfBQY9uC5tlrkx6HZGRyhe7+/KZcIb4h2JWenfRcQLmNKKsKIURZ1YRT2qK7VLIqACAiwALKp9jU3jxfdFWP4nXsHemWVMtEG4JQPw5ZrD514c0hBFkVALBfAiygHDS11634hqA6dqgH8bKq6IMotFKsDgAcCwEWMLY0tdehTK6QyRfidew2BKEmHbKsKoQwdeHNLlUBAMdOgAWMlWLdleiqTsQ3BFMtTerYoZYoqwIAkiXAAsbEUO/y3ze1q7uqaVFoFUKI17HbEISqpqwKAKhAAiygxDS114P4ZavFc1pDCOrYoRrt/u2AsioAoCoIsICSiZraG9sWTLliY9KzUHrq2KF6xYvVlVUBANVIgAWUQNTUHkKYPHe1hwzWkmIde3xDUB07VLJDFqsrqwIAqpEACzgmmtpr0ug6dhuCUIEOUlalWB0AqDECLOAoFaMrTe21QR07VLh9/c9sefKhcOBidWVVAEANE2ABR8NDBmtGd//Wnr78qvWDIQR17JC4g5RV7Z08LVzwgSCrAgDqkgALODLFpnbRVfWK17F3pFs60s1dS85PTZmY9FxQX460rCqTyUxNpZKcGAAgOQIs4HBpaq9qmVyhuz+/KVdQxw7lN6KsKoQQZVXKqgAADpMACzi04Z3Zod4Vu7es09RedeJ17B3pllTLRBuCMNaGNjyx32L1YllVCEFWBQBwRARYwMEUm9qb2peeMPuepMfhsMQ3BNWxwxiJl1WFWGilWB0AYCwIsIAD0tReRTK5QiZfiNex2xCEUjlkWVUIYerCm12qAgAYOwIsYD80tVeL+IZgqqVJHTscI2VVAACVSYAFvIWm9mpxZ+fGeB27DUE4alseuFdZFQBAhRNgAb8XRVd7h7Ka2itT/LLV4jmtIQR17HA4lFUBANQAARbwZlN7Y9uCk9pXJz0Ob1LHDkcknlUpqwIAqCUCLKhrUXQ11LuiqX2puqsKUaxjj28IqmOHEQ5ZrK6sCgCglgiwoH4N9S6PoqspV2xMehb2U8duQxAiI4rV42VVitUBAOqEAAvqUfSQwXFN05vnr9XUnqAotAohqGOH8IcFwANlVcWyqugDAADqigCLUurr68tkMlOmTDn//POTnoX909ReCbr7t/b05VetHwwhqGOnPh2krEqxOgAAowmwKJkvf/nLa9asueCCC1588cUTTjhh5cqVjY2NSQ/FmzS1Jytex96RbulIN3ctOT81ZWLSc8GYU1YFAMCxE2BRGi+88ML//J//c+3atc3NzSGEP/3TP/3JT35y1VVXJT0XIbw1utLUXk6ZXKG7P78pVyhuCHZ9Whc7tWxEWVUIIcqqlFUBAHCMBFiURnNz83e/+90ovQohnHHGGf/xH/+R7EhEGjffv/XfV3nIYDllt+25v3NjVMfekW5JtUy0IUjt2ZcbHPrd4EHKqqbfKaUCAKBkBFiURmtra2tra/Txpk2burq6lixZst9Xtre3H/xHdXZ2lni4ejV+x7MTs3ftHW7Zcc7qbce/LWQySU9Uy7Lb9jz0wvZ1LxfWvTz0tknHXf3O5pve1XTR6S3RVzMOf4xls9mkR6hZ+3KDIYR9/c/sy//+g+H+fwsh7J087eVpbcelZ4cQGt5/XWh52/FTWkMIe0LYHkIIYbu3fal5n5efMy8/Z15+zrz8nHmZZbPZVCqV9BSUgACLEtu8efPixYs//elPz5w5c78v6O3tLfNIdejNpvY5f5fd8Ta/r8dIJlfI5AvxOvavzWnpSDdnMhlnXn7O/NgdpKxq0rkXR2Xqk264Pbpg5X2eCGdefs68/Jx5+Tnz8nPmcBQEWJTSL3/5y5tuuum//Jf/8slPfjLpWerU8M7sUO+K3VvWNbUvbWy7KoQQdmQSnqnmFOvYM/mhVEuTOnaqkbIqAACqiwCLknn88ceXLl36la985bLLLkt6lnr0lqb22equSiwKrUIIxTr2ZZef0ZFuTnouOLQRWdXosqqpC28OIciqAACoZAIsSmNgYOAzn/nMvffe+773vW/37t0hhIaGhnHjxiU9V70Y6l0+1LtCU3vJxS9bLZ7TGkJQx07F2v3bgRBFVK/+/oMotBqRVUUXrJIdFQAAjpQAi9L44Q9/+Lvf/e5Tn/pU8U+uu+66O+64I8GR6sSugQeHeleMa5rePH9tw6TpSY9TC4qhVXd/3mUrKlM8qxpRVtX0h7KqqQtvdqkKAICaIcCiNG677bbbbrst6Snqy5tN7bPuGX/yRUmPU92KdezxDcGu9Oyk54KDFatHWZWyKgAA6oEAC6pPsandwuAxGl3HbkOQBB2krEqxOgAAdU6ABdVEU/uxU8dO4qIFwEMWqyurAgCAIgEWVA1N7ceiu39rT19+1frBEII6dspvywP3jlgAlFUBAMDhE2BBFYiiq8a2qzS1H5F4HXtHuqUj3dy15PzUlIlJz0VtUlYFAABjR4AFFW3Pa+t2PHtLCGHy3NWa2g9HJlfo7s9vyhXUsTN2RpRVhRCirEpZFQAAjBEBFlQoDxk8IvE69o50S6plog1BSuIgxerFBcAQgqwKAADGlAALKk68qf2k9tVJj1O54huC6tg5RlGx+tCGJ3a/+vsPotBKsToAAFQCARZUFk3tB5fJFTL5QryO3YYgR+qQZVUhhKkLb3apCgAAKocACypFMbqacsXGpGepOPENwVRLkzp2DpOyKgAAqA0CLEhe1NQ+rmm6hwzGRaFVCCFex25DkANRVgUAADVMgAVJ0tQ+Wvyy1eI5rSEEdezEHaisKqusCgAAapcAC5KhqT1OHTv7Fc+qDl5WlclkUqlUstMCAABjR4AF5RZFV5rai3Xs8Q1Bdex165DF6sqqAACgngmwoKw0tY+uY7chWG8UqwMAAEdKgAVlUudN7Xd2bgzq2OtSsaNKsToAAHDUBFgw5opN7fW2MNjdv7WnL79q/WAIQR17bTtIWZVidQAA4NgJsGAM1WFTe7yOvSPd0pFu7lpyfmrKxKTnomSUVQEAAOUnwIIxEY+uav7iVSZX6O7Pb8oV1LHXGGVVAABAhRBgQekVm9prO7qK17F3pFtSLRNtCFY1ZVUAAEDFEmBBKdV8U3t8Q1AdezWKl1WFWGg1IqtSVgUAAFQUARaURrGp/cRZ94w/+aKkxymlTK6QyRfidew2BKvCIcuqQghTF97sUhUAAFD5BFhwrIZ3Zod6V+zesq6pfWlj21VJj1My8Q3BVEuTOvZKFi+rimdVyqoAAIDaIMCCo/eWpvbZNVJ3dWfnxhBCvI7dhmBl2vLAvfstq5JVAQAAtUeABUeplpra45etFs9pDSGoY0+csioAAIAiARalt3bt2ksuuSTpKcbQroEHh3pXVHtTuzr2yhHPqpRVAQAAjCbAosS+/e1vr169eu3aqr+UtF/V3tRerGOPbwiqYy+nQxarWwAEAAAYTYBFyWzduvWuu+7q7Ow84YQTkp6l9Kq6qX10HbsNwTKIF6sPbXgihKBYHQAA4OgIsCiZ5cuXT5ky5atf/epXvvKVg7ysvb394D+ns7OzpHMdq4Y3XpmQ75yQf3R3y4d2zfjB1r0hZDJJD3Vo2W17Hnphewhh+ZP56ZN/c9U5J930rqaLTm+Jvpqphr+FarEvNxhCCPlXhvv/LYSwr/+Z3a8OvLjt1eNaWo+b0npcenYIoeH914UQjv/kN0IIe0LYE0Kh+P3+uyiFbDab9Ah1x5mXnzMvP2defs68/Jx5+TnzMstms6lUKukpKAEBFiVzxx13NDQ09PT0HPxlvb295ZmnJIpN7U0XPpH0LIelu39rT19+1frBEEJUx77xsy1+X5fKQcqq3nwI4A23v7IrnHH+xQnPWn+8z8vPmZefMy8/Z15+zrz8nHn5OXM4CgIsSqahoSHpEUopiq4a266q/Kb2eB17R7qlI93cteT81JSJv/+qCz5H5VjKqo5z5gAAACUlwIKR9ry2bsezt4QQJs9dXbFN7Zlcobs/vylXUMd+7JRVAQAAVDgBFryp+JDB5vkV+hTFeB17R7ol1TJRHfsRGZFVRResoqwqWgCcfqeUCgAAoOIIsCCEEIZ3ZncNPLhr4KHGtgUnta9Oepy3iEKrTL6w6qnB4mWrjnRz0nNVtHhZVfRBFFrFs6qpC2+OLlglOyoAAACHJMCCN5vaK+fiVSZXyOQL8Tr2eenmlVfPTHquCrX7twP7LVaPyqpCCFMX3mwBEAAAoHoJsCixefPmrV1bKTHQIRWjqylXbEx6lhDeuiGYamkaUcdOfAHwSIvVAQAAqF4CLOpU1NQ+rml64g8ZjEKrEEK8jt2G4CHLqmRVAAAA9UOARd0pNrWfOOueBB8yGL9stXhOawihPuvYlVUBAABwSAIs6kglNLXf2bmxu39rd3++Di9bxbMqZVUAAAAcPgEWdSGKrhJpai/Wscc3BLvSs8s5Q/lF+VS096esCgAAgGMkwKL2JdLUPrqOvVY3BEeUVYUQoqxqwilt0d6frAoAAIBjJMCilpW5qb2269ijBcCDF6tPXXhzCEFWBQAAQGkJsKhN5Wxq7+7f2tOXX7V+MIRQG3XsBymrUqwOAABA+QmwqDXlaWovbgh29+c70i0d6eauJeenpkwco7/c2FFWBQAAQOUTYFE74tHVWDS1Z3KF7v78plyhSuvYlVUBAABQpQRY1IhiU3vJo6t4HXtHuiXVMrHyNwTjWdWep7s2bntVWRUAAADVS4BF1RuLpvYotMrkC6ueGqzkOvZ4WVX0QRRaxbOqcZfdOP28OcqqAAAAqF4CLKpYaZvaM7lCJl+I17HPSzevvHpmKSYtgYMUq0dlVSGEqQtvHn2pansmI70CAACgqgmwqErDO7NDvSt2b1l37E3t8Q3BVEtTJdSxxxcAFasDAACAAIsq85am9tlHWXcVhVYhhHgdeyIbgiOK1aOnAcYXAGVVAAAAIMCimhxjU3v8stXiOa0hhPLXsW954N5wgLKqqQtvjp4GWOaRAAD9sTnyAAAMp0lEQVQAoMIdt2/fvqRnoI60t7f39vYexTfuGnhwqHfFuKbpJ8y+54ia2ouhVXd/PrpsNW9Gy5hetjqcsqpJ586NQqsyOOoz56g58/Jz5uXnzMvPmZefMy8/Z15+zrz8nHmZOfCa4QYWle4omtqLdezxDcGu9OySzxblU9Hen7IqAAAAGCMCLCpXsam9qX1pY9tVh3z96Dr2Em4IjiirCiFEWdWEU9qivT9ZFQAAAIwRARaV6PCb2seojr3YUbXfYvWpC28OIciqAAAAoDwEWFScw2lq7+7f2tOXX7V+MIRw1HXs8bKq8IfQKloAVKwOAAAAlUOARQWJoqvGtqua568d3dQer2PvSLd0pJs33j73MH/yIcuqQghTF97sUhUAAABUIAEWFWHPa+t2PHtLCGHy3NXxpvZMrtDdn9+UKxx+HbuyKgAAAKgxAiwSVnzIYLypPV7H3pFuSbVM3O+G4IisSlkVAAAA1CQBFqU0MDDQ29vb1tbW3t5+yBfHm9pPal+dyRXu79yYyRdWPTU4oo59928Hdv92YERZVQhhRFalrAoAAABqkgCLkvnJT37y9a9/fe7cuU8//fTHPvaxpUuXHuTFUd3V5mk3bT7jJz19+VUPPh5CWDyn9b2Td/z9bWcNbXhi96tP7P7ngayyKgAAAKh7AixKY+/evcuWLXvggQdmzJiRy+UuvfTSj33sY6lUavQro+jq7szHsuG7v+789YWFvwkhrE7tmb7ntZ3fe3zCtLbsT36fVSmrAgAAAEIIx+3bty/pGagFXV1dX/rSl9asWRN9+l//6399z3vec/3114942Yb7zzx5195fPdncuvXV377RsHn3cc/tGB9C2Lz7uN++0fDL340r99wAAADUtN7e3qRHoATcwKI0tm7des455xQ/PfHEE1988cXRL2v/f384/uSLTv2LEEI4O4QQwoLyzAcAAABUrYakB6BG7N27t6HhzbdTQ0PD8PDw6JeNP/miMg4FAAAA1AIBFqXR2Ni4d+/e4qfDw8Pjx7vfBwAAAJSAAIvSOOWUU5577rnip/l8/oILLkhwHgAAAKBmCLAojXe/+90hhJ6enhDCr3/968cff/ziiy9OeigAAACgFngKISXz85///HOf+9yMGTM2bNjw5S9/+UMf+lDSEwEAAAC1QIAFAAAAQEWzQggAAABARRNgAQAAAFDRxic9APViYGCgt7e3ra2tvb096Vnqy9q1ay+55JKkp6gXfX19mUxmypQp559/ftKz1Ive3t6BgYEZM2akUqmkZ6kvv/jFL0477bRp06YlPUjty+VyL730UvHTs88+e/LkyQnOUydyudyzzz57wgknXHjhhUnPUvtGvMlDCCeffLLf6mWQyWT6+vpOP/30mTNnJj1LvYj+WfGss856+9vfnvQsdWHEvwr5d9JqpwOLcvjJT37y9a9/fe7cuU8//fTHPvax/7+9ew1p6v8DOH5+81ezC7EuZhYVkVlNRcIuaCZZGl0ssIuBhXR5UF5KCiKtsCArytAQiewmRumDogiiKyVrOvKG1FJIV7FKaZGbWdrUtv0fyH/Ev6dt3/M/5/169vXRm6nn7PvZOWc5OTmii9Ti/PnzVVVVRqNRdIgqFBQUPHv2LDo6uq2tbdSoUeXl5VqtVnSUwhUXFz948CA6OrqhoWHTpk27du0SXaQWFoslJSWluLg4MTFRdIvyXblypaioyHs8KSkpiYuLE5ukeAaDIS8vLzY21mq1arXaa9euaTTcteBDjx8/zs3N9S6dTmdqauqxY8fEFalCeXn55cuXY2NjzWbz/PnzCwoKRBcpX2Fh4Z07dxYvXmw2m5OTk7Ozs0UXKdz/bIXYkyqBB/CxX79+zZs3r7293ePxdHV1RUVFvX//XnSU8jkcjtzc3Hnz5sXFxYluUYXW1taIiAiHwzG0TE5OvnnzptgkxWtra/O+5l++fJk7d25XV5foKFUYGBhYt27d0qVLnzx5IrpFFfbt23fjxg3RFSry69evmJiYurq6oeWaNWsePHggNklVjEZjfHy893wKH3G5XHq9vq2tzePxfPv2Ta/Xt7a2io5SuFevXkVERHR2dno8HqfTmZCQ8OrVK9FRivXnVog9qTLwaRJ87vnz5zqdLjQ0VJKkcePGxcfH19TUiI5SvnPnzo0bN+7kyZOiQ9RCp9OVlZXpdLqh5YwZMzo7O8UmKd7MmTPv3Lkz9JoPGzbM5XINDg6KjlKFoqKi5cuXh4WFiQ5Ri9bW1pkzZ9rtdv7C/cNgMEyZMmXhwoVDy3v37q1cuVJsknr09fXl5eUVFBR4z6fwHY/HExgYKEnSiBEjNBrNwMCA6CKFs1gsS5YsCQkJkSRJq9VGR0c/evRIdJRi/bkVYk+qDDwDCz7X3d09Z84c73L06NFtbW0Ce1QiPz9fo9EYDAbRIWoREhIy9I5EkiSr1VpdXZ2RkSE2SfE0Gk1oaKjL5bp161ZlZWVWVlZwcLDoKOWrr6+vq6u7ffs2N2z6h8vl+vDhw/Hjx+12e3d39/r167nNx9ccDsfUqVPz8/Pv3r0bEBCQlZW1c+dO0VFqcenSpTlz5vDsTj/QaDRHjx7NzMxMTEw0mUybN2+OiooSHaVwWq22o6PDu+zp6eHeZN/5cyvEnlQZ+J+Bz7lcrt+PzhqNxu12C+xRCc6Iothstm3btmVmZvI8VP+w2+39/f0TJ06sra3t7u4WnaNwPT09+fn5RUVFokNUxGazJSYmXrx40WQyVVdXG43Gqqoq0VEKZ7FYHj16FB4e/vLly6qqqgsXLvApvX/09/eXl5fv3btXdIhaNDY2jhw5MigoSKfTvX37tq+vT3SRwsXGxtpstsLCwvr6+oqKitevX7Mn8p0/t0LsSZWBLS58TqvVulwu79Ltdv/7L5f+QZnMZnNKSkp6ejqXX/lNUFBQenr6pUuXAgMDKyoqROco3JkzZ/R6vdVqNRgMdru9paXlzZs3oqMUbvLkySUlJZMnT5YkKTg4OCkpqampSXSUwk2bNm369OmbN2+WJGn27NlJSUn3798XHaUKDx8+nDp1amRkpOgQVXj27Flzc3NlZWVaWlpZWZkkSVevXhUdpXA6ne769etWq7WkpOT79+/r1q3j2378iT2pMvA7g89NnDjx9evX3qXD4Vi9erXAHsBHTCZTTk7OiRMnVqxYIbpFFd69e2cymbZu3Tq0nDRp0ufPn8UmKV5QUFBra2tlZaUkSR0dHQaDYcyYMXwRtU9ZrdaGhoaNGzcOLQcGBgICAsQmKd748eN/X3JFs98YDIakpCTRFWrhcDjCwsK8x5Pp06d//PhRbJLi/fjxo7e3t7S0dGiZkZHBN/n6E3tSZeCUDJ9bsGCBJElDdyC3t7ebTKaYmBjRUcBf9vHjx+zs7DNnziQkJAwODg4ODv7+IQ98weVynTp16t27d5Ikff36taamhp2Pr+Xk5JT9V2RkZGZm5vbt20VHKZzT6Tx69KjFYpEkyWazPX36dO3ataKjFC4hIcFut1dXV0uSZLfbjUYjr7l/vHjxgscw+Y1er6+trR06h/b09DQ2Nnq/uAA+8v3797S0NJvNJklSc3NzY2Mj71v8iT2pMnAFFnxOo9GcPXt2//79oaGhLS0tp0+fnjBhgugo4C+rrKzs7e3dvXu39ydbtmzJz88XmKR4s2bNOnLkyPr166Ojo5uamjIyMpYtWyY6CvjLZs+effjw4dTU1MjISLPZvGfPnri4ONFRCjds2LDS0tIDBw6UlZVZLJYdO3YsWrRIdJTyud3urq4uvV4vOkQt5s6de+jQodTU1PDw8JaWlg0bNmzYsEF0lMKFhIQcPHhw1apV4eHhnz59Ki0tHTNmjOgoFWFPqgz/eDwe0Q1Qi76+vsDAQC7FB/AXud1uu90+duxY7quCgrndbqfTyTnUz37+/Dl8+HCOLVCwoWOLVqvl79xvXC5Xf3//yJEjRYeoF3vS/2sMsAAAAAAAACBrzB0BAAAAAAAgawywAAAAAAAAIGsMsAAAAAAAACBrDLAAAAAAAAAgawywAAAAAAAAIGsMsAAAAAAAACBrDLAAAAAAAAAgawywAAAAAAAAIGsMsAAAAAAAACBrDLAAAAAAAAAgawywAAAAAAAAIGsMsAAAAAAAACBrDLAAAAAAAAAgawywAAAAAAAAIGsMsAAAAAAAACBrDLAAAAAAAAAgawywAAAAAAAAIGsMsAAAAAAAACBrDLAAAAAAAAAgawywAAAAAAAAIGsMsAAAAAAAACBrDLAAAAAAAAAgawywAAAAAAAAIGsMsAAAAAAAACBrDLAAAAAAAAAga/8BGCF1dnH6kpMAAAAASUVORK5CYII=" 403 | }, 404 | "metadata": {} 405 | } 406 | ], 407 | "metadata": {} 408 | }, 409 | { 410 | "cell_type": "markdown", 411 | "source": [ 412 | "### Exponencial" 413 | ], 414 | "metadata": {} 415 | }, 416 | { 417 | "cell_type": "code", 418 | "execution_count": 11, 419 | "source": [ 420 | "funcion = exp(-a*t);\r\n", 421 | "transformada = laplace(funcion, t, s)" 422 | ], 423 | "outputs": [ 424 | { 425 | "output_type": "stream", 426 | "name": "stdout", 427 | "text": [ 428 | "transformada =\n", 429 | "1/(a + s)\n", 430 | "\n" 431 | ] 432 | } 433 | ], 434 | "metadata": {} 435 | }, 436 | { 437 | "cell_type": "code", 438 | "execution_count": 12, 439 | "source": [ 440 | "transformada_inversa = ilaplace(transformada)" 441 | ], 442 | "outputs": [ 443 | { 444 | "output_type": "stream", 445 | "name": "stdout", 446 | "text": [ 447 | "transformada_inversa =\n", 448 | "exp(-a*t)\n", 449 | "\n" 450 | ] 451 | } 452 | ], 453 | "metadata": {} 454 | }, 455 | { 456 | "cell_type": "markdown", 457 | "source": [ 458 | "#### Ejemplo Gráfico" 459 | ], 460 | "metadata": {} 461 | }, 462 | { 463 | "cell_type": "code", 464 | "execution_count": 13, 465 | "source": [ 466 | "syms f(t) g(t) h(t);\r\n", 467 | "f(t) = exp(-1 * t);\r\n", 468 | "g(t) = exp(-0.5 * t);\r\n", 469 | "h(t) = exp(-2 * t);\r\n", 470 | "\r\n", 471 | "figure;\r\n", 472 | "hold on;\r\n", 473 | "fplot([f, g, h], [0 10])\r\n", 474 | "ylim([0 1.25])\r\n", 475 | "grid on\r\n", 476 | "legend(\"a=1\", \"a=0.5\", \"a=2\")" 477 | ], 478 | "outputs": [ 479 | { 480 | "output_type": "stream", 481 | "name": "stdout", 482 | "text": [ 483 | "\n" 484 | ] 485 | }, 486 | { 487 | "output_type": "display_data", 488 | "data": { 489 | "text/plain": [ 490 | "" 491 | ], 492 | "image/png": "iVBORw0KGgoAAAANSUhEUgAABkAAAAGkCAIAAADmHH7qAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH5QcYDSQLwzIojAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyNC1KdWwtMjAyMSAxMDozNjoxMXWPPOkAACAASURBVHic7N1/cFR1nv/7t02adBqMSSc09Ndu7RiWmGG8A0hMwBlJXDbMzo7KDJkEFncJZc1qlLrgcNFdnWtXZga/ixANUyjjer8bud/6KpON83VlL2soiiQgQURh2CFg0Jg4nTHAkB9EIMGQeP845Njpzo9O0n3O6e7n44+p7vTJ6Tefopiql+/3+9z09ddfCwAAAAAAAGBUJr0LAAAAAAAAAEZDgAUAAAAAAABDI8ACAAAAAACAoRFgAQAAAAAAwNAIsAAAAAAAAGBoBFgAAAAAAAAwNAIsAAAAAAAAGBoBFgAAAAAAAAyNAAsAAAAAAACGRoAFAAAAAAAAQyPAAgAAAAAAgKERYAEAAAAAAMDQCLAAAAAAAABgaARYAAAAAAAAMDQCLAAAAAAAABgaARYAAAAAAAAMjQALAAAAAAAAhkaABQAAAAAAAEMjwAIAAAAAAIChEWABAAAAAADA0AiwAAAAAAAAYGgEWAAAAAAAADA0AiwAAAAAAAAYGgEWAAAAAAAADI0ACwAAAAAAAIZGgAUAAAAAAABDI8ACAAAAAACAoRFgAQAAAAAAwNAIsAAAAAAAAGBoBFgAAAAAAAAwNAIsAAAAAAAAGBoBFjSVkZGhdwkxp6WlRe8SYg5nrj3OXHucufY4c+1x5trjzLXHmWuPM9cYBx41CLAAAAAAAABgaARYAAAAAAAAMDQCLAAAAAAAABgaARYAAAAAAAAMjQALAAAAAAAAhkaABQAAAAAAAEMjwAIAAAAAAIChEWABAAAAAADA0AiwMG6HDh0a6aNPP/10//79x48f17IeAAAAAAAQ3eL0LgAR5pVXXnnzzTeHzbB+9atfHThw4O677z579uy0adMqKiri4+O1rxAAAAAAYlNGRobeJeigsbFR7xKgBQIsBKurq2vLli3V1dXTpk0L/PTMmTO//e1vDx06lJSUJCIPPPDAnj17CgoKNC8TAAAAAGJXrKU5sZnZxSYCLASrvLzcZrM9//zzmzdvDvw0KSnp1VdfVdIrEUlLS/viiy+Gvc+Y/75UV1dPslT4am1t1buEmMOZa48z1x5nrj3OXHucufY4c+1x5trjzEOupaVllE9bW1vdbrdGpSCcCLAQrOeee85kMtXV1Q37qcPhcDgcyuvPP/+8pqampKRk2Ctj7T8IGAH/XmuPM9ceZ649zlx7nLn2OHPtceba48y1x5mHFucZI1jijmCZTEH9bTl//nxxcfHjjz+emZkZ7pIAAAAAAEAsIMBCKP3hD3/40Y9+9Pd///cjtV8BAAAAAACMFyOECJn6+vr169dv3rw5Pz9f71oAAAAAABFGWVmzZMkSvQuBEdGBhUk5efJkW1ubiHi93nXr1r3wwgt5eXl9fX19fX39/f16VwcAAAAAiAwfffRRYWHhp59+qnchMCgCLExKeXn54cOHReSNN964cuXKY4899u1Bwz6sEAAAAAAQIwYGBvbv3//2228fPXp09CtfeeWVgoKCO+64Q5vCEIkYIcT4LFmy5NChQ+rbiooK5cXTTz/99NNP61QUAAAAAMBYent7Fy9enJmZecsttxw4cKCoqKi0tPSdd94pLCz0vayysvLBBx+cO3duQ0PD+vXr9aoWxkeABQAAAABAtCmtbtblez3L0pQXH3/88YoVK5599lkR2bt3769//WsRefDBB3t7ewN/i71XGBMBFgAAAAAA0UYNkvQyb968a9euPfXUU16v94MPPlDGA71eb21tre9lubm5LpdLnxIRUQiwAAAAAABAiL377ruPPPLICy+8UFRUdP78+bKyMhFpb28/ePCg72V33XUXARaCQYAFAAAAAABCbN++fUuXLl29erWIPPXUU6dPnxaRefPmvfbaa3qXhohEgAUAAAAAAELsscceW7JkyfLlyy9dupSbm3vp0qWBgQGTyaR3XYhUBFgAAAAAACDE5syZ09bWdvnyZavVajKZPB7PmL9CcxZGQYAFAAAAAADCYvr06XqXgChB8x4AAAAAAAAMjQALAAAAAAAAhkaABQAAAAAAAEMjwAIAAAAAAIChEWABAAAAAADA0HgKIQAAAAAA0FN3d/f27ds/++yzoqKi73//+36fHj169NSpU8prl8uVn5+veYHQHwEWAAAAAADQ01//9V/n5ub+6Ec/+sd//Mf29vbVq1f7flpeXv7ll1+63W4RuXbtGgFWbCLAAgAAAAAAoTcwMHDgwIHLly87HI7s7OyRLjty5MiXX365efNmEZk5c+ajjz7qF2CdPHny7bffnjNnTtgrhoERYAEAAAAAgBDr7e1dvHhxZmbmLbfccuDAgaKiotLS0nfeeaewsND3ssrKykuXLn3nO99R3mZlZZ06dWpgYMBkurGz+/r165999tk777zz0Ucf3XnnnU8//bTFYtH6DwMDIMACAAAAACDanC34b7p875yqL5QXH3/88YoVK5599lkR2bt3769//WsRefDBB3t7e/1+5Te/+Y2aSZlMJpPJdP369alTpyo/OXbs2NSpUxMTE1evXv2b3/zmxz/+8d69ezX6w8BICLAAAAAAAIg2apCkl3nz5l27du2pp57yer0ffPDBHXfcISJer7e2ttb3stzcXJPJNDAwoP7Et/1KRBYtWtTd3a28vv/++xMTE9va2hwOhxZ/BhgJARYAAAAAAAixd99995FHHnnhhReKiorOnz9fVlYmIu3t7QcPHvS97K677kpOTv7yyy+Vt+3t7VOnTo2L+yas8Hq97e3t8+bNExGr1RoXF/fll18SYMUgAiwAAAAAABBi+/btW7p0qbKO/amnnjp9+rSIzJs377XXXvO78tZbb33kkUfOnz8/c+bMXbt2/eQnPxGRurq6b3/72ykpKWfOnFm3bt1//dd/WSyW3/3ud7fddhvb3GMTARYAAAAAAAixxx57bMmSJcuXL7906VJubu6lS5f8ZgNVM2bMePnll++5557MzMw//vGPNTU1IvLAAw/s3r37Bz/4QX5+/vLlyzMzMzMyMj777LOqqirN/ygwBAIsAAAAAAAQYnPmzGlra7t8+bLVajWZTB6PZ5SL/+7v/m716tW9vb1Wq1X5ibr3SkReeOGF559//quvvlI/RQwiwAIAAAAAAGExffr0IK80mUyj5FNxcXG+i7EQg4Zp3gMAAAAAAACMgwALAAAAAAAAhkaABQAAAAAAAEMjwAIAAAAAAIChEWABAAAAAADA0AiwAAAAAAAAYGg8hBIAAAAAAOjpT3/607/8y7/88Y9/zM7O/od/+AeTiW4b+OPvBAAAAAAA0E13d/fChQtvueWWFStW7Nu3b+3atXpXBCOiAwsAAAAAAITewMDAgQMHLl++7HA4srOzR7rswIEDubm5P/vZz0Tk3nvvnTFjxq5duzQsE5GBAAsAAAAAAIRYb2/v4sWLMzMzb7nllgMHDhQVFZWWlr7zzjuFhYW+l1VWVi5fvnz58uXK248//njmzJl61AujI8ACAAAAACDa9DSW6/K9CRkblBcff/zxihUrnn32WRHZu3fvr3/9axF58MEHe3t7R/rd8+fPP/zwwy+++KI2pSKyEGABAAAAABBt1CBJL/Pmzbt27dpTTz3l9Xo/+OCDO+64Q0S8Xm9tba3vZbm5uS6XS0TOnj27bNmyTZs2FRUV6VIwDI4ACwAAAAAAhNi77777yCOPvPDCC0VFRefPny8rKxOR9vb2gwcP+l521113uVyuQ4cOrVy58tVXX/3hD3+oU70wOgIsAAAAAAAQYvv27Vu6dOnq1atF5Kmnnjp9+rSIzJs377XXXvO78vPPP//xj3/8zjvvLFq0SIdCESEIsAAAAAAAQIg99thjS5YsWb58+aVLl3Jzcy9dujQwMGAymQKv3L59+8WLFxcvXqz+5Ouvv9awUkQGAiwAAAAAABBic+bMaWtru3z5stVqNZlMHo9npCtffPFFFrdjTARYAAAAAAAgLKZPn653CYgSwzTvAQAAAAAAAMZBgAUAAAAAAABDY4QQAAAAAIAokZGRoXcJQFgQYAEAAAAAEA0aGxv1LgEIF0YIEXqHDh3SuwQAAAAAABA9CLAQYq+88sozzzyjdxUAAAAAACB6MEKIkOnq6tqyZUt1dfW0adP0rgUAAAAAAEQPAiyETHl5uc1me/755zdv3jzKZWPuFKyurg5pXbGutbVV7xJiDmeuPc5ce5y59jhz7XHm2uPMtceZa48z11hra6vb7da7CoQAARZC5rnnnjOZTHV1dSNd0HfBe3Bjb1zS/5lSuFHLwsC/19rjzLXHmWuPM9ceZ649zlx7nLn2OHPtcebABLADCyFjMo3x18lsd02ZftN/vrO3vbJMm5IAAAAAAEAUIMCCpn5/fsqe9CU9DUfIsAAAAAAAQJAIsKCpE5/dlJbS8W7202RYAAAAAAAgSARY0NTxJtPqOz7ffKJv5hMvkWEBAAAAAIBgEGBBU20d4rJcdCcnHP7yZiXD6mk4ondRAAAAAADA0AiwEGJLliw5dOjQSJ+2dd40JcH52l9dWrv7tNnumvnES+2VZWRYAAAAAABgFARY0FpcavatA793JyfUNnWRYQEAAAAAgDERYEFr5pSc6xePepallVY3i4iSYZ3bsaHvglfv0gAAAAAAgBERYEFrJquzv6c1Nz1JRGqbukTEbHc5S6taPQVkWAAAAAAAIBABFrRmsjqnJDivX3xfbcISEbPdNWtdORkWAAAAAAAIRIAFHcSlZve1v+/bhCUiCXMXpRRuJMMCAAAAAAB+CLCgA2UNloisyZq161ib+vPEvEIyLAAAAAAA4IcACzpQ1mCJSG56svg0YYlIYl5hYl5hq6dAt+IAAAAAAIDBEGBBB+oaLLfNsiQ9ybcJS0RSCjcm5hU2l2TrVR4AAAAAADAUAizoQ1mDJSK56cktHb0tHb2+n5JhAQAAAAAAFQEW9KGuwXLbLGuyZpXua/a7QMmwzu3YoEd1AAAAAADAQAiwoA91DZaI5KYn1zZ1Bl6TUrjRbHeRYQEAAAAAEOMIsKAPdQ2WiLhtFk9+2trdZwIvI8MCAAAAAAAEWNCNugZLRm7CEpHE3EKz3dVeWaZhaQAAAAAAwEAIsKAbdQ2WiLhtltz05NeHPo7wxmV2V2JuYd8FLxkWAAAAAACxiQALuvFdgyUinvy0wFXuCrPdlVK4safhCBkWAAAAAAAxiAALuvFdgyWjNmGJiNnumvnES2RYAAAAAADEIAIs6Ml3DZaM2oQlgxlWd00lGRYAAAAAADGFAAt68l2DJWM1YYmI2e5yllbRhwUAAAAAQEwhwIKe/NZgyVhNWMIsIQAAAAAAsYcAC3ryW4MlIm6bxZ2cMPpvqRlWd01lmAsEAAAAAAD6I8CCzvzWYIlIxcrMtM31o/+WMkvYXcs+LAAAAAAAoh8BFnTmtwZLgtiEpWKWEAAAAACAWECABZ0FrsGSIDZhKXguIQAAAAAAsYAACzoLXIMl42nC4rmEAAAAAABEPQIs6C9wDZYE3YQlg31YfRe8ZFgAAAAAAEQlAizoL3ANloynCUtEzHZXSuFGESHDAgAAAAAg+hBgQX/DrsGS8TRhiYjZ7krMLRSRczs2hLI4AAAAAACgNwIs6G/YNVgi4rZZPPlpa3efCfI+Sh+W2e5qLskOdY0AAAAAAEA3BFgwhGHXYIlIbnpyS0dvS0dv8LdKKdyYmFdIhgUAAAAAQNQgwIIhDLsGS0TcNsuarFnBDxIq1Ayr74I3RAUCAAAAAADdEGDBEEZagyUiuenJIlLb1DWuGyoZVqungAwLAAAAAIBIR4AFQxhpDZaIuG2WJelJu4J7HKGvlMKNKYUbybAAAAAAAIh0BFgwipHWYMlEm7BEJDGv0FlaRYYFAAAAAEBEI8CCUYy0BktubMJylFaPbxPWjdvaXUqG1dNwZHIFAgAAAAAAfRBgwShGWYMlIrnpSTKhJiwZzLDaK8u6ayonXh8AAAAAANAJARaMYpQ1WArPsrSJNWGJiNnumvnES921le2VZRMtEAAAAAAA6IMACwYyyhosmVwTlgxmWD0NR8iwAAAAAACILARYMJBR1mApKlZmrt19euL3V/qwaujDAgAAAAAgkhBgwUBGX4MlIm6bxZ2cMOEmLBnch0UfFgAAAAAAEYQACwYy5hosmXQTlgz2YfVd8JJhAQAAAAAQEQiwYCyjr8ESEbfNkpue/Pqxtsl8i9nuSincKCJkWAAAAAAAGB8BFoxlzDVYIuLJTyvdN8HHEX7zRXZXYm6hiJzbsWGStwIAAAAAAGFFgAVjGXMNloSoCUsG+7DMdlerp2CStwIAAAAAAOFDgIVx8Hq9+/fvb2xsHOmClpaW/fv3nzlzZsJfoazBGvOykDRhKVIKNybMXdRckh2SuwEAAAAAgJAjwEKw9uzZs3Llyurq6pKSku3btwdeUFFRsXr16urq6ieffPLnP//5hL8oLjW7p7F89GvcNkvxQsfa3RNPynylFG5MzCtsLsnuu+ANyQ0BAAAAAEAIxeldACJDf3+/x+OprKycPXt2R0fH/fff/9BDD7ndbvWCgYGBbdu2vf3223/xF3/R3d29aNGi1atXZ2ZmTuC74l0F3fWrEjLGWE21JsuxdveZ2qau3PSkCXyLH2Wne6unwFlaZba7Jn9DAAAAAAAQKnRgISgHDx5MSkqaPXu2iNhstvvuu++9997zu+brr7+2WCwikpCQYDKZvvrqq4l9lzJFeP3iaM8iFBG3zbIma1ZpdWgGCUUkpXBjSuHGVk8BfVgAAAAAABgKHVgISldX15133qm+nT59+tmzZ30vMJlMHo/n8ccfX7p0aX19fVFR0Xe+851hb5WRkTH6d1VXV8fH3Xm5qfra5VmjX5k7Q17t7d32n38oyLw5uD/HWNLukYJ/bHl2ufnZt0JzQwNobR1jKT5CjjPXHmeuPc5ce5y59jhz7XHm2uPMtceZa6y1tdV3eAiRiwALQenv7zeZvunXM5lMAwMDftd8+OGHVqt1xowZSUlJTU1NV69etVqtgbcaZQe86vr0ZT2N2x1B/CvzZvGsvJ3H/6+/vmvMK4PldvfdtbDVU5CYV6jMFUYB/r3WHmeuPc5ce5y59jhz7XHm2uPMtceZa48zByaAEUIEJT4+vr+/X307MDAQFzck/Txw4MCJEyfeeOONv/3bv3311VdF5F//9V8n/HUmq7O/J6j/LuG2WXLTk0O1zV1htrucpVU9DUfaK8tCeFsAAAAAADAxBFgIit1uP3XqlPq2s7Pz7rvv9r2gs7Nzzpw5U6ZMUd7efvvtXu/EN0kFuQZL4clPq23qrG3qmvDXBTLbXTOfeIkMCwAAAAAAIyDAQlCysrJEpK6uTkQ++eST+vr6RYsWicjJkyfb2tpE5Fvf+tbhw4c/++wzEenu7v7www/vueeeyXxjQsb6nsbtwVzptlk8+Wkh3OauUDIsEWkuyWatOwAAAAAAOiLAQlBMJtO2bdueeeaZNWvWrFq1asuWLampqSJSXl5++PBhEcnMzHzmmWcKCwvXrFlz//3333vvvStWrJjUNwY9RSgiuenJIhLaJiwRMdtdKYUbE/MKeTQhAAAAAAA6Yok7gpWdna1kVb4qKirU10VFRUVFRaH6OnWKMC41Z8yL3TaLZ1na2t2nm59dHKoCVCmFG61zF0fZWncAAAAAACIIHVgwrqm3rbjmfSvIi3PTk3LTk0M+SKhImLvIWVrVXVPJSiwAAAAAALRHgAXjMqfk9LUHtcdd4clPe/3DtpaO3rAUY3c5S6v6LnjJsAAAAAAA0BgBFoxrXM8iFHWb+76wNGHJ4EosYa07AAAAAADaIsCCocWlZo+rCSs3Pbmlozfk29xVrHUHAAAAAEB7BFgwtHhXQfBrsMRnm3v4ShKRlMKNs9aVt3oKGCcEAAAAAEADBFgwtPFOEYpIbnqSOzkhTNvcVax1BwAAAABAMwRYMLrxThGKSMXKzPBtc1epa93P7dgQ1i8CAAAAACDGEWDB6MwpOdcvHh3Xr4R7m7tKWYlltrtY6w4AAAAAQPgQYMHoTFZnf0/reH8rNz25tqkzfNvcVax1BwAAAAAg3AiwYHQTWIMlIm6bpWLlt8K9zV2VUrjRWVrFWncAAAAAAMKBAAsRICFjfU/j9vH+lrLN/fVjbeEoKZCyEou17gAAAAAAhBwBFiLAxKYIRaRiZaYGm7BUrHUHAAAAACAcCLAQASY2RSgibpuleKFj7e4z4ahqWKx1BwAAAAAg5AiwEBmm3rbimvetCfzimixHS0evBtvcVax1BwAAAAAgtAiwEBnMKTl97ePuwBIRt82yJmtWabV2g4QKZa37+ZefZCUWAAAAAACTRICFyDDhKUIRKc5yiIhm29xVZrtr5hMvsdYdAAAAAIBJIsBCxIhLzZ5YE5aI1Dw+v3Rfc0tHb2hLGpOy1l1EWOsOAAAAAMCEEWAhYsS7Cia2BkvhyU/T8omEKrPdlZhbyFp3AAAAAAAmjAALEWMyU4Qikpue3NLRq/0gobDWHQAAAACAySHAQiSZzBSh22apWJmpyyChgrXuAAAAAABMDAEWIok5Jef6xaMT/nW3zaLXIKFCWesuIrRiAQAAAAAQPAIsRBKT1dnf0zqZO+g4SKhQxgkT5i5q9RT0NBzRqwwAAAAAACIIARYiySTXYIkBBgkVyjhhe2UZ44QAAAAAAIyJAAsRJiFjfU/j9sncQfdBQoU6TsjTCQEAAAAAGB0BFiLM5KcIxQCDhArfpxN211TqWwwAAAAAAIZFgIUIM/kpQjHMIKFCGSfsrq1knBAAAAAAgGERYCHyTL1txTXvW5O8iUEGCRWMEwIAAAAAMAoCLEQec0pOX/ukOrAUBhkkVPiOE9KKBQAAAACALwIsRJ6QTBGKwQYJFTfGCWsYJwQAAAAA4BsEWIhIcanZIWnCMtQgocJsdzlLq4RxQgAAAAAABhFgISLFuwomvwZLYahBQoUyTjhrXTnjhAAAAAAACAEWIpQyRRiSWxlwkFCRMHcR44QAAAAAAAgBFiJXXGp2T2N5SG6lDBKu3X0mJHcLIcYJAQAAAAAQAixErhBOEYpIcZZDRAw1SKhQxwnPv/wkrVgAAAAAgNhEgIVIFapnEaqMOUioSJi7aOYTL/U0HCHDAgAAAADEIAIsRLCpt60IYROWYQcJFWa7a+YTLwnjhAAAAACA2EOAhQhmTsnpaw9ZB5YYeJBQoYwTOkurGCcEAAAAAMQUAixEsJBPEYqxBwkVSitW3wUvGRYAAAAAIEYQYCGyJWSs72ncHsIbum2W5mcXG3aQUKG0YolIc0l2T8MRvcsBAAAAACC8CLAQ2UxWZ39PazjuXFrdHI7bhoqSYaXtPNpeWUYrFgAAAAAguhFgIbKZrE5zSs41b1Vob1uxMrO2qau2qSu0tw0HdbM7rVgAAAAAgGhFgIWIF+9a8dUfQ/YsQoXbZvEsS1u7+7SRl2Ep1M3utGIBAAAAAKIVARYiXlxqjoiEdpW7iOSmJxUvdBh8GZZK2ewutGIBAAAAAKIRARaiQVxqdl97iAMsEVmT5RDDL8NSqa1Y53ZsoBULAAAAABBNCLAwDl6vd//+/Y2NjSNd0NHRceDAgaNHj2pZlYjEuwqueUM8RSgibpulYmXm6x+2RcQyLIXZ7nKWVgmtWAAAAACAKEKAhWDt2bNn5cqV1dXVJSUl27dvD7ygrq7uhz/84d69e7dt2/bwww8PDAxoVpvJ6pyS4Az5FKGIuG2WmpIFEbEMS0UrFgAAAAAgyhBgISj9/f0ej2fXrl1bt26tqqqqqKhoaWnxu+Cf/umfysvLt23b9m//9m9dXV379u3TssKpt60IRxOWiLhtluKFjrydx8Nx8/BRW7H6Nq+gFQsAAAAAENEIsBCUgwcPJiUlzZ49W0RsNtt999333nvv+V5QV1d366233nPPPcrb//iP//j+97+vZYXmlJxwrMFSeJaluZMTImUZlkppxYor2UErFgAAAAAgosXpXQAiQ1dX15133qm+nT59+tmzZ30v6OzsdLlczz333L//+79PmTLliSeeeOSRR4a9VUZGxujfVV1dPbEip92U2nrq7evT503s10f3y+/evOp/ezOmX8u51RKO+4fPn6723/rT8q4P93b89O64lT+/KX2+3hVFv9bWVr1LiDmcufY4c+1x5trjzLXHmWuPM9ceZ66x1tZWt9utdxUIAQIsBKW/v99k+qZfz2Qy+a24+vTTT6urq5977rlf/OIXjY2NDz/8cEZGxne/+93AW42yA36Srk9/uqdx+83fXh6Om7tFDjmdeTuP15QscNsiLMNyu92yYFHf8n9o9RTcnFeYUrhR74qiH/8fqT3OXHucufY4c+1x5trjzLXHmWuPMwcmgBFCBCU+Pr6/v199OzAwEBc3JP287bbbbr/99qKiIhHJyMj4q7/6q71792pcpMnq7O8J43/NcNssnvy0iFuGpeIBhQAAAACACEWAhaDY7fZTp06pbzs7O++++27fC1JSUnzfmkwm344tbZisTnNKzjVvVfi+ojjLkZuevHb3mfB9RVjxgEIAAAAAQCQiwEJQsrKyRKSurk5EPvnkk/r6+kWLFonIyZMn29raRCQvL6+jo6OmpkZEOjo6Dh069MADD2hfZ7xrxVd/DMuzCFWe/LTaps7Xj7WF9VvCilYsAAAAAEBkIcBCUEwm07Zt25555pk1a9asWrVqy5YtqampIlJeXn748GERMZvNO3bs+MUvfrFy5cr8/PyioqLs7Gzt64xLzRGR6xfD9ThCEXHbLDUlC0r3Nbd09IbvW8KNViwAAAAAQARhiTuClZ2drWRVvioqKtTXCxcuVDqw9DX1thXXvG8pSVaYqMuwmp9dHL5v0YDSitVdW9lckp1SuDExr1DvigAAAAAAGAYdWIg25pScvvYwdmApIn0ZlkptxWqvLKMVAIrYVAAAIABJREFUCwAAAABgTARYiDYarHJXRMEyLJXvViy9awEAAAAAwB8BFqJQQsb6nsbt4f6W6FiGpVJbsZpLss/t2NB3wat3RQAAAAAA3ECAhShksjqnJDjDuspdoS7DCvcXaUZpxTLbXa2eAiYKAQAAAAAGQYCF6KSsctfgi4qzHMULHVGwDEultmKJSHNJNjEWAAAAAEB3BFiITtqsclesyXKISGl1szZfpw01xuppONJcks1EIQAAAABARwRYiE4mqzPetaKnsVyD71IGCWubuqIswxIRs90184mXEvMKz7/8JK1YAAAAAAC9EGAhasW7CrSZIhQRt81SsTKztqmrtqlLm2/UjNKKNfOJl4SJQgAAAACATgiwELU0W+WuUDKstbtPR8dDCf0wUQgAAAAA0BEBFqJZQsb6nsbtmn2d+lDCqMywZPAZhSmFG5koBAAAAABoiQAL0cxkdZqs2jVhyeBDCfN2HtfsG7WXmFfIRCEAAAAAQEsEWIhmJqvTZL1Vs8cRKjzL0ooXOtbuPqPll2rMb6Kwp+GI3hUBAAAAAKIZARainJar3FVrshwtHb3R91BCP+pE4bkdG9ory1iMBQAAAAAIEwIsRDmNV7krlIXur3/YFvUZlogk5hU6S6tEpNVTwEQhAAAAACAcCLAQ/TRe5a5w2yw1JQtqm7pqm7o0/mrtqROFfRe8TBQCAAAAAEKOAAvRLy41R0Q0bsKSwT6stbtPR+tDCf2Y7a5Z68pnrSs/t2PDuR0bmCgEAAAAAIQKARZiwtTbVmi/CUtE3DaLJz8tuh9K6Cdh7iJnaZXZ7mKiEAAAAAAQKgRYiAnxrgKNn0WoKs5yFC90pG2u1+XbdaFOFIoIE4UAAAAAgMkjwEKsSMhYf+XEJl2+2rMsrXihY+3uM7p8u17UGEuZKNS7HAAAAABABCPAQqwwp+To1YQlImuyHC0dvbHwUEI/ZrtLmShsLsluryxjMRYAAAAAYAIIsBArTFanOSXnmrdKl29XFrq//mGbLt+uL9+JQhZjAQAAAAAmgAALMSQhY31P43a9vt1ts9SULMh75URtU5deNejIbzEWMRYAAAAAIHgEWIgh+jZhyWAfVml1c2xmWEKMBQAAAACYEAIsxBZ9m7CEDEtEfGKsvgteYiwAAAAAwJgIsBBbTFbnlATn9Yu6bXOXwQxr7e7TLR29OpahO7PdNWtdubO0qqfhSHNJdndNpd4VAQAAAAAMigALMUf3JixR92HtPB7jGZYMPqbQWVrVXVvZXJLd03BE74oAAAAAAIZDgIWYE5eaIyL6NmEJGdZQSoyVUrjx3I4NxFgAAAAAAD8EWIhFRmjCEhG3zeLJTyPDUiXmFaox1rkdG4ixAAAAAAAKAizEIoM0YYlIcZaDDMuX2e5SYiyz3aXEWH0XvHoXBQAAAADQGQEWYtTU21Zc876ldxUiPhmW3oUYiPqYQrPd1eopaK8sI8YCAAAAgFhGgIUYZU7JGbjaOnC1Ve9CRESKsxzFCx1pm+v1LsRY1BhLRJQYS++KAAAAAAD6IMBCjDJZnVNvW2GETVgKz7I0Mqxh+cZYzSXZxFgAAAAAEIMIsBC7zCk5fe36r8FSKRnW2t1n9C7EiIixAAAAACCWEWAhdpmszoSM9VdObNK7kG94lqW5ky1kWCNRY6y+C15iLAAAAACIHQRYiGmG2oSlIMMak9numrWu3Fla1dNwhBgLAAAAAGIBARZimtE2YSnIsIJhtrucpVVqjNVdU6l3RQAAAACAcCHAQqwzYBOWDGZY7HQfkxpjXW2oJ8YCAAAAgGhFgIVYZ8wmLOG5hOOhDhUqMRZDhQAAAAAQZQiwADGn5IjI9YsGeiKhQs2wWjp69a4lAqgxlvCkQgAAAACILgRYgJiszniXEZuwZDDDytt5nAwrSOqTCmUwxuq74NW7KAAAAADApBBgASIicakGbcISEc+yNE9+GhnWuPjGWOdffvLcjg3EWAAAAAAQueL0LgAwioSM9T2N229OzdG7kGEUZznctoS8ncdrSha4bRa9y4kYSozVd8Hb03Dk/MtPxs1w3pJXlDB3kd51AQAAAADGhw4s4AYjN2GJSG56Uk3Jgrydx2ubuvSuJcKY7a7EvMKZT7xknbu4vbKsuSS7p+GI3kUBAAAAAMaBDizgG9Pmb+2uX5W09JDehQzPbbPUlCxYu/uMLEvLTU/Su5wIY7a7lCSr74L3/MtP9l3wphRuTMwr1LsuAAAAAMDY6MDCOHi93v379zc2No5+2cmTJ//85z9rU1JomazOKQlOwzZhiYjbZqlYmVla3Vxa3ax3LZHKbHc5S6ucpVVXG+p5WCEAAAAARAQCLARrz549K1eurK6uLikp2b59xAf2ffrppw8//PDJkye1rC2Eps3fevn3m/SuYjRKhlXb1EWGNRlmu2vWunLfhxXqXREAAAAAYEQEWAhKf3+/x+PZtWvX1q1bq6qqKioqWlpaAi/r6+vbuHFjamqq5gWGjMnqNKfkXPNW6V3IaNQMS+9CIp7vwwqJsQAAAADAsAiwEJSDBw8mJSXNnj1bRGw223333ffee+8FXvbiiy/+5V/+5Zw5czQvMJSmzd/a0zhii5lBKBlW2uZ6+rAmzy/GOrdjA1veAQAAAMBQWOKOoHR1dd15553q2+nTp589e9bvmg8++ODo0aO/+93vHn300VFulZGRMfp3VVdXT7jOUIm/eem1QyU9rqf1LmQM//MB+1tnun7y/xzbunTGSNe0trZqWVJku2eFzF58tenE5f9389cdbVPyHzFl/WACt+HMtceZa48z1x5nrj3OXHucufY4c+1x5hprbW11u916V4EQIMBCUPr7+02mb/r1TCbTwMCA7wXd3d3PPffcb37zmzFvNeYOeCMYsD9y5cSmlOnn4lJz9K5lNG4Rp7N317G2vP/1RU3JArfNMvxl/HsdPLdbFiySnzzed8HbXlnWs2VXYl5hYm6h2e4a523c4akPI+LMtceZa48z1x5nrj3OXHucufY4c2ACGCFEUOLj4/v7+9W3AwMDcXFD0s8XXnjhW9/61ueff15XV9fR0dHQ0BARQdVITFbn1NtWGH+QUETcNotnWVrxQkfezuMtHb16lxM9fLe8n3/5SeYKAQAAAEBHBFgIit1uP3XqlPq2s7Pz7rvv9r1gxowZV65ceeONN954440//elPdXV19fX1mpcZSvGuAhEx+DZ3lWdZWk3Jgrydx1mJFVrKeqyZT7xknbu4vbKMRe8AAAAAoAtGCBGUrKwsEamrq1uyZMknn3xSX1//y1/+UkROnjxpt9sdDsf69evVix999NGf/OQnS5cu1a3cEJk2f2t3/SolyTI+t82iZFgi4lmWpnc5UcVsd5ntrsS8wr4L3u7ayuaS7IS5i27JK0qYu0jv0gAAAAAgJtCBhaCYTKZt27Y988wza9asWbVq1ZYtW1JTU0WkvLz88OHDelcXLiar05ySc+XEJr0LCZaSYdU2ddGHFSbq8wrVhqzumkq9iwIAAACA6EcHFoKVnZ0dmFVVVFQEXvnqq69qUpEWEjLWd9evun7xfYNvc1e5bZaKlZm7jrWlba4fZa07JsO3Iau9sqy9smxii94BAAAAAEGiAwsYjcnqTMhYHxHb3FWsddcMi94BAAAAQBsEWMAYzCk5InL94vt6FzI+nmVpnvy0vJ3Hq858qXctUS5w0Xv/vv+hd1EAAAAAEFUIsIAxmKzOafO3Xv59xGzCUhVnOWpKFrx15jIrsTSgDBU6S6uUhizleYU0ZAEAAABASBBgAWOLuG3uKrfNsnXpjNc/bCPD0ozZ7pqS/4gSY7VXlrV6Clj0DgAAAACTRIAFBCUhY31fe4RNESqciXE1JQtEJG1zPSuxNKM+rzClcOPVhnqlIUvvogAAAAAgUvEUQiAoyjb3Lw+vuvneN/WuZdyUte4ikrfzePFCh/Ia2kiYuyhh7qK+C97u2srmkuyEuYuscxcn5hXqXRcAAAAARBI6sIBgxbsKRKSnsVzvQibIsyytpmQB44S6UBuyrHMXqw1ZbMgCAAAAgCARYAHjMG3+1mvetwautupdyAS5bRbGCXWkLHqfta5c3ZDFaCEAAAAABIMRQmAclEHCKyc2ReIgoYJxQiNQGrJEhNFCAAAAAAgGHVjA+ET6IKGCcUKDCBwtPLdjA6OFAAAAAOCHAAsYt0gfJFQwTmgcvqOF1rmLGS0EAAAAAD+MEALjFgWDhAq3zbImyyEieTuPe/LTirMcelcU68x2lxJmMVoIAAAAAL7owAImIjoGCWVwJVZNyYJdx84xTmgcjBYCAAAAgC8CLGCComOQUOG2WSpWZrZ09qZtrte7FnyD0UIAAAAAUBBgAROkDhLqXUhouG0WT35a8UJH2ub62qYuvcvBEEqS5SytcpZWiYjSkNVdU6l3XQAAAACgEQIsYOLiXQUmqzMKBgkV6jjh2t2nGSc0JmW0MG3n0VnrytXRQpIsAAAAAFGPAAuYlISM9dcvHr1+8X29CwkZ36cT0oplZOpoIUkWAAAAgKjHUwiBSVEGCS//flPi4jdNVqfe5YSG0oq1JsuRt/N48UKHZ1ma3hVheL5PLexpOHK1ob69sowHFwIAAACIPnRgAZMVl5oT71oRNcuwVLRiRRC/de/0ZAEAAACIMnRgASEQ7yq4fvFoT2N5QsYGvWsJJbUVa+3uM3XpSbRiGR89WQAAAACiEh1YQAiYrM5p87dG2TIsldtmqViZKbRiRRR6sgAAAABEEzqwgNCIymVYKlqxItdIPVm35BUlzF2kd3UAAAAAEBQ6sICQidZlWCrfVqyWjl69y8H4+PVktVeWKT1ZPQ1H9C4NAAAAAMZABxYQStG6DEultGItmZ28dveZXFqxIpNfT1Z7ZVnfBW/C3EWz1pXrXRoAAAAADI8ACwglZRnWlRObrqe8H5eao3c54ZKbnuRembnrWFva5npPflpxlkPvijARfklWq6dASbLY+A4AAADAaAiwgBAzWZ033/tm1/7vReUyLJW6FStv5/G6pi5PfprbZtG7KExQ4J6scy9vMM9wJeYVWucuZlUWAAAAAN2xAwsIi4SM9d31q/SuIuzcNktNyQJ3siVv5/HS6ma9y8FkqXuy5lR94SytEhFWZQEAAAAwAjqwgLCIdxUMXG29cmLTtPlb9a4lvNRWLCYKo4zZ7kop3CgifquyGDAEAAAAoD06sIBwiXcViEhPY0wsxlZirJqSBaX7mtfuPsMzCqOJ0pblLK1SHl94taH+bMF/ay7Jbq8soy0LAAAAgDYIsIBwMVmdCRnrlYcS6l2LRpgojG4MGAIAAADQCyOEQBjFyEMJfTFRGCMYMAQAAACgJQIsILyUDKu7flV0P5TQD88ojB08wRAAAACABhghBMJOmSXsrl81cLVV71o0xURhTBllwLC7plLv6gAAAABENjqwAC0oDyXsrl+VtPSQ3rVoSmnF8ixLK61uTttcX7zQ4VmWpndRCDt1wFBEumsqrzbUt1eWiQhtWQAAAAAmhgAL0EhCxgYRuXJi07T5W/WuRQfKRGHpPmKsmJOYV6gMGIpId22lsi3LbHcl5haa7S7CLAAAAADBIMACtJOQsaGnsTxmMyy3zVKxMrOlo3ft7jOvs989xpjtLhFR975f/3PrpZrfXq9tZfU7AAAAgGAQYAGaincVXPNW9TSWKw1ZMchts9Q8Pl+JsUr3NVes/FZuepLeRUFTyt53pffKb/U7YRYAAACAYRFgAZoyWZ1kWDIYY71+rG3t7tMiQowVs9SHGM5aV66GWe2VZUrCxcIsAAAAAAoCLEBrSoZ15cSmHonpDEtEirMcuenJtU2da3efzk1P9uSnuW0WvYuCbtQwS5kxVJIsdcaQhVkAAABALCPAAnRgsjqnzd9KhiUibpul2ObITU/edawtb+fx4oWONVkOYqwYN+yMobowa9a6cr0LBAAAAKA1AixAH2RYvtw2i/KYQjXG4jGFUKhtWTIYZp3bseH6n1vpzAIAAABiCgEWoBuT1XnzvW9+eXgVGZbCN8ZK21xPNxb8BIZZamdW/+13dWfnE2YBAAAA0YoAC9AZfVh+fGOstbvPuG0WdmMhkF+Y5a3bo4ZZLIAHAAAAog8BFqAzZgmHdSPG6uitbepUYqw1WQ6eVIhhme0uU9YPZrkfFxG/BfBmuytuhvOWvCLCLAAAACCiEWBhHLxeb2Njo8vlysjIGPaCTz/9tKWlxWazLViwQOPaIpqSYV3zVvU0kmENoa54r23qLK1u3kWMhbH4LYBXtmW1V5Zdbag3z7jRmaX0bQEAAACIIARYCNaePXv++Z//efHixR999NFDDz20fv16vwt+9atfHThw4O677z579uy0adMqKiri4+N1KTUSmazOeFcBGdawlBirOMvx+rG20urmtZ09nvy04iyH3nXB6NQwy29t1rmXN6hhFmuzAAAAgIhAgIWg9Pf3ezyeysrK2bNnd3R03H///Q899JDb7VYvOHPmzG9/+9tDhw4lJSWJyAMPPLBnz56CggLdKo5AaoZ15cSmafO36l2OERVnOYqzHC0dvaX7mkv3NfOwQoyLujZr1rpyvx3wCXMXzVpXrneBAAAAAEZEgIWgHDx4MCkpafbs2SJis9nuu+++9957zzfASkpKevXVV5X0SkTS0tK++OILXUqNaCarMyFjQ09jedf+7yUtPaR3OQbltlkqVma2dPSqDyskxsJ4BT7Q8NyODcq8oYjQnAUAAAAYDQEWgtLV1XXnnXeqb6dPn3727FnfCxwOh8NxY6Tr888/r6mpKSkpGfZWI+3PUlVXV0+u2MgXvzz+5kvX31109Y6XBqbOmuTNWltbQ1KUAa3JuOkvHfa3znS5Sg/m3JqwIvPmnFsN8bDCKD5zw5rsmafdI2n3iIh0tInI1aYTl4/uk85zX3e03WRzSPKsKVl/c1P6/FBUGj34e649zlx7nLn2OHPtceba48w11tra6tt7gchFgIWg9Pf3m0wm9a3JZBoYGBj2yvPnzxcXFz/++OOZmZnDXtDY2BiWEqOM23PNOzeucVNCxvp412QnMaP432u3yHf/D1nf0Vvb1PnqsXP/VNthkIasKD5zwwrNmSs3WXCj8UpdA99d+7+u7nyCzVl++HuuPc5ce5y59jhz7XHm2uPMgQkgwEJQ4uPj+/v71bcDAwNTp04NvOwPf/jDo48++tOf/nTt2rUaVhed4l0F5pScKyc2DVxtZa376NQt7+pcYW56Ms8rxOSNtAZe2ZwlDBsCAAAAWiHAQlDsdvupU6fUt52dnT/4wQ/8rqmvr1+/fv3mzZvz8/O1rS5qmazOafO3dtevEhEyrGC4bRbPsrQ1WY7apk7leYUGachCdPDbnCUivnmW2e6Km+EkzwIAAADCgQALQcnKyhKRurq6JUuWfPLJJ/X19b/85S9F5OTJk3a73eFweL3edevWlZWVffe73+3r6xMRk8k0ZcoUneuOfCarM3HxmzyacFxoyIIGzHaX8r9qnqUMG/o+2dBsd1nnLibMAgAAACaPAAtBMZlM27Zt+9nPfjZ79uyGhoYtW7akpqaKSHl5+d/8zd8UFBS88cYbV65ceeyxx9RfWb169XPPPadfydHDZHXGuwqueau69n8vcfGbJqtT74oiBg1Z0Myww4Z9f/a2V5ZdbahneRYAAAAwSQRYCFZ2dvbhw4f9flhRUaG8ePrpp59++mnNi4oVJqtTGSHsrl8V71rBOOG40JAF7Sl5lu9PumsqleYsJc9i3hAAAAAYFwIsIGIkZGyIdxWwEmvCaMiCjhLzCpXmLBlu3pA8CwAAABgdARYQSdSVWIwTThgNWdBd4LyhX54lPN8QAAAAGIoAC4gwvuOESUsP6V1OBKMhCwYRmGeJz/MN1RVaZrvLPMOltnEBAAAAMYUAC4hIyjhh1/7vsRJrkgIbstzJCWuyZhVnOfQuDTHK7/mG4rMS/mpDfXtlmfKpOnIYN8Ppt28LAAAAiD4EWECk8h0nnD5va1xqjt4VRTa1Iauls3fXsbbSfc0iUrzQsWR2MtOF0JffSvhhRw7ZogUAAIDoRoAFRDBlnDDeVXDlxKa49vdpxZo8t83itlly05NaOnpFZNexNnW6kCQLBuE3cigBkRYPOgQAAED0IcACIp7J6pw2fyub3UPLbbOIiGdZmkdEmS4kyYJhEWkBAAAg6hFgAdHAtxXr5nvf1LucaKNMF/olWTy7EEZGpAUAAIAoQ4AFRA+lFaunsfya9y22YoWDb5KlPrswNz15SXoSS99hcBOItFgPDwAAAOMgwAKiitqK1V2/ypySk5CxXu+KopPvswtrmzrrmrpK9zWTZCGyjBlpKevhRURpzqJRCwAAADoiwAKikPqAwu76VfE3LxW3R++KotawSdashJse/V58bnqyskgLiBTDRloi0tNwRET8GrWuJyR1Z+crv0WqBQAAgHAjwAKik9qK1fOH/9G1/3tJSw/pXVGU802y3j/TUt3UVbqvWURY+o6IpowQKv/r16jVdvrE1YZ6EWH8EAAAABogwAKimcnqvDZzzYz0ZV37v6dMFPKMwnBz2yxyq2XlvW4JeHyhZ1ma3tUBIaA0apmmOWa5H1d/GMz4ofoWAAAAGC8CLCD6xaXmfDNR6FoR7yogxtKG3+ML81450TK49N1tS6AtC9EkmPFD5YVvr5YwgQgAAIDgEGABMUGdKFRjrISMDXoXFUP8Hl9Y19S169i5tYRZiGrDjh/K0F4t8ZlAlKHtWgwhAgAAwBcBFhBDfGMsFmPpQl2VJYRZiFWBvVoyXLuWOoRIuxYAAACEAAuIQd/sd28sv+Z9i24svRBmAaqRtsWLyJjtWkKwBQAAEAMIsIAY5deNRYylL8IsIJCaao3eriVDgy2/ji1GEQEAAKIDARYQ04ixDGjMMEv5CIhZo2zXkoCOrb4L3r4/e9XN8cKOLQAAgMhEgAVgmBjLnJITl5qjd10YPsxau/uM22ahMwvwM1LHlvhsjhefHVuBwZbQtAUAAGBUBFgAbvCNsXoat0vj9qm3rYh3FehdF25Qw6yKlZki8vqxNrUzS0TIs4BRqJvjZWjTloj0NBxRgy0Z2rQlPnmWEnXJ4O4tAAAAaIwAC8AQSowlGXL94vvXvG/1NG6Pd62IdxWYrE69S8MQxVnfdGaJiO+koZBnAUFLmLto2GDLdyCx789epW9LRPyWbQmtWwAAAJogwAIwvLjUnLjUnIGrrde8VVdObDJZnfGuFcwVGpDbZhER30lDGZpnuZMT3DYLeRYwLr4DiX4f+WZbMrR1S/1dJdvybd0i3gIAAJgMAiwAo1EasgZcrX3t7/c0bu///SYWvRtcYJ7V0tnb0tFDngWEil+25de6JT5jib6tWyNNJgrdWwAAAEEgwAIwNpPVGW8tiHcVKA1ZXfu/Z07JmTZ/q951YWxum8Vts8jgswtHybN4uCEQKupYYqDAyUQZYfGW+AwnCru3AABAzCPAAjAO6qL3vvb3vzy8qr+n1ZySw2hhBBklzyrd16xco+zPEhFatICQG2UyUUYeTlRfNw9NuBhRBAAAsYMAC8C4+TZkqaOFJFmRKDDPksH9WSLiuxJeRJg6BMJt9OHElpaWW61TxCfhGmVEUQYjrcCfaPyHAgAACAkCLAATR5IVZfz2Z4lPpCUifk85FCItQHOjN3CJTw+XDEZavm1cww4qEnIBAICIQIAFIARIsqKVGmmJiF+XlgxGWnlNnW6bhd3wgBGoCZcEtzaru6ZylJBLyLkAAIBhEGABCKWRkiw2vkeNwEhLAnbD+0ZaFSsz9SwXwKgCH6GoUDq5JGBcUYbmXCIS2M+VUrhRk9oBAEBsIcACEBZ+SdaVE5uueatMVqc5JScuNTveVaB3gQglv11a4hNprd19pqWjt6Wzp6WjV0213MmW220Wty3BnWxREjEAhqJ2V40yrqjwWzzf92fvuR0bxGeMUflhYEuX0NUFAADGgwALQHipSda0+VuVMOv6xaNXTmxSwixmDKNVYKQlPqnW5x29Sq9WS2fPjesHJxCFpx8CEWXMtVyKwJYuCaKrS0R8BxhH6hcDAACxgAALgHYCwyxlxlBECLNigZpq+f5QWaqlTiCKiDqEKEO3xYsIwRYQoYJv6ZKAVfQyGHXdSLuG/lyGC7wkoL1L6PACACDCEWAB0IfvjKGIqGHWlARnXGp2QsYGvQuERpSgath2LRm6LV5E/IItdRTx3Llet1uP6gGEwXhX0QcGXhLQ3iUBHV4S0OQV+NHX16TPOoXYCwAAIyDAAqAzk9UpImqYpXRmfXl4VV/7+8qYocl6qzklh+asWDPstngZGmypo4i9vb2rfnfgRhaWnKC8UAcS2bQFRLfxBl6KvgvewGYuJfOSwdjr+hfNrXFxo8Re4tPqJT7dXsGXAQAAgkSABcBATFanyeqMS82RDBERJcwauNra07i9r36VkmeJSFxqtjklR0m+EGt8gy1VS0uL2+32nUYUEXUgUV0hL4PxltK6JcRbQAwz211jZl7Kvy3Ka981XjJcq5cM7faSoROOMnSY8ZsaRviUti8AAPzc9PXXX+tdA2JIRkZGY2Oj3lXElmg6cyXPEpHrF48qL6YkOE1W57T5W/UubYhoOvNIEcyZ+8Zbn3f0tnT2yo298v7xlgwOJ4qIsnuLkCsQf8+1x5lrLyRn7pd8ydDwa6RPlfBLxsq/hr1AIjkF4++59jhz7XHmGuPAowYdWAAihrI2S0TiXQUioswb9ve0XjmxScm2TFanEmnFpWaLyJQEJ4OHUPku2wr81K97SxlOFBFl9xYhF4AJ811gr7wY74Ch75IvGZp/ScDYo+81wadgvteMfhkAAHohwAIQqW7MGw7mWeITaV2/eFREvrr6ljJ4SKqFMY0ebynGFXKp91RWcfmu8QKAcfFd8iUhWrBVMd9cAAAPM0lEQVTVXVOpvFBDLjUIk4BZSBkuC5OAdWAyVhwmJGIAgEkgwAIQPQIjLQki1ZqS4BQRUi2MaVwhl4j4reK6cUFnj3JNYNTlTraIiF9Xl/opAIRQYl5hyO/ZXVM5ehwmYyViIvL8HVdbPQUyQi4mQURjQjoGAFGKAAtAlBsz1frq6lsi4ptqiYjarqXeQafyEWG+CblEZNTeq8Co6/OOXhkaeLV09ihXqhmWb+AlPmOMMph5CbEXAJ2EJBT7fkZG439W+f7ENxeTIKIx8UnHJLjAS0bOyCQgDiMpAwC9EGABiEXDploicv3i+/09rSKitmuJSH9P68DVViXDGjbhonsLExAYdQWptqlLCbzEZ4xRhjZ5yWBANkryJUO7vUQkdzxlAIA2wtEs1tNwxDfwkqGZl29GJkNjMgkuKbvxk5GTr8BPh03NQjIuCgBRgwALAL4Rl5qj/LPoF2yJyMDVVuV/AxOuvvpVIqImXD8vun7lxCYSLoRJbnpS8IGXEmPJ0FYvGa7bS0TW+iRfMrSHS8m/fH/YPueHpdXNMpiCCS1gACJHwtxFIc+G/BIx8dm7P+wFvuGXjJWajfnrMv4ETb3mb+1ftVeWjXSTwPsE3o1ONADaIMACgKAo+ZTStyWjJlwnXvm7wtTsURIun7vd6vdzYWIRIfVNy9X4W73UJEsG8y/xicD2DH40UguYjJCFyXBx2ODPb7y93Tc7G8zFhGgMgIEFhjh+PzFUO1XgFn+FX46mCEzTZLjALjBTkxESMRnuuIbN14a9crx39r0/WRsQ0QiwEEper7exsdHlcmVkZOhdC6A1NeH6/z40vegqCEy4ZHD3logobVzKa9+oSwYnFtUbytDMS0RM1ltNVuew9wdCaEgHlvp6MAL772f/w7OsLMhb+WZhMlwcpvh88DI1FBOfXEx8ojG/ewZGWmpGFvipGpPJYFLGMyIBxBrfwcw3/u9/8RRu1LGYQGq+JiPkYjJC1ib/f3v3HxN1/cBx/N2pHf4YQxQU/BI2T37KnOGPQejCoFmaTC3czLmsPwo0+ebW0uoLbVL5o6FjrEVWzFbwXbWcs2XWgl3ofUNhpvz4DrhIIv2KkzvERH597r5/XF0nB0jB3fvj5/N8/OX7+Pi+1068D+8X78/nhqnbxFCN28jzi+E7st+/OnwXNlwZ5+a5623IJ/XFlbOABlBgYdwcP3587969ycnJNTU1GRkZOTk5shMBquPeXTWaN19XjeX+g6vzcg0HrlW5ai/PwzwPcD+dezbPHV4eef7cAkYjBt8ZXCF51WFjNKggEx4dmRi+JhN/NGWefZn3VOL24mzIY4bcFOZZoo18pLi9VnOJZKMZAL266+qbW/X/8RwOV5Z5ODbcF1zF3HD1nPC6NHVIdwwwQm3naeQK78/DRr2v7Y7V3t+Y8/fjR4z68PT+vzQbVIsCC+NDUZS8vLxPP/3UZDLZbLaVK1dmZGTMnTtXdi7gLuax5Wq0ndcg7iZLDNVzidu3gHk3Yt7He3/V+2pHd1M23AF/PD5nqAeH/bHGPS03FIO3IXZgeT7i95vTe37EpNeXbnk/KG6v1Vw8azWXKwu3bP33f8UwLdvv89uHnn/kvyVGd2HmkJXc35jHY8LRHsxeOQBqNuj60DteLlp69V9q2/WmHq79d6Os2NxGqPyEEAlTlTFlgmrc43Q6ZWeAFlRUVOzZs6e8vNw13LFjx9KlSzdv3jzoMC4tBPRm9WLHkI+HBQ9x9pk9fdhTUtj0OzzRkBN6TfIXTnn/s98z+oOHnsE21hmGndnuo4mluTLmVxvqcf0fo73Rz8DkGT5NohMTb3VIfPZJ3TKffYwmSX3pMAL+acZu38UM2RHU5drx0d73AGrGDiyMj87OzpiYGPdw2rRpTU1N3oc1Njb6MRQA/H3BY54hfhxSAAAA3bnVeGiMM2wflxyAylBgYXwoimIwGNxDg8HgcAy97QIAAAAAMJzJ0f+UHQFQI8OdDwFGwWg0KsqflxY7HI6JE6lHAQAAAADAOKDAwvgIDQ2tq6tzD+12e2JiosQ8AAAAAABAMyiwMD6WLFkihDCbzUKI5uZmi8WSlDTae7gCAAAAAACMgE8hxLipqqrauXOnyWSqr6/Pz89ftWqV7EQAAAAAAEALKLAAAAAAAACgalxCCAAAAAAAAFWjwAIAAAAAAICqTZQdAHrR1tbW2NgYERERHR0tO4u+VFZWLl++XHYKvbBarRcvXgwODn7ggQdkZ9GLxsbGtrY2k8k0d+5c2Vn05fz58+Hh4SEhIbKDaJ/NZmtpaXEPo6KiAgMDJebRCZvN9uOPP06dOnXZsmWys2jfoG9yIcTMmTN5V/eDixcvWq3WOXPmxMbGys6iF66fFefPnx8ZGSk7iy4MWgqxJr3bcQ8s+MPx48f37t2bnJxcU1OTkZGRk5MjO5FevPPOO2VlZZWVlbKD6EJ+fn55eXliYmJTU9PUqVNLSkqMRqPsUBp38ODBEydOJCYmnj179sknn3zuuedkJ9ILq9W6bt26gwcPpqWlyc6ifR988EFBQYH7/aSwsDAlJUVuJM0zm827d+9OTk5ubW01Go0fffSRwcBVCz70zTff7Nq1yz3s6enJzMx8/fXX5SXShZKSkvfffz85Obm2tnbx4sX5+fmyE2nfgQMHjh49+uCDD9bW1q5Zs2b79u2yE2ncoKUQa1ItcAI+NjAwsGjRoubmZqfT2dHRsXDhwp9//ll2KO2z2+27du1atGhRSkqK7Cy60NDQsGDBArvd7hquWbPms88+kxtJ85qamtyv+dWrV2NjYzs6OmSH0oW+vr61a9c+9NBD3377rewsuvDiiy9+8sknslPoyMDAQFJSUlVVlWu4evXqEydOyI2kK5WVlStWrHCfT+EjiqLExcU1NTU5nc7r16/HxcU1NDTIDqVxFy5cWLBgweXLl51OZ09PT2pq6oULF2SH0izvpRBrUm3gt0nwue+//z4oKMhkMgkhgoODV6xYcerUKdmhtO/QoUPBwcFvvvmm7CB6ERQUVFxcHBQU5Bref//9ly9flhtJ8+bNm3f06FHXaz5p0iRFUfr7+2WH0oWCgoKHH344KipKdhC9aGhomDdvns1m4zvcP8xm85w5c5YuXeoafvnll6tWrZIbST+6u7t3796dn5/vPp/Cd5xOZ0BAgBBi8uTJBoOhr69PdiKNs1qty5cvDwsLE0IYjcbExMSTJ0/KDqVZ3ksh1qTawD2w4HOdnZ0xMTHu4bRp05qamiTm0Ync3FyDwWA2m2UH0YuwsDDXTyRCiNbW1oqKiqysLLmRNM9gMJhMJkVRPv/889LS0m3bts2aNUt2KO07c+ZMVVXVF198wQWb/qEoyi+//LJnzx6bzdbZ2bl+/Xou8/E1u90eERGRm5t77NixCRMmbNu27dlnn5UdSi8OHz4cExPDvTv9wGAw5OXlZWdnp6WlWSyWjRs3Lly4UHYojTMajZcuXXIPu7q6uDbZd7yXQqxJtYH/M/A5RVE8350NBoPD4ZCYRyc4I8rS3t7+9NNPZ2dncz9U/7DZbL29vaGhoadPn+7s7JQdR+O6urpyc3MLCgpkB9GR9vb2tLS09957z2KxVFRUVFZWlpWVyQ6lcVar9eTJk/Hx8efPny8rK3v33Xf5Lb1/9Pb2lpSU7NixQ3YQvaiurp4yZUpISEhQUNBPP/3U3d0tO5HGJScnt7e3Hzhw4MyZM0eOHKmrq2NN5DveSyHWpNrAEhc+ZzQaFUVxDx0Ox8SJbP2DNtXW1q5bt27Lli1sv/KbkJCQLVu2HD58OCAg4MiRI7LjaNz+/fvj4uJaW1vNZrPNZquvr29sbJQdSuPCw8MLCwvDw8OFELNmzUpPT6+pqZEdSuPuu+++yMjIjRs3CiGio6PT09O/+uor2aF04euvv46IiEhISJAdRBfKy8vPnTtXWlq6adOm4uJiIcSHH34oO5TGBQUFffzxx62trYWFhTdu3Fi7di2f9uNPrEm1gX8z+FxoaGhdXZ17aLfbH3vsMYl5AB+xWCw5OTlvvPHGI488IjuLLrS0tFgsls2bN7uGs2fPvnLlitxImhcSEtLQ0FBaWiqEuHTpktlsDgwM5IOofaq1tfXs2bNPPPGEa9jX1zdhwgS5kTRvxowZnkN2NPuN2WxOT0+XnUIv7HZ7VFSU+/0kMjKyra1NbiTN++23327evFlUVOQaZmVl8Um+/sSaVBs4JcPnlixZIoRwXYHc3NxssViSkpJkhwLGWVtb2/bt2/fv35+amtrf39/f3+/5Sx74gqIob731VktLixDi2rVrp06dYuXjazk5OcV/SEhIyM7O3rp1q+xQGtfT05OXl2e1WoUQ7e3t33333eOPPy47lMalpqbabLaKigohhM1mq6ys5DX3jx9++IHbMPlNXFzc6dOnXefQrq6u6upq9wcXwEdu3LixadOm9vZ2IcS5c+eqq6v5ucWfWJNqAzuw4HMGg+Htt9/euXOnyWSqr6/ft2/fzJkzZYcCxllpaenNmzeff/559yNPPfVUbm6uxEiaN3/+/Ndee239+vWJiYk1NTVZWVkrV66UHQoYZ9HR0a+++mpmZmZCQkJtbe0LL7yQkpIiO5TGTZo0qaio6KWXXiouLrZarc8888yyZctkh9I+h8PR0dERFxcnO4hexMbGvvLKK5mZmfHx8fX19Rs2bNiwYYPsUBoXFhb28ssvP/roo/Hx8b/++mtRUVFgYKDsUDrCmlQb7nE6nbIzQC+6u7sDAgLYig9gHDkcDpvNNn36dK6rgoY5HI6enh7OoX5269ate++9l/cWaJjrvcVoNPJ97jeKovT29k6ZMkV2EP1iTXpXo8ACAAAAAACAqtE7AgAAAAAAQNUosAAAAAAAAKBqFFgAAAAAAABQNQosAAAAAAAAqBoFFgAAAAAAAFSNAgsAAAAAAACqRoEFAAAAAAAAVaPAAgAAAAAAgKpRYAEAAAAAAEDVKLAAAAAAAACgahRYAAAAAAAAUDUKLAAAAAAAAKgaBRYAAAAAAABUjQILAAAAAAAAqkaBBQAAAAAAAFWjwAIAAAAAAICqUWABAAAAAABA1SiwAAAAAAAAoGoUWAAAAAAAAFA1CiwAAAAAAACoGgUWAAAAAAAAVI0CCwAAAAAAAKpGgQUAAAAAAABVo8ACAAAAAACAqlFgAQAAAAAAQNX+D6KYo5Xeq+68AAAAAElFTkSuQmCC" 493 | }, 494 | "metadata": {} 495 | } 496 | ], 497 | "metadata": {} 498 | }, 499 | { 500 | "cell_type": "markdown", 501 | "source": [ 502 | "### Derivada" 503 | ], 504 | "metadata": {} 505 | }, 506 | { 507 | "cell_type": "code", 508 | "execution_count": 14, 509 | "source": [ 510 | "syms f(t);\r\n", 511 | "derivada = diff(f, t);\r\n", 512 | "transformada = laplace(derivada, t, s)" 513 | ], 514 | "outputs": [ 515 | { 516 | "output_type": "stream", 517 | "name": "stdout", 518 | "text": [ 519 | "transformada =\n", 520 | "s*laplace(f(t), t, s) - 1*f(0)\n", 521 | "\n" 522 | ] 523 | } 524 | ], 525 | "metadata": {} 526 | }, 527 | { 528 | "cell_type": "code", 529 | "execution_count": 15, 530 | "source": [ 531 | "transformada_inversa = ilaplace(transformada)" 532 | ], 533 | "outputs": [ 534 | { 535 | "output_type": "stream", 536 | "name": "stdout", 537 | "text": [ 538 | "transformada_inversa =\n", 539 | "diff(f(t), t)\n", 540 | "\n" 541 | ] 542 | } 543 | ], 544 | "metadata": {} 545 | }, 546 | { 547 | "cell_type": "code", 548 | "execution_count": 16, 549 | "source": [ 550 | "integral = int(f, t, 0, t);\r\n", 551 | "transformada = laplace(integral, t, s)" 552 | ], 553 | "outputs": [ 554 | { 555 | "output_type": "stream", 556 | "name": "stdout", 557 | "text": [ 558 | "transformada =\n", 559 | "laplace(int(f(t), t, 0, t), t, s)\n", 560 | "\n" 561 | ] 562 | } 563 | ], 564 | "metadata": {} 565 | }, 566 | { 567 | "cell_type": "code", 568 | "execution_count": 17, 569 | "source": [ 570 | "transformada_inversa = ilaplace(transformada)" 571 | ], 572 | "outputs": [ 573 | { 574 | "output_type": "stream", 575 | "name": "stdout", 576 | "text": [ 577 | "transformada_inversa =\n", 578 | "int(f(t), t, 0, t)\n", 579 | "\n" 580 | ] 581 | } 582 | ], 583 | "metadata": {} 584 | }, 585 | { 586 | "cell_type": "markdown", 587 | "source": [ 588 | "## Ejercicios" 589 | ], 590 | "metadata": {} 591 | }, 592 | { 593 | "cell_type": "code", 594 | "execution_count": 18, 595 | "source": [ 596 | "s = sym(\"s\");" 597 | ], 598 | "outputs": [ 599 | { 600 | "output_type": "stream", 601 | "name": "stdout", 602 | "text": [ 603 | "\n" 604 | ] 605 | } 606 | ], 607 | "metadata": {} 608 | }, 609 | { 610 | "cell_type": "markdown", 611 | "source": [ 612 | "### Estructura General de un ejercicio\n", 613 | "\n", 614 | "Se define una función cuya antitransformada se desea calcular" 615 | ], 616 | "metadata": {} 617 | }, 618 | { 619 | "cell_type": "code", 620 | "execution_count": 19, 621 | "source": [ 622 | "funcion_transformada = 12 / ((s-3)*(s+1))" 623 | ], 624 | "outputs": [ 625 | { 626 | "output_type": "stream", 627 | "name": "stdout", 628 | "text": [ 629 | "funcion_transformada =\n", 630 | "12/((s + 1)*(s - 3))\n", 631 | "\n" 632 | ] 633 | } 634 | ], 635 | "metadata": {} 636 | }, 637 | { 638 | "cell_type": "markdown", 639 | "source": [ 640 | "Se utiliza la función partfrac para separar en fracciones parciales" 641 | ], 642 | "metadata": {} 643 | }, 644 | { 645 | "cell_type": "code", 646 | "execution_count": 20, 647 | "source": [ 648 | "fracciones_parciales = partfrac(funcion_transformada)" 649 | ], 650 | "outputs": [ 651 | { 652 | "output_type": "stream", 653 | "name": "stdout", 654 | "text": [ 655 | "fracciones_parciales =\n", 656 | "3/(s - 3) - 3/(s + 1)\n", 657 | "\n" 658 | ] 659 | } 660 | ], 661 | "metadata": {} 662 | }, 663 | { 664 | "cell_type": "markdown", 665 | "source": [ 666 | "Se calcula la antitransformada a las fracciones parciales" 667 | ], 668 | "metadata": {} 669 | }, 670 | { 671 | "cell_type": "code", 672 | "execution_count": 21, 673 | "source": [ 674 | "ilaplace(fracciones_parciales)" 675 | ], 676 | "outputs": [ 677 | { 678 | "output_type": "stream", 679 | "name": "stdout", 680 | "text": [ 681 | "ans =\n", 682 | "3*exp(3*t) - 3*exp(-t)\n", 683 | "\n" 684 | ] 685 | } 686 | ], 687 | "metadata": {} 688 | }, 689 | { 690 | "cell_type": "markdown", 691 | "source": [ 692 | "Se verifica haciendo la antitransformada de la función original" 693 | ], 694 | "metadata": {} 695 | }, 696 | { 697 | "cell_type": "code", 698 | "execution_count": 22, 699 | "source": [ 700 | "ilaplace(funcion_transformada)" 701 | ], 702 | "outputs": [ 703 | { 704 | "output_type": "stream", 705 | "name": "stdout", 706 | "text": [ 707 | "ans =\n", 708 | "3*exp(3*t) - 3*exp(-t)\n", 709 | "\n" 710 | ] 711 | } 712 | ], 713 | "metadata": {} 714 | }, 715 | { 716 | "cell_type": "markdown", 717 | "source": [ 718 | "### Ejercicios Adicionales\n", 719 | "\n", 720 | "Ejercicio 1" 721 | ], 722 | "metadata": {} 723 | }, 724 | { 725 | "cell_type": "code", 726 | "execution_count": 23, 727 | "source": [ 728 | "funcion_transformada = (4) / (s^2 - 9)" 729 | ], 730 | "outputs": [ 731 | { 732 | "output_type": "stream", 733 | "name": "stdout", 734 | "text": [ 735 | "funcion_transformada =\n", 736 | "4/(s^2 - 9)\n", 737 | "\n" 738 | ] 739 | } 740 | ], 741 | "metadata": {} 742 | }, 743 | { 744 | "cell_type": "code", 745 | "execution_count": 24, 746 | "source": [ 747 | "fracciones_parciales = partfrac(funcion_transformada)" 748 | ], 749 | "outputs": [ 750 | { 751 | "output_type": "stream", 752 | "name": "stdout", 753 | "text": [ 754 | "fracciones_parciales =\n", 755 | "0.6667/(s - 3) - 0.6667/(s + 3)\n", 756 | "\n" 757 | ] 758 | } 759 | ], 760 | "metadata": {} 761 | }, 762 | { 763 | "cell_type": "code", 764 | "execution_count": 25, 765 | "source": [ 766 | "ilaplace(fracciones_parciales)" 767 | ], 768 | "outputs": [ 769 | { 770 | "output_type": "stream", 771 | "name": "stdout", 772 | "text": [ 773 | "ans =\n", 774 | "0.6667*exp(3*t) - 0.6667*exp(-3*t)\n", 775 | "\n" 776 | ] 777 | } 778 | ], 779 | "metadata": {} 780 | }, 781 | { 782 | "cell_type": "markdown", 783 | "source": [ 784 | "Ejercicio 2" 785 | ], 786 | "metadata": {} 787 | }, 788 | { 789 | "cell_type": "code", 790 | "execution_count": 26, 791 | "source": [ 792 | "funcion_transformada = (s^2+2*s+3) / (s+1)^2" 793 | ], 794 | "outputs": [ 795 | { 796 | "output_type": "stream", 797 | "name": "stdout", 798 | "text": [ 799 | "funcion_transformada =\n", 800 | "(s^2 + 2*s + 3)/(s + 1)^2\n", 801 | "\n" 802 | ] 803 | } 804 | ], 805 | "metadata": {} 806 | }, 807 | { 808 | "cell_type": "code", 809 | "execution_count": 27, 810 | "source": [ 811 | "fracciones_parciales = partfrac(funcion_transformada)" 812 | ], 813 | "outputs": [ 814 | { 815 | "output_type": "stream", 816 | "name": "stdout", 817 | "text": [ 818 | "fracciones_parciales =\n", 819 | "2/(s + 1)^2 + 1\n", 820 | "\n" 821 | ] 822 | } 823 | ], 824 | "metadata": {} 825 | }, 826 | { 827 | "cell_type": "code", 828 | "execution_count": 28, 829 | "source": [ 830 | "ilaplace(fracciones_parciales)" 831 | ], 832 | "outputs": [ 833 | { 834 | "output_type": "stream", 835 | "name": "stdout", 836 | "text": [ 837 | "ans =\n", 838 | "2*t*exp(-t)\n", 839 | "\n" 840 | ] 841 | } 842 | ], 843 | "metadata": {} 844 | }, 845 | { 846 | "cell_type": "markdown", 847 | "source": [ 848 | "Ejercicio 3" 849 | ], 850 | "metadata": {} 851 | }, 852 | { 853 | "cell_type": "code", 854 | "execution_count": 29, 855 | "source": [ 856 | "funcion_transformada = (5*(s+2)) / (s^2*(s+1)*(s+3))" 857 | ], 858 | "outputs": [ 859 | { 860 | "output_type": "stream", 861 | "name": "stdout", 862 | "text": [ 863 | "funcion_transformada =\n", 864 | "(5*s + 10)/(s^2*(s + 1)*(s + 3))\n", 865 | "\n" 866 | ] 867 | } 868 | ], 869 | "metadata": {} 870 | }, 871 | { 872 | "cell_type": "code", 873 | "execution_count": 30, 874 | "source": [ 875 | "fracciones_parciales = partfrac(funcion_transformada)" 876 | ], 877 | "outputs": [ 878 | { 879 | "output_type": "stream", 880 | "name": "stdout", 881 | "text": [ 882 | "fracciones_parciales =\n", 883 | "2.5000/(s + 1) + 0.2778/(s + 3) - 2.7778/s + 3.3333/s^2\n", 884 | "\n" 885 | ] 886 | } 887 | ], 888 | "metadata": {} 889 | }, 890 | { 891 | "cell_type": "code", 892 | "execution_count": 31, 893 | "source": [ 894 | "ilaplace(fracciones_parciales)" 895 | ], 896 | "outputs": [ 897 | { 898 | "output_type": "stream", 899 | "name": "stdout", 900 | "text": [ 901 | "ans =\n", 902 | "3.3333*t + 2.5000*exp(-t) + 0.2778*exp(-3*t) - 2.7778\n", 903 | "\n" 904 | ] 905 | } 906 | ], 907 | "metadata": {} 908 | } 909 | ], 910 | "metadata": { 911 | "kernelspec": { 912 | "display_name": "Matlab", 913 | "language": "matlab", 914 | "name": "matlab" 915 | }, 916 | "language_info": { 917 | "codemirror_mode": "octave", 918 | "file_extension": ".m", 919 | "help_links": [ 920 | { 921 | "text": "MetaKernel Magics", 922 | "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" 923 | } 924 | ], 925 | "mimetype": "text/x-octave", 926 | "name": "matlab", 927 | "version": "0.16.11" 928 | } 929 | }, 930 | "nbformat": 4, 931 | "nbformat_minor": 5 932 | } --------------------------------------------------------------------------------