How can I take the f(y)th-order derivative of another function?
조회 수: 8 (최근 30일)
이전 댓글 표시
(R2011a) Hello, (I'm new to matlab) when using the diff function to take the nth order derivative of a function, one can use this syntax:
f = % some function of x %
d = diff( % function (f) to be differentiated % , % number (n) of times to differentiate %);
where n is some integer.
However, if I define a function of some other variable, namely :
s = ceil(y * (heaviside(y) - (2 * heaviside(y) * heaviside(-y))))
which outputs only non-negative integers, and then insert that function in place of n in the diff function, which looks like:
d = diff( % function of x to be differentiated % , s);
then the diff function will not differentiate our function (of x) s times, and will instead return some error on the line of where s is defined.
I am trying to create a 3D plot that displays the various s-order derivatives of and arbitrary function (of x), wherein each plane of the form y=n, where n is some integer, contains the nth order derivative of the function (of x).
How can I put some function of either and array or a symbol into the second parameter of the diff function in order to achieve what I want?
Thanks, Mike
This is ultimately what I'd like to run:
% First we define x and t as symbols, and y as an array.
syms x;
syms t;
y = linspace (-3,3);
% We also define a mesh so that we can late plot z as a function of both x
% and y.
[x,y] = meshgrid(x,y);
% Next we define some function of x.
f = x;
% Then we define the ceiling of the unit step function multiplied by y.
s = ceil(y * (heaviside(y) - (2 * heaviside(y) * heaviside(-y))));
% After that we define j as the sth-order derivative of f, where s is some
% integer
j = diff(f,s);
% Now we define the other factor of the integrand as L.
L = (x-t)^( -1 -y -s);
% Now we define the gamma function adjusted for our uses.
G = gamma( s - y );
% Now we define a function z as the integral from 0 to x of j multiplied by L with
% respect to t, all divided by G.
z = int(j*L,t,0,x)/G;
%Finally, we plot x, y, and z in a 3d mesh
ezsurf(z);
And here are the two errors I receive when I run it:
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> fracint at 14
s = ceil(y * (heaviside(y) - (2 * heaviside(y) * heaviside(-y))));
Should I have different definitions for x, y, and t than I currently do? Also, am I simply using incorrect syntax or is there a bigger problem (regarding the errors) than I know? Thanks, Mike
댓글 수: 0
답변 (1개)
Karan Gill
2017년 8월 1일
편집: Karan Gill
2017년 8월 1일
Use .* instead of * , and for the why, look up those operators or simply search for your error Inner matrix dimensions must agree. and the results should explain what the fix is. Also, that's one error, not two. It looks like two because it's the error stack.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Calculus에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!