![]() |
|
Использование результатов символьного анализа в 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. |