微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Matlab中集成heavisidey-f?

如何解决如何在Matlab中集成heavisidey-f?

对于x = 0到pi / 2和y = 0到pi / 2,我无法集成heaviside(y-f)(仅对syms集成“ int”)。运行代码后,输出如下所示,但我无法获得数字答案。您可以提出一些有关如何进行的想法吗?

代码

syms x y
f = sin(x);
integ = int( int(heaviside(y-f),x,pi/2),y,pi/2)

结果:

integ =
 
int(int(heaviside(y - sin(x)),pi/2)

解决方法

尽可能避免进行符号计算。

注意,heaviside函数可以定义为:

hvsd = @(x) (x > 0) + 0.5*(x == 0); % another name to do not overshadow heaviside

您可以使用integral2trapz来评估数值积分。

heaviside = @(x) (x > 0) + 0.5*(x == 0);
fun = @(x,y) heaviside(y-sin(x));
% using integral2
I1 = integral2(fun,pi/2,pi/2)

nx = 100; ny = 100;
x = linspace(0,nx);
y = linspace(0,ny);
[X,Y] = meshgrid(x,y);
Z = fun(X,Y);
% using trapz
I2 = trapz(y,trapz(x,Z.*(Z>0),2))
I1 =

    1.4674


I2 =

    1.4695

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。