以下是一个 MATLAB 问题。
假设我定义一个函数f(x,y)。 我想计算 f 相对于 y 的偏导数,以特定的 y 值进行计算,例如 y=6。最后,我想在 x 的范围内集成这个新函数(它只是 x 的函数)。
举个例子,这是我尝试过的
syms x y;
f = @(x, y) x.*y.^2;
Df = subs(diff(f,y),y,2);
Int = integral(Df , 0 , 1)
,
但我收到以下错误。
Error using integral (line 82)
First input argument must be a function
handle.
有人可以帮我写这段代码吗?
要解决这个问题,需要
matlabFunction
。解决方案如下所示:
syms x y
f = @(x, y) x.*y.^2;
Df = matlabFunction(subs(diff(f,y),y,2));
Int = integral(Df , 0 , 1);
sym/int
:
syms x y;
f = @(x, y) x.*y.^2;
Df = diff(f,y);
s = int(Df,x,0,1)
返回
y
。您可以在此处或之前将 2
替换为 y
,就像您在问题中所做的那样。这并不是说在这种情况下会给你一个没有浮点误差的准确答案,而不是integral
,它以数值方式计算积分。
在 Matlab 中搜索函数时,请务必注意它们所在的工具箱以及它们的参数支持哪些类(数据类型)。在某些情况下,存在同名的重载版本,但在其他情况下,您可能需要寻找不同的方法(或设计自己的方法)。