最近因为手推公式特别繁琐,想起了用matlab进行公式推导。

一、使用模块-matlab实时编辑器

matlab实时编辑器进行公式推导主要有以下优势:

1:代码运行后,可以在右侧看见对应表达公式;

2:公式会随着光标在代码上的移动而移动,比较方便找出公式对应代码;

3:右侧输出公式为latex格式,方便插入文章或者其他编辑器。

 

 二、示例

以下图公式推导vca、 vcb、 vcc为例。

1、定义各变量。

在 MATLAB 中,符号变量和符号表达式的创建和操作是通过 syms 和 sym 函数来实现的。符号变量允许我们进行符号运算,如微积分、代数方程求解等。syms函数可以一次性定义多个符号常量。因为涉及到求导,故加上t作为时域表现形式。

clc;
clear;
% 定义自变量
syms R L ia(t) ib(t) ic(t) v_ca(t) v_cb(t) v_cc(t)

2、定义公式中导数部分与三相扩展

% 定义电流和电压的导数
dia_dt = diff(ia, t);
dib_dt = diff(ib, t);
dic_dt = diff(ic, t);

v_abc = [v_sa; v_sb; v_sc];
i_abc = [ia; ib; ic];
v_c_abc = [v_a; v_b; v_c];
di_abc_dt = [dia_dt; dib_dt; dic_dt];

3、等式方程组表达

注意:此处不要使用上面定义的v_ca(t)、 v_cb(t) 、v_cc(t)进行公式表达,因为后续会使用solve函数进行公式求解,若等式中为v_ca(t)则使用solve函数会报错,因为该函数只接受符号变量,而不接受准确的表达。

syms v_a v_b v_c
eq1_v_sa = v_sa == ia*R + L*dia_dt + v_a;
eq2_v_sb = v_sb == ib*R + L*dib_dt + v_b;
eq3_v_sc = v_sc == ic*R + L*dic_dt + v_c;
v_abc_expr = R*i_abc + L*di_abc_dt + v_c_abc;
disp('v_sa,v_sb,v_sc表达式v_abc_expr:');
disp(v_abc_expr);

4、方程求解

方程求解时使用v_a, v_b, v_c作为求解时的未知符号常量,求解成功后再进行后续赋值操作。

% 进行代数操作,例如求解 v_ca, v_cb, v_cc
sol = solve([eq1_v_sa, eq2_v_sb, eq3_v_sc], [v_a, v_b, v_c]);
v_cabc = [sol.v_a; sol.v_b; sol.v_c];

% 显示解
disp('v_ca,v_cb,v_cc表达式v_cabc:');
disp(v_cabc);

5、运行结果

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐