Function with Non Constant Variable

11 次查看(过去 30 天)
User7605
User7605 2020-10-26
评论: Adam Danz 2020-10-27
Hello,
I'm wondering if there's a way to run this code while keeping x a variable (Instead of inputting a number for the required input 'x', have a variable so I can create a graph of results). Currently I just recieve output 'Unrecognized Function or variable 'x', even when putting sym x in the code.
Thanks for any help!
  4 个评论
per isakson
per isakson 2020-10-27
x must have a value, e.g.
%%
x = 17;
S(3,1,x,2)
or maybe the Symbolic Toolbox lets you use a variable, x, without a value.
Adam Danz
Adam Danz 2020-10-27
" I want the x input to work as a variable"
This part is still unclear, hence the variety of answers. Do you mean you want to pass a variable to the 3rd input (see per isakson's or Stephen Cobeldick's answer) or do you mean that the 3rd variable should be a symbolic variable (see Walter Roberson's answers).

请先登录,再进行评论。

回答(3 个)

Stephen23
Stephen23 2020-10-27
You could create an anonymous function:
fun = @(x) S(3,1,x,2);
..
fun(17)

Walter Roberson
Walter Roberson 2020-10-27

syms x
output = S(3, 1, x, 2);
disp(output)
output = S(3, 1, 4, 2);
disp(output)

function SF = S(F, a, x, n)
if isa(a, 'sym') || isa(x, 'sym')
SF = piecewise(x >= a, F*(x-a)^n, 0);
elseif x >= a
SF = F.*(x-a).^n;
else
SF = zeros(size(x));
end
end


Walter Roberson
Walter Roberson 2020-10-27
syms x
output = S(3, 1, x, 2);
disp(output)
{3(x1)20 if  1x otherwise
output = S(3, 1, 4, 2);
disp(output)
27
function SF = S(F, a, x, n)
if isa(a, 'sym') || isa(x, 'sym')
SF = piecewise(x >= a, F*(x-a)^n, 0);
elseif x >= a
SF = F.*(x-a).^n;
else
SF = zeros(size(x));
end
end

类别

Help CenterFile Exchange 中查找有关 Number Theory 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by