exponenta event banner

Решите жесткое дифференциальное алгебраическое уравнение транзистора

В этом примере показано, как использовать ode23t для решения жесткого дифференциального алгебраического уравнения (DAE), описывающего электрическую цепь [1]. Проблема однотранзисторного усилителя, закодированная в примере файла amp1dae.m, может быть переписана в полуявном виде, но этот пример решает ее в исходном виде Mu′=ϕ (u). Задача включает в себя постоянную сингулярную массовую матрицу М .

Схема транзисторного усилителя содержит шесть резисторов, три конденсатора и транзистор.

  • Начальный сигнал напряжения - Ue (t) = 0,4sin (200.dt).

  • Рабочее напряжение Ub = 6.

  • Напряжения в узлах задаются Ui (t) (i = 1,2,3,4,5).

  • Значения резисторов Ri (i = 1,2,3,4,5,6) постоянны, и ток через каждый резистор удовлетворяет I = U/R.

  • Значения конденсаторов Ci (i = 1,2,3) постоянны, и ток через каждый конденсатор удовлетворяет I=C⋅dU/dt.

Целью является решение проблемы выходного напряжения через узел 5, U5 (t).

Чтобы решить это уравнение в MATLAB ®, необходимо кодировать уравнения, кодировать массовую матрицу и задавать начальные условия и интервал интегрирования перед вызовом решателяode23t. Требуемые функции можно либо включить в качестве локальных функций в конце файла (как здесь сделано), либо сохранить их как отдельные именованные файлы в каталоге по пути MATLAB.

Матрица массы кода

Используя закон Кирхоффа для выравнивания тока через каждый узел (от 1 до 5), можно получить систему из пяти уравнений, описывающих схему:

узел 1: Ue (t) R0-U1R0+C1 (U2 -U1 ) =0, узел 2: UbR2-U2 (1R1+1R2) +C1 (′-U2 U1 ′)-0.01f (U2-U3) =0, узел 3: f (U2-U3)-u3r3-c2u3  = 0, узел 4: UbR4-U4R4+C3 (U5 -U4 )-0.99f (U2-U3) =0, узел 5:-U5R5+C3 (U4 -U5 ) =0.

Массовая матрица этой системы, найденная путём сбора производных членов в левой части уравнений, имеет вид

M = (-c1c1000c1-c100000-c200000-c3c3000c3-c3),

где ck = k × 10-6 для k = 1,2,3.

Создайте массовую матрицу с соответствующими константами ck, а затем используйте odeset для задания матрицы массы. Несмотря на то, что очевидно, что матрица массы является единственной, оставьте 'MassSingular' опция при ее значении по умолчанию 'maybe' для тестирования автоматического обнаружения проблемы дисковой полки решателем.

c = 1e-6 * (1:3);
M = zeros(5,5);
M(1,1) = -c(1);
M(1,2) =  c(1);
M(2,1) =  c(1);
M(2,2) = -c(1);
M(3,3) = -c(2);
M(4,4) = -c(3);
M(4,5) =  c(3);
M(5,4) =  c(3);
M(5,5) = -c(3);
opts = odeset('Mass',M);

Уравнения кода

Функция transampdae содержит систему уравнений для этого примера. Функция определяет значения для всех напряжений и постоянных параметров. Производные, собранные в левой части уравнений, кодируются в матрице масс, и transampdae кодирует правую часть уравнений.

function dudt = transampdae(t,u)
% Define voltages and parameters
Ue = @(t) 0.4*sin(200*pi*t);
Ub = 6;
R0 = 1000;
R15 = 9000;
alpha = 0.99;
beta = 1e-6;
Uf = 0.026;

% Define system of equations
f23 = beta*(exp((u(2) - u(3))/Uf) - 1);
dudt = [ -(Ue(t) - u(1))/R0
    -(Ub/R15 - u(2)*2/R15 - (1-alpha)*f23)
    -(f23 - u(3)/R15)
    -((Ub - u(4))/R15 - alpha*f23)
    (u(5)/R15) ];
end

Примечание.Эта функция включается как локальная функция в конце примера.

Исходные условия кода

Задайте исходные условия. В этом примере используются согласованные начальные условия для тока через каждый узел, вычисленные в [1].

Ub = 6;
u0(1) = 0;
u0(2) = Ub/2;
u0(3) = Ub/2;
u0(4) = Ub;
u0(5) = 0;

Система решений уравнений

Решение системы дисковых полок в течение интервала времени [0 0.05] использование ode23t.

tspan = [0 0.05];
[t,u] = ode23t(@transampdae,tspan,u0,opts);

Результаты графика

Постройте график начального напряжения Ue (t) и выходного напряжения U5 (t).

Ue = @(t) 0.4*sin(200*pi*t);
plot(t,Ue(t),'o',t,u(:,5),'.')
axis([0 0.05 -3 2]);
legend('Input Voltage U_e(t)','Output Voltage U_5(t)','Location','NorthWest');
title('One Transistor Amplifier DAE Problem Solved by ODE23T');
xlabel('t');

Figure contains an axes. The axes with title One Transistor Amplifier DAE Problem Solved by ODE23T contains 2 objects of type line. These objects represent Input Voltage U_e(t), Output Voltage U_5(t).

Ссылки

[1] Хэйрер, Э. и Герхард Ваннер. Решение обыкновенных дифференциальных уравнений II: Жесткие и дифференциально-алгебраические задачи. Спрингер Берлин Гейдельберг, 1991, с. 377.

Локальные функции

Здесь приведена локальная вспомогательная функция, которая используется решателем ODE. ode23t вызывает для вычисления решения. Можно также сохранить эту функцию как собственный файл в каталоге по пути MATLAB.

function dudt = transampdae(t,u)
% Define voltages and parameters
Ue = @(t) 0.4*sin(200*pi*t);
Ub = 6;
R0 = 1000;
R15 = 9000;
alpha = 0.99;
beta = 1e-6;
Uf = 0.026;

% Define system of equations
f23 = beta*(exp((u(2) - u(3))/Uf) - 1);
dudt = [ -(Ue(t) - u(1))/R0
    -(Ub/R15 - u(2)*2/R15 - (1-alpha)*f23)
    -(f23 - u(3)/R15)
    -((Ub - u(4))/R15 - alpha*f23)
    (u(5)/R15) ];
end

См. также

|

Связанные темы