Created
May 8, 2017 22:34
-
-
Save ruoyu0088/7e560adba867b87462c60ca610e45967 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline\n", | |
"import pylab as pl\n", | |
"import control as ctrl\n", | |
"import numpy as np" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"k21 = 0.719\n", | |
"k01 = 0.461\n", | |
"k12 = 0.652\n", | |
"k02 = 0\n", | |
"A = [[ -k21 - k01, k12],\n", | |
" [ k21, -k21]]\n", | |
"B = [[0.5], [0]]\n", | |
"C = [[1, 0]]\n", | |
"X0 = [[1.0], [0.0]]\n", | |
"\n", | |
"A, B, C, X0 = map(np.array, [A, B, C, X0])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"可以使用`acker()`将$A - L C$的特征值设置为指定的值。" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 67, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([-5., -1.])" | |
] | |
}, | |
"execution_count": 67, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"L = np.array(ctrl.acker(A.T, C.T, [-1, -5]).T)\n", | |
"np.linalg.eigvals(A - L @ C)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"下面计算系统的初始响应:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 64, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"sys = ctrl.ss(A, B, C, 0)\n", | |
"\n", | |
"t = np.arange(0, 6, 0.01)\n", | |
"t, y, x = ctrl.forced_response(sys, T=t, U=0, X0=X0)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"下面计算误差系统的初始响应,由于$\\hat{X}$的初始值为0,因此误差系统的初始值为$X_0$。\n", | |
"\n", | |
"$$\\hat{X} = X - \\tilde{X}$$" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 69, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7d3d714334e0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"sys_err = ctrl.ss(A - L @ C, B, C, 0)\n", | |
"t, y, x_err = ctrl.forced_response(sys_err, T=t, U=0, X0=X0)\n", | |
"\n", | |
"x_hat = x - x_err\n", | |
"\n", | |
"pl.plot(t, x.T)\n", | |
"pl.plot(t, x_hat.T, ls=\"--\")\n", | |
"pl.ylim(0, 0.7)\n", | |
"pl.grid();" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"anaconda-cloud": {}, | |
"kernelspec": { | |
"display_name": "Python [default]", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.5.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 1 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment