Creating a symbolic variable, then using it as a real variable

2 Ansichten (letzte 30 Tage)
Tom
Tom am 25 Okt. 2012
I need my program to calculate the derivative of a function, and as far as I understand that means I need to make a symbolic variable. How then can I continue to use that variable as a real vector?
This is what I have tried:
syms x
y = input('Please enter a valid function of x')
deriv = diff(y)
syms clear
x = 0:pi/30:pi;
plot(x,y)

Akzeptierte Antwort

Matt Fig
Matt Fig am 25 Okt. 2012
Bearbeitet: Matt Fig am 25 Okt. 2012
syms x
y = input('Please enter a valid function of x: ')
deriv = diff(y) % This will be symbolic
x = 0:pi/30:pi; % Now x is a double.
y = matlabFunction(y) % y is a function handle.
plot(x,y(x))
  2 Kommentare
Tom
Tom am 25 Okt. 2012
Thanks a lot, Matt! Can I ask, why does that only work with y(x) in the plot argument, instead of just y?
Matt Fig
Matt Fig am 25 Okt. 2012
Bearbeitet: Matt Fig am 25 Okt. 2012
y is a function handle (as I say in the comment!), not a vector. If you want to make y a vector instead:
syms x
y = input('Please enter a valid function of x: ')
x = 0:pi/30:pi; % Now x is a double.
y = subs(y); % y is now a double.
plot(x,y)
Or without the symbolic toolbox at all:
x = 0:pi/30:pi;
y = 'Please enter a valid function of x: ';
y = feval(vectorize(inline(input(y,'s'))),x);
plot(x,y)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 25 Okt. 2012
Use matlabFunction()
  2 Kommentare
Tom
Tom am 25 Okt. 2012
Bearbeitet: Tom am 25 Okt. 2012
I couldn't work out how to use that. Can you see why this doesn't work?
syms x
y = sin(x)
deriv = diff(y)
subs(y,[x],[0:pi/30:pi])
plot(x,y)
Tom
Tom am 25 Okt. 2012
Or indeed...
syms x
fx = input(':Please enter a valid function of x:')
dydx = diff(fx)
y = matlabFunction(fx)
plot(x,y)

Melden Sie sich an, um zu kommentieren.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by