MATLAB求解RLC电路二阶微分方程后绘图报错求助
解决RLC电路微分方程解的绘图问题及错误分析
一、指定x轴范围绘制符号解的正确方法
假设你用dsolve得到的符号解是I(t)(t为时间变量),以下是两种可靠的绘图方式:
方法1:生成数值点后用plot绘制
- 定义x轴的数值范围,比如
t_vals = linspace(0, 10, 1000);(0到10秒,1000个采样点) - 把符号解代入数值点得到电流的数值数组:
I_vals = double(subs(I, t, t_vals)); - 用
plot绘图:plot(t_vals, I_vals); xlabel('时间t'); ylabel('电流I');
方法2:用fplot直接绘制符号函数
如果你的符号解是单变量函数(仅依赖t),直接指定范围调用:
fplot(I, [0, 10]); % 第二个参数是x轴的起止范围 xlabel('时间t'); ylabel('电流I');
如果报错提示“输入需为单变量函数”,说明符号解里可能还有未赋值的符号参数(比如R、L、C的值没代入),先把所有符号参数替换成数值:
% 假设R=10, L=0.5, C=0.01 I = subs(I, {R, L, C}, {10, 0.5, 0.01}); fplot(I, [0, 10]);
二、尝试1和尝试3错误冲突的原因
这两个错误看似矛盾,本质是两个函数的输入要求完全不同,且你两次尝试传入的参数类型不一致:
- 尝试1用
plot:plot只能接受数值数组,你直接传入了符号函数,所以报错“数据需为数值等可转换为double的类型”。 - 尝试3用
fplot3:fplot3是用于绘制三维曲线的函数,要求输入是单变量的符号函数或函数句柄(比如x(t), y(t), z(t)),但你可能在这次尝试中先把符号解转成了数值数组(比如错误执行了double(I)),传入数值数组给fplot3,就会触发“输入类型应为函数句柄或符号类型,而非double”的错误。
简单说:你给plot传了符号类型(不符合要求),给fplot3传了数值类型(不符合要求),所以两个错误看起来冲突,但只是你两次传入的参数类型和对应函数的要求不匹配导致的。
内容的提问来源于stack exchange,提问作者Noahwar97
相关产品推荐
相关产品推荐

