在 Matlab 中求解给定截距的分段函数
Solving a piecewise function for a given intercept in Matlab
我正在尝试求解分段函数,但出现错误。以下是代码。
脚本:
syms x
y_intercept = 2;
answerr = solve(pw_f(x) == y_intercept, x);
分段函数(在同一文件夹内的单独文件中):
function y = pw_f(x)
if x < 0
y = x;
elseif (x >=0) && (x <= 20)
y = 2*x;
elseif x > 20
y = 4*x - 40;
else
end
end
我在 运行 脚本之后得到的错误是:
Conversion to logical from sym is not possible.
Error in pw_f (line 3)
if x < 0
Error in solve_test
answerr = fsolve(pw_f(x) == y_intercept, x);
我知道错误是因为Matlab无法进行x < 0的比较,因为x是一个符号变量,所以它还不知道x是什么。我也尝试过使用 fsolve 和 vpasolve,但我仍然遇到同样的错误。你知道如何在 Matlab 中解决这个问题或绕过这个错误吗?
当然,这是一个简单的问题,我可以在脑海中解决(x = 1 是解决方案)所以 Matlab 应该能够做到这一点!!但是,我想为我选择的任何 y 截距(可能是一些不是很好的整数的随机数)制作这个通用的。请帮忙!!!!谢谢:)
仅供参考,我使用的是 Matlab R2013a。
在名为 pw_f.m
的文件中
function y = pw_f(x)
if x < 0
y = x;
elseif (x >=0) && (x <= 20)
y = 2*x;
elseif x > 20
y = 4*x - 40;
else
end
end
在命令中window
>> y_intercept = 2; % set object value
>> x0 = 0; % initial guess
>> answerr = fzero(@(x)pw_f(x) - y_intercept, x0) % solve
answerr =
1
>> pw_f(answerr) % test solution
ans =
2
我正在尝试求解分段函数,但出现错误。以下是代码。
脚本:
syms x
y_intercept = 2;
answerr = solve(pw_f(x) == y_intercept, x);
分段函数(在同一文件夹内的单独文件中):
function y = pw_f(x)
if x < 0
y = x;
elseif (x >=0) && (x <= 20)
y = 2*x;
elseif x > 20
y = 4*x - 40;
else
end
end
我在 运行 脚本之后得到的错误是:
Conversion to logical from sym is not possible.
Error in pw_f (line 3)
if x < 0
Error in solve_test
answerr = fsolve(pw_f(x) == y_intercept, x);
我知道错误是因为Matlab无法进行x < 0的比较,因为x是一个符号变量,所以它还不知道x是什么。我也尝试过使用 fsolve 和 vpasolve,但我仍然遇到同样的错误。你知道如何在 Matlab 中解决这个问题或绕过这个错误吗?
当然,这是一个简单的问题,我可以在脑海中解决(x = 1 是解决方案)所以 Matlab 应该能够做到这一点!!但是,我想为我选择的任何 y 截距(可能是一些不是很好的整数的随机数)制作这个通用的。请帮忙!!!!谢谢:)
仅供参考,我使用的是 Matlab R2013a。
在名为 pw_f.m
的文件中
function y = pw_f(x)
if x < 0
y = x;
elseif (x >=0) && (x <= 20)
y = 2*x;
elseif x > 20
y = 4*x - 40;
else
end
end
在命令中window
>> y_intercept = 2; % set object value
>> x0 = 0; % initial guess
>> answerr = fzero(@(x)pw_f(x) - y_intercept, x0) % solve
answerr =
1
>> pw_f(answerr) % test solution
ans =
2