Новости Информация Скачать Ссылки  

Использование результатов символьного анализа в Maple

Maple является известным математическим пакетом, ориентированным на символьный анализ и обработку математических формул. FASTMEAN имеет возможность экспорта полученных формул в Maple в текстовом виде через буфер обмена (для обозначения операции присвоения используется символ :=). В качестве примера рассмотрим анализ последовательного RLC-контура:

Построение графиков АЧХ и ФЧХ
Получение импульсной и переходной характеристик
Определение полюсов передаточной функции
Определение чувствительности передаточной функции к параметрам элементов

 

Построение графиков АЧХ и ФЧХ

> Digits:=30;

> R1 := 3;

 L1 := 0.001;

 C1 := 1e-05;

 U1 := 1;

 U_C1 := U1/(p^2*C1*L1+p*C1*R1+1);

 

> H:=proc(f) eval(U_C1, p=I*2*Pi*f); end proc;

> with(plots):

> plot(abs(H(f)), f=10..7000);

> plot(argument(H(f))/Pi*180, f=10..7000);

 

Получение импульсной и переходной характеристик

> Digits:=30;

> U_C1 := U1/(p^2*C1*L1+p*C1*R1+1);

 

> with(inttrans):

> g_original:=invlaplace(U_C1, p, t);

> g:=proc(t) eval(g_original); end proc;

> h_original:=invlaplace(U_C1/p, p, t);

> h:=proc(t) eval(h_original); end proc;

> R1 := 3;

 L1 := 0.001;

 C1 := 1e-05;

 U1 := 1;

> with(plots):

> plot(g(t), t=0..0.01);

> plot(h(t), t=0..0.01);

 

Определение полюсов передаточной функции

> Digits:=30;

> U_C1 := U1/(p^2*C1*L1+p*C1*R1+1);

 

> denominator:=denom(U_C1);

> solve(denominator=0,p);

> poles_list:=%;

> R1 := 3;

 L1 := 0.001;

 C1 := 1e-05;

 U1 := 1;

> poles_list;

> for j from 1 to 2 do eval(denominator, p=poles_list[j]); end do;

> poles_func:=i->poles_list[ceil(i)];

> with(plots):

> plot([Re(poles_func(i)), Im(poles_func(i)), i=1..2], -3000..3000, -20000..20000, style=POINT);

 

Определение чувствительности передаточной функции к параметрам элементов

> Digits:=30;

> U_C1:=U1/(p^2*C1*L1+p*C1*R1+1);

 

> U_C1_f:=proc(f) eval(U_C1, p=I*2*Pi*f); end proc;

> S_C1:=C1/U_C1*diff(U_C1, C1);

> S_R1:=R1/U_C1*diff(U_C1, R1);

> S_L1:=L1/U_C1*diff(U_C1, L1);

> R1 := 3;

 L1 := 0.001;

 C1 := 1e-05;

 U1 := 1;

> S_C1_f:=proc(f) eval(S_C1, p=I*2*Pi*f); end proc;

> S_R1_f:=proc(f) eval(S_R1, p=I*2*Pi*f); end proc;

> S_L1_f:=proc(f) eval(S_L1, p=I*2*Pi*f); end proc;

> with(plots):

> display([

   plot(Re(S_C1_f(f)), f=10..7000, color=red),

   plot(Re(S_R1_f(f)), f=10..7000, color=green),

   plot(Re(S_L1_f(f)), f=10..7000, color=blue)   ]);

 

> phase:=x->argument(x);

> display([

   plot(Im(S_C1_f(f))/phase(U_C1_f(f)), f=10..7000, color=red),

   plot(Im(S_R1_f(f))/phase(U_C1_f(f)), f=10..7000, color=green),

   plot(Im(S_L1_f(f))/phase(U_C1_f(f)), f=10..7000, color=blue)   ]);

 

Наверх

Новости Информация Скачать Ссылки  

Василий Смирнов. Санкт-Петербург, 2004-2023.