matlab解符号方程用subs代入数据速度太慢!解决方法

在用matlab解方程时经常用到符号变量syms,在后续对得到的解进行分析时,本小白采用的方法是用函数subs()进行数据的带入计算。但是方程过于复杂,数据量特别大的时候,发现这种做法非常非常慢!

直接向量化操作求数据是最快的,但是解方程有时候根本解不出来显式解,无法直接向量化操作。这时候可以利用for循环去求解N个数值方程的解来构成数据集,这样做可以避免解符号方程以及用subs求数据集

解一个符号方程,再subs代入N组数据 ,不如直接解N个数值方程!!!

---------------------------------------------------------------------------------(●'◡'●)----------------------------------------------------------------------------------

这里列举我解过的一个矩阵方程加以说明,求解这个含参矩阵J_open的特征值,并绘图分析特征值随参数PL的变化趋势

优化前:

clc;
clear;
tic;

syms P_L;%变量
%参数值如下:
R=4;
C1=24e-6;
C2=24e-6;
L1=360e-6;
L2=480e-6;
r1=0.5;
r2=0.5;
VIN=24;
VREF=36;
D=VREF/(VIN+VREF);
n=D*VIN/(1-D);
m=(D/(1-D))^2*r1+r2;
delta=n^2-4*m*P_L*(1+m/R);
V2OL=(n+sqrt(delta))/(2*(1+m/R)

你可能感兴趣的:(matlab,算法,开发语言)