Professional Documents
Culture Documents
MHHMP Bao Cao
MHHMP Bao Cao
S 1...................................................................................................................... 2
1. Xy dng hm truyn v phng trnh sai phn ca h. ..................................... 2
2. Code chng trnh vi ngn ng C# ................................................................... 3
3. In kt qu ng cong qu ............................................................................ 10
4. So snh kt qu vi phn mm Matlab. ............................................................. 12
5. In kt qu y[k] .................................................................................................... 13
6. Cc ch tiu cht lng ca h thng ................................................................. 13
7. Nhn xt ............................................................................................................. 14
8. Ti liu tham kho ............................................................................................. 14
S 1
1 2
1 2 2 + (1 + 2 ) + 1 2 3 + 1
2 1
Thay = .
+1
vo hm W(s) ta c:
2 1
1 2 . ( .
+ 1)
() =
2 1 2
2 1
1 2 . ( . + 1) + (1 + 2 ) ( . + 1) + 1 2 3 + 1
1 2 2 ( + 1)2
() =
41 2 ( 1)2 + (1 2 3 + 1) 2 ( + 1)2 + 2(1 + 2 )( + 1)( 1)
Bin i v dng:
() 1 2 2 ( 2 + 2 + 1)
=
()
2 + +
Trong :
= 41 2 + 2(1 + 2 ) + (1 2 3 + 1) 2
= 81 2 + 2 2 (1 2 3 + 1)
= 41 2 2(1 + 2 ) + (1 2 3 + 1) 2
Az2Y(z) + BzY(z) + CY(z) = K1K2T2 [z2U(z) + 2zU(z) + U(z)]
Dng tnh cht dch hm gc c bin i Z ta tm c phng trnh sai phn tng
ng:
AY[k+2] + BY[k+1] + CY[k] = K1K2T2 (U[k+2] + 2 U[k+1] + U[k])
V tn hiu vo l tn hiu nhy cp U(t) = 1(t) nn ta c:
U[k+2] = U[k+1] = U[k] = 1
AY[k+2] + BY[k+1] + CY[k] = 4K1K2T2
Y[k+2] = (4K1K2T2 BY[k+1] CY[k]) /A
T ta c cng thc tnh cc gi tr p ng y(t) nh sau:
y[0] = y[1] = 0;
y[k+2] = (4K1K2T2 By[k+1] Cy[k]) /A;
k=0, 1, 2999; A, B, C l cc hng s tnh trn.
{
private Graphics graph;
private int x0, y0, xMax, yMax;
// ta gc O, xMax, yMax
private int min, max;
private int delta_x=30;
private int delta_y=30;
// lch trc ta khi v
private double dx, x, y;
private float x1, y1, x2, y2;
private bool OnDinh = true;
private float K1, K2, K3, T1, T2, T;
//thng s u vo
private float Tmin;
private float ymax, yod, x_ymax, Tod, Tmax, xicma;
//Thng s u ra cn tnh ton
private int x_Tod;
// Xc nh ta ca Tod;
// chia v th
public Form1()
{
InitializeComponent();
graph = DrawArea.CreateGraphics();
xMax = DrawArea.Width;
yMax = DrawArea.Height;
x0 = 0;
y0 = DrawArea.Height;
}
private void button1_Click(object sender, EventArgs e)
{
int sopt = 1000;
graph.Clear(Color.White);
float[] y = new float[sopt];
PointF[] pnt = new PointF[sopt];
Pen blackPen = new Pen(Color.Black, 1);
Pen redPen = new Pen(Color.Red, 1);
Pen greenPen = new Pen(Color.Green, 3);
int index = 0;
for (int i = 0; i < 100; i++)
{
// 100 ch s im y[k] cn in ra.
comboBox_item.Items.Add(index);
index += 10;
}
listBox1.Items.Clear(); // phi xa rng listbox mi ln cp nht li th
// Kim tra nhp thng s hp l hay khng
if (float.TryParse(textBoxK1.Text, out K1) && float.TryParse(textBoxK2.Text, out K2)
&& float.TryParse(textBoxT2.Text, out T2) && float.TryParse(textBoxT1.Text, out T1) &&
float.TryParse(textBoxT.Text, out T)
&& float.TryParse(textBoxT2.Text, out K3))
{
if (T1 < T2) { Tmin = T1/20; }
else { Tmin = T2 / 20; }
if (T > Tmin)
{ MessageBox.Show("Xin nhp li chu k trich mu T, T<= (1/20) Min(T1,T2) !"); } // chu k
trch mu
else
{
A = 4 * T1 * T2 + 2*T*(T1+T2) + (1 + K1 * K2 * K3) *T*T;
B = (-8*T1*T2 +(2 +2*K1*K2*K3) *T*T);
C = 4*T1*T2 - 2*T*(T1+T2) + T*T*(1 + K1 *K2 *K3);
float a0 = (1 + K1 * K2 * K3);
float a1 = (T1 + T2);
float a2 = (T1 * T2);
//Kiem tra tinh on dinh he thong theo tieu chuan Hurwits
if ((a1 > 0) && (a2 > 0)) { OnDinh = true; }
else OnDinh = false;
y[0] = 0; y[1] = 0;
ymax = y[1];
float ymin = 0;
for (int i = 0; i < (sopt - 2); i++)
{
y[i + 2] = (4*K1*K2*T*T - B *y[i+1] - C* y[i]) / A;
if (ymax < y[i]) { ymax = y[i]; x_ymax = i; } // Tm v tr v gi tr ca ymax
if (ymin > y[i]) { ymin = y[i]; }
}
if (ymin < 0) { y0 = DrawArea.Height / 2; }
// ymin dng v trc ta khi c gi tr y m!!! => c th h thng ko n nh
else { y0 = DrawArea.Height; }
//=== Tnh ton li chia th nm chn trong "gn" trong picturebox
unit_x = (DrawArea.Width - 3 * delta_x) / (T * 1000);
unit_y = (y0 - 3 * delta_y) / ymax;
yod = 0;
for (int i = k; i < 1000; i++)
{
yod += y[i];
}
yod = yod / (999 - k + 1);
xicma = Math.Abs(ymax - yod) * 100 / yod;
Tmax = x_ymax * T;
// a ra cc thng s u ra
textBoxHT.Text = "n nh";
textBoxTod.Text = Tod.ToString();
textBoxYod.Text = yod.ToString();
textBoxTmax.Text = Tmax.ToString();
textBoxYmax.Text = ymax.ToString();
textBoxxicma.Text = xicma.ToString();
// V ging ta ca ymax
float toa_do_x = delta_x;
float toa_do_y = y0 - ymax * unit_y - delta_y;
do
{
graph.DrawLine(blackPen, toa_do_x, y0 - ymax * unit_y - delta_y, toa_do_x + 3, y0 ymax * unit_y - delta_y); //giong ngang
toa_do_x += 6;
} while (toa_do_x <= delta_x + x_ymax * T * unit_x);
do{
graph.DrawLine(blackPen, delta_x + x_ymax * T * unit_x, toa_do_y, delta_x + x_ymax
* T * unit_x, toa_do_y +3); //doc
toa_do_y +=6;
} while (toa_do_y <= y0 - ymax * unit_y - delta_y);
graph.DrawString("Ymax=" + ymax.ToString(), f, b, delta_x + x_ymax * T * unit_x, y0 ymax * unit_y - 2 * delta_y);
// V ging yod
toa_do_x = delta_x;
do
{
graph.DrawLine(blackPen, toa_do_x, y0 - delta_y - yod * unit_y, toa_do_x +3, y0 delta_y - yod * unit_y);
graph.DrawLine(blackPen, toa_do_x, y0 - delta_y - yod * unit_y * 1.05F, toa_do_x + 3,
y0 - delta_y - yod * unit_y * 1.05F);
graph.DrawLine(blackPen, toa_do_x, y0 - delta_y - yod * unit_y * 0.95F, toa_do_x + 3,
y0 - delta_y - yod * unit_y * 0.95F);
toa_do_x += 6;
} while (toa_do_x <= (xMax - 2 * delta_x));
graph.DrawString("Yod=" + yod.ToString(), f, b, xMax - 7 * delta_x, y0 - delta_y - yod *
unit_y * 1.1F);
//V ging Tod
toa_do_y = y0 - delta_y - y[x_Tod] * unit_y;
do
{
graph.DrawLine(blackPen, delta_x + x_Tod * T * unit_x, toa_do_y, delta_x + x_Tod *
T * unit_x, toa_do_y + 3);
toa_do_y += 6;
} while (toa_do_y <= (y0-delta_y));
graph.DrawString("Tod=" + x_Tod.ToString(), f, b, delta_x + x_Tod * T * unit_x + 10, y0
- 2*delta_y);
chi_so = ymax / 5;
int _tmp = (int)(chi_so * Math.Pow(10, 1));
chi_so = (float)(_tmp / Math.Pow(10, 1));
float tmp2 = chi_so;
for (int i = 0; i <= 15; i++)
if ((chi_so>0) && (chi_so<ymax))
{
graph.DrawLine(blackPen, delta_x - 3, yMax - chi_so * unit_y - delta_y, delta_x + 3,
yMax - chi_so * unit_y - delta_y);
_tmp = (int)(chi_so * Math.Pow(10, 1));
chi_so = (float)(_tmp / Math.Pow(10, 1));
graph.DrawString(chi_so.ToString(), f, b, delta_x - 30, yMax - chi_so * unit_y - delta_y10);
chi_so += tmp2;
}
} else
{ textBoxTod.Text = "N/A";
textBoxHT.Text = "Khng n nh";
textBoxYod.Text = "N/A";
textBoxTmax.Text = "N/A";
textBoxYmax.Text = "N/A";
textBoxxicma.Text = "N/A";
}
}
}
else
MessageBox.Show("Xin ch nhp d liu dng s!");
}
//============================================//
private void VeTrucToaDo()
{ Pen p = new Pen(Color.Black, 2);
3. In kt qu ng cong qu
ng vi b thng s:
Ta c ng cong qu nh sau:
10
11
Nhn xt:
th thu c bng chng trnh m phng c dng ging vi th m
phng bi Matlab. Nh vy, nu b qua sai s khng th trnh khi trong qu trnh
m phng, chng ta c th kim chng c phng php tm phng trnh sai phn
ca h thng, v tnh ton ca chng trnh m phng l ng.
12
5. In kt qu y[k]
In ra mn hnh kt qu y[k], cch 10 s in 1 ln
S dng listbox a ra 100 gi tr, c 10 gi tr th add phn t vo listbox.
comboBox cha ch s k ca y[k] trong listbox, listbox v comboBox tham chiu
n nhau.
V d: y y[160] = 0.667
13
nh sau:
7. Nhn xt
Vi b thng s T1, T2, K1, K2, K3, T ph hp, h thng s n nh. Cn chn thi
gian trch mu T nh hn hoc bng 1/10 min(T1, T2). Cc thng s trn u phi
khc 0.
ng cong xut pht t gc ta , vt ln ti gi tr Ymax ti thi im Tmax,
dao ng xung quanh gi tr Yod. Gi tr vt qu ti a so vi Yod l h (%).
n thi gian Tod, h n nh, ch dao ng trong phm vi 5% xung quanh gi
tr Yod.
14