以下是求解 y 关于 g 的函数的 MATLAB 代码:
syms a b c d g
assume(0 < g & g < 2 | g >= 2); % 声明符号变量的定义域
b = piecewise(0 < g & g < 2, d/g, g >= 2, d*g); % 定义 b
y = a * b * c; % 定义 y
dy = diff(y, g); % 求导
f = simplify(dy, 100); % 简化结果
disp(['y(g) = ' char(f)]); % 显示结果
plot(g,y)%绘图
为什么会出现“错误使用 plot
数据必须为可转换为双精度值的数值、日期时间、持续时间或数组。”的问题?如何解决?
这个错误是因为你试图使用 plot
函数来绘制符号表达式 y
,而 plot
函数需要的是可以转换为双精度值的数值、日期时间、持续时间或数组。符号表达式 y
并不满足这个条件。
解决这个问题的一种方法是将 g
的值设定为一个具体的数值范围,然后使用 subs
函数来计算 y
在这个范围内的值,然后再进行绘图。以下是一个示例:
syms a b c d g
assume(0 < g & g < 2 | g >= 2); % 声明符号变量的定义域
b = piecewise(0 < g & g < 2, d/g, g >= 2, d*g); % 定义 b
y = a * b * c; % 定义 y
dy = diff(y, g); % 求导
f = simplify(dy, 100); % 简化结果
disp(['y(g) = ' char(f)]); % 显示结果
% 定义 g 的值范围
g_values = linspace(0, 3, 100);
% 计算 y 在 g 的值范围内的值
y_values = subs(y, g, g_values);
% 绘图
plot(g_values, y_values)
请注意,你需要为 a
、c
和 d
设定具体的值,否则 subs
函数将无法计算 y
的值。
plt.xlabel("epoch")
plt.ylabel("MAE")
plt.plot(train_mae_loss,label="train")
plt.plot(test_mae_loss,label="test")
plt.legend()