|
Использование результатов символьного анализа в MapleMaple является известным математическим пакетом, ориентированным на символьный анализ и обработку математических формул. 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. |