Численное моделирование и анализ переходных процессов в электрической цепи
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?трезке [xi, xi+1] интегральная кривая заменяется отрезком касательной к кривой (см. рис.7, рис.8).
Рис.7 Рис.8
7. Метод Рунге-Кутта второго порядка (Метод Эйлера-Коши)
Рассмотрим метод Рунге-Кутта второго порядка. В этом методе величины yi+1 вычисляются по следующим формулам:
i+1 = yi + Dyi
Dyi=D yi1+D yi2
,
См. рис.1
Тогда .
Обозначим
, тогда
Геометрически это означает, что мы определяем направление интегральной кривой в исходной точке (xi, yi) и во вспомогательной точке , а в качестве окончательного берем среднее из этих направлений.
8. Метод Рунге-Кутта четвертого порядка
В вычислительной практике наиболее часто используется метод Рунге-Кутта четвертого порядка.
В этом методе величины yi+1 вычисляются по следующим формулам:
yi+1 = yi + Dyi
Dyi=h (k1 + 2k2 + 2k3 + k4) /6, i = 0, 1,.1 = f (xi, yi),2 = f (xi+h/2, yi+h k1/2),3 = f (xi+h/2, yi+h k2/2),4 = f (xi+h, yi+h k3).
9. Практическая часть
1 Численная реализация решения системы дифференциальных уравнений
.1 Реализация в программе MathCad. Метода Рунге-Кутта.
Метод Рунге-Кутта
Таблица 1. Результаты работы программы MathCad.
1.2 Реализация в программе MathCad. Метод Эйлера 1-я модификация
Таблица 2. Результаты работы программы MathCad.
Рисунок 2 - График зависимости силы тока от времени
Рисунок 3 - График Зависимости напряжения от времени
1.3 Реализация решения на языке программирования высокого уровня (C++) методом Эйлера (1 модификация).
Блок-схема
Программный код
#include
#include
#include
#includedouble PI = 3.1415926;
double f, PhiA, Phi, E0, LA, L, CA, C, t0, t1, t2, h;
double R [7];n, i;
// Функция гармонического источника тока, учитывающая переключение ключа
double E (double t)
{;(t < t1)
{= E0 + E0 * sin (2 * PI * f* t + Phi);
}
{= 0;
};
}
// Производная от тока I по времени t
double FDI (double t, double I, double U)
{A, B, D, ResultFDI;= R [2] / (R [1] + R [2]);= (R [1] * R [2]) / (R [1] + R [2]);= (R [5] + R [6]) / (R [3] + R [5] + R [6]);= (1/L) * ( (A * E (t)) - (I * (R [4] + (R [3] * D) + B)) - (U * D));
returnResultFDI;
}
// Производная от напряжения U по времени t
double FDU (double t, double I, double U)
{A, B, ResultFDU;= (R [5] + R [6]) / (R [3] + R [5] + R [6]);= 1/ (R [3] + R [5] + R [6]);= (1/C) * ( (I * A) - (U * B));;
}main ()
{*FOUT;xt1, xt2, pI, I1, I2, pU, U1, U2;= fopen ("C: \\student\\Result08. txt", "a");
// Вводпараметровцепи<< "********** METOg 3uLEPA (3 mog.) **********\n";<< "BBEguTE E0 (B): \n";
cin>> E0; t2;<< "BBEguTE n: \n";
cin>> n;= (t2 - t0) / n;<< "War h = " << h << "\n";(i=1; i<=6; i++)
{ R [i];
}PhiA;= PhiA * PI;
// Определение начальных условий<< "BBEguTE I (0), (A): \n";
cin>> I1;<< "BBEguTE U (0), (B): \n";
cin>> U1;= t0;<< "\n";
// Запись введенных данных в файл(FOUT, "********** Метод Эйлера (3 мод.) **********\n");(FOUT, "Параметры цепи: \n");
fprintf (FOUT, "E0 = %g (B) \n", E0);
fprintf (FOUT, "L = %g (мГн) \n", LA);
fprintf (FOUT, "C = %g (мкФ) \n", CA);
fprintf (FOUT, "t0 = %g (c) \nt1 = %g (c) \nt2 = %g (c) \n", t0, t1, t2);
fprintf (FOUT, "n = %d\n", n);(FOUT, "h = %g\n", h);(i=1; i<=6; i++)
{(FOUT, "R (%d) = %g (Ом) \n", i, R [i]);
}(FOUT, "f = %g (Гц) \n", f);(FOUT, "ф = %g*п = %g (рад.) \n", PhiA, Phi);(FOUT, "\nТаблица значений: \n");(FOUT, "i\tt\tI\tU\n");(FOUT, "0\t%g\t%g\t%g\n", xt1, I1, U1);
// Цикл расчета значений функций 3 модификацией метода Эйлера(i=1; i<=n; i++)
{
// Вычислениезначений= xt1 + h;= I1 + h * FDI (xt1, I1, U1);
pU = U1 + h * FDU (xt1, I1, U1);
I2 = I1 + (h / 2) * (FDI (xt1, I1, U1) + FDI (xt2, pI, pU));
U2 = U1 + (h / 2) * (FDU (xt1, I1, U1) + FDU (xt2, pI, pU));
// Вывод полученных значений на экран<< "i = " <<i<< "\tt = " <<xt2 << "\tI = " <<I2 << "\tU = " <<U2 << "\n";
// Вывод полученных значений в файл(FOUT, "%d\t%g\t%g\t%g\n", i, xt2, I2, U2);
// Смещение значений для следующей итерации= xt2;
I1 = I2;= U2;
}<< "\n\n\n";(FOUT, "\nРасчетокончен\n\n\n");
fclose (FOUT);
}
Анализ результатов.
Численное решение системы дифференциальных уравнений в программах MathCad и C++ было реализовано с помощью метода Эйлера 1-й модификации.
Численные результаты двух программ совпадают.
Получены графики зависимости силы тока и напряжения от времени согласно системе уравнений и файл данных, содержащий дискретные зависимости силы тока и напряжения от времени на интервале .
. Решение задачи аппроксимации зависимости I (t)
.1 Реализация в пакете Excel
Таблица 4. Результаты работы программы Excel
itI (t) 1001 участок30,00010,13 50,00020,187 70,00030, 2082 участок90,00040,212 110,00050, 209 130,00060, 202 150,00070, 1943участок170,00080,186 190,00090,177 210,0010,169 230,00110,162 250,00120,154 270,00130,147 290,00140,141 310,00150,134 330,00160,129 350,00170,123 370,00180,117 390,00190,112 410,0020,107 430,00210,103 450,00220,098 470,00230,094 490,00240,09 510,00250,086 530,00260,082 550,00270,078 570,00280,074 590,00290,071 610,0030,068 630,00310,064 650,00320,061 670,00330,058 690,00340,055 710,00350,052 730,00360,05 750,00370,047 770,00380,044 790,00390,042 810,0040,039 830,0041-0,014 850,0042-0,038 870,0043-0,047 890,0044-0,049 910,0045-0,047 930,0046-0,049 950,0047-0,047 970,0048-0,045 990,0049-0,042 1010,005-0,039 1030,0051-0,036 1050,0052-0,033 1070,0053-0,03 1090,0054-0,028 1110,0055-0,026 1130,0056-0,024 1150,0057-0,022 1170,0058-0,02 1190,0059-0,018 1210,006-0,017 1230,0061-0,016 1250,0062-0,014 1270,0063-0,013 1290,0064-0,012 1310,0065-0,00937 1330,0066-0,00861 1350,0067-0,00791 1370,0068-0,00727 1390,0069-0,00668 1410,007-0,00614 1430,0071-0,00565 1450,0072-0,00519 1470,0073-0,00477 1490,0074-0,00439 1510,0075-0,00403 1530,0076-0,00371 1550,0077-0,00341 1570,0078-0,00313 1590,0079-0,00288 1610,008-0,00264 1630,0081-0,00243 1650,0082-0,00223 1670,0083-0,00205 1690,0084-0,00189 1710,0085-0,00173 1730,0086-0,00159 1750,0087-0,00147 1770,0088-0,00135 1790,0089-0,00124 1810,009-0,00114 1830,0091-0,00105 1850,0092-0,00096 1870,0093-0,00088 1890,0094-0,00081 191