matlab 为什么会出现这个错误,我可以用这种方式绘制图形吗?

rqmkfv5c  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(272)

我正在尝试使用MatLab中的以下代码绘制一张图

pressure = linspace(10,2000,1000);
eqn = ((nh^2)/(1-nh))*(pressure*0.0680459639) == 0.136;
y1 = max(vpa(solve(eqn, nh)));
figure(2)
scatter(presssure, y1)
hold on
plot(pressure, 1-y1)
hold off

但是出现了这个错误:“输入参数必须可以转换为浮点数。”为

y1 = max(vpa(solve(eqn, nh)));

你能帮我找出我的代码出了什么问题吗?我能不能用这种方法画一张图?谢谢!
编辑:在我把它分成“solve”之后:

pressure = linspace(10,2000,1000);
eqn = ((nh^2)/(1-nh))*(pressure*0.0680459639) == 0.136;
y1 = solve(eqn, nh);

警告:解决方案由符号Z参数化。若要在解决方案中包括参数和条件,请将‘ReturnConditions’值指定为‘True’。
在ae433hw5(第31行)的sym/solve(第357行)中的sym/solve>warnIf Params(第475行)警告:解决方案仅在某些条件下有效。若要在解决方案中包括参数和条件,请将“ReturnConditions”值指定为“”True“”。“”在ae433hw5(第31行)的sym/solve(第357行)中的sym/solve>warnIfParams(第478行)中

nkcskrwz

nkcskrwz1#

我认为这里的问题是,您试图在解等式之前使用公式中的一个数组,这会导致MatLab崩溃。我所做的是将“nh”转换成一个符号变量,创建另一个符号变量“p”来表示压力,然后求解nh的方程,然后用“p”符号代替你的“压力”数组,然后应用vpa和max函数。这为我提供了一张图表和一组方程式的解。

syms nh p
pressure = linspace(10,2000,1000);
eqn = ((nh^2)/(1-nh))*(p*0.0680459639) == 0.136;
temp = solve(eqn, nh); % temporary equation placeholder
y1 = max(vpa(subs(temp, p, pressure)));
figure(2)
scatter(pressure, y1)
hold on
plot(pressure, 1-y1)
hold off

相关问题