【发布时间】:2017-02-19 04:09:07
【问题描述】:
在符号数学工具箱中使用不分段的 r2016a。希望分段使用以下方法,但使用各种方法都失败了。预先感谢您的建议。
功能:
(3*x^2)/100 + 30 if x<22.3607
x^2/100 + 40 if 22.3607<=x<=109.5445
(3*x^2)/400 + 70 if x>109.5445
选项 1) SMT 可能允许:
y(x) = piecewise([x<22.3607, (3*x^2)/100 + 30], [22.3607<=x<=109.5445, x^2/100 + 40], [x>109.5445, (3*x^2)/400 + 70)]);
结果:
未定义的函数或变量'分段'。
选项2)创建函数:
%%%%%%%%%%%%%%%%%%%%%
function y = y(x)
if x<=22.3607;
y = (3*x^2)/100 + 30;
else if 22.3607<x<=109.5445;
y = x^2/100 + 40;
else if 109.5445<x;
y = (3*x^2)/400 + 70;
end
end
end
%%%%%%%%%%%%%%%%%%%%%
结果:
q_piecewise 输入参数不足。
q_piecewise 中的错误(第 3 行) 如果 x
选项 3) 使用重型:
y = ['(heaviside(x)-heaviside(x-22.3607))*((3*x^2)/100 + 30) + ' ...
'(heaviside(x-22.3607)-heaviside(x-109.5445))*(x^2/100 + 40) + ' ...
'(heaviside(x-109.5445)-heaviside(x-800))*((3*x^2)/400 + 70)'];
yinv = finverse(y,x)
结果(试图计算逆):
yinv = 10.0*(x - 40.0)^(1/2)
我希望能够将 x 的值输入这个分段方程并接收 y 的值。理想情况下,我也希望对上述分段函数的逆执行此操作。另外,我想计算 diff() 和 int(),所以我相信符号函数最适合这个。想法?谢谢!!
- 布莱恩
【问题讨论】:
标签: piecewise