符号微分的数值积分 - MATLAB

时间:2014-12-15 18:15:37

标签: matlab function integration calculus differentiation

以下是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.

有人可以帮我写这段代码吗?

2 个答案:

答案 0 :(得分:2)

要解决此问题,需要matlabFunction。解决方案如下所示:

syms x y
f = @(x, y) x.*y.^2;
Df = matlabFunction(subs(diff(f,y),y,2));
Int = integral(Df , 0 , 1);

答案 1 :(得分:0)

使用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中搜索函数时,请务必注意它们所处的工具箱以及它们为其参数支持的类(数据类型)。在某些情况下,存在具有相同名称的重载版本,但在其他情况下,您可能需要四处寻找不同的方法(或设计自己的方法)。