符号微分的数值积分 - MATLAB

问题描述 投票:0回答:2

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

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

function matlab numerical-integration calculus differentiation
2个回答
2
投票

要解决这个问题,需要

matlabFunction
。解决方案如下所示:

syms x y
f = @(x, y) x.*y.^2;
Df = matlabFunction(subs(diff(f,y),y,2));
Int = integral(Df , 0 , 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 中搜索函数时,请务必注意它们所在的工具箱以及它们的参数支持哪些类(数据类型)。在某些情况下,存在同名的重载版本,但在其他情况下,您可能需要寻找不同的方法(或设计自己的方法)。

© www.soinside.com 2019 - 2024. All rights reserved.