matlab使用教程(36)—求解数值积分(1)

1计算弧线长度的积分

        此示例说明了如何参数化曲线以及使用 integral 计算弧线长度。 将曲线视为带有参数的方程
        创建此曲线的三维绘图。
t = 0:0.1:3*pi;
plot3(sin(2*t),cos(t),t)

        弧线长度公式表明曲线的长度是参数化方程的导数范数的积分。
        将被积函数定义为匿名函数。
f = @(t) sqrt(4*cos(2*t).^2 + sin(t).^2 + 1);
        通过调用 integral 对此函数进行积分计算。
len = integral(f,0,3*pi)

        运行结果为

此曲线的长度大约为 17.2

2复曲线积分

        此示例说明如何使用 integral 函数的 'Waypoints' 选项计算复曲线积分。在 MATLAB® 中,可以使用'Waypoints' 选项定义直线路径序列,从第一个积分限值到第一个路径点,从第一个路径点到第二个路径点,依此类推,直到从最后一个路径点到第二个积分限值。

2.1将被积函数定义为匿名函数

        对以下方程求积分
        将被积函数定义为匿名函数。
fun = @(z) exp(z)./z;

2.2不使用路径点求积分

        可以用参数化计算复值函数的围线积分。在一般情况下,指定一条围线,然后将其微分并用于参数化原被积函数。在这种情况下,将围线作为单位圆,但在所有情况下,其结果与所选围线无关。
g = @(theta) cos(theta) + 1i*sin(theta);
gprime = @(theta) -sin(theta) + 1i*cos(theta);
q1 = integral(@(t) fun(g(t)).*gprime(t),0,2*pi)

运行结果为:

        这种参数化方法虽然可靠,但难以计算和费时,因为必须先计算导数,然后才能积分。即使是简单函数,也需要写几行代码才能获得正确的结果。由于围绕极点(在本例中为原点)的任何闭围线都有相同的结果,因此可以使用 integral 'Waypoints' 选项构建一个围绕极点的方形或三角形路径。

2.3对不包含极点的围线求积分

        如果路径点向量积分或元素限值为复数,则 integral 会在复平面中针对直线路径序列求积分。围线周围的自然方向为逆时针;指定顺时针围线类似于乘以 -1。以这种方式指定围线使其包含一个单函数奇点。如果指定一条不包含极点的围线,则柯西积分定理可保证闭积分环的值是零。
        为此,应对远离原点的方围线周围的 fun 求积分。使用相等的积分限值形成一个闭围线。
C = [2+i 2+2i 1+2i];
q = integral(fun,1+i,1+i,'Waypoints',C)
运行结果为:
        其结果数量级为 eps ,实际上为零。

2.4对内部包含极点的围线求积分

        指定一个完全在原点包含极点的方围线,然后求积分。
C = [1+i -1+i -1-i 1-i];
q2 = integral(fun,1,1,'Waypoints',C)

运行结果为:

        这个结果与2.2小节中的上述计算相符,但使用的代码简单得多。
        这个问题的确切答案是 2 πi
2*pi*i
ans = 0.0000 + 6.2832i

3积分域内部的奇点

        本示例显示如何拆分积分域以将奇点放在边界上。

3.1将被积函数定义为匿名函数

        复值积分的被积函数
        在 x = y = 0 时有一个奇点,并通常是 y = -x 线上的奇异值。
        将该被积函数定义为匿名函数。
fun = @(x,y) ((x+y).^(-1/2));

3.2对方形求积分

        对由 −1 ≤ x ≤ 1 −1 ≤ y ≤ 1 指定的方域中的 fun 求积分。
format long
q = integral2(fun,-1,1,-1,1)

运行结果:

        如果积分区内部有奇异值,则积分不能收敛并返回一个警告。

3.3将积分域拆分为两个三角形

        可以通过将积分域拆分为互补区并将这些较小的积分加在一起来重新定义积分。可将奇点放在域边界上来避免积分错误和警告。在此例中,可将方积分区域沿着奇异线 y = -x 拆分成两个三角形并将结果相加。
q1 = integral2(fun,-1,1,-1,@(x)-x);
q2 = integral2(fun,-1,1,@(x)-x,1);
q = q1 + q2

运行结果:

        奇异值在边界上时可继续求积分。
        这个积分的精确值是
8/3*sqrt(2)*(1-i)

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

配电网和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值