在符號數學工具箱中使用r2016a而沒有分段。希望能夠按照以下方式進行工作,但各種方法都失敗了。預先感謝您的建議。在沒有SMT的MATLAB 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 < = 22.3607;
選項3)使用heavyside:
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值到這個餅cewise方程並獲得y的值。理想情況下,我也希望對上述分段函數進行反轉。另外,我想計算diff()和int(),所以我相信一個符號函數最適合這個。思考?謝謝!!
- 布萊恩