绘制 sin 积分时的 MATLAB 偏移量

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

我有一个问题,因为这适用于许多函数,但在尝试绘制正弦积分时遇到了麻烦(我使用的是 matlab 2010):

clear all
close all
clc

x = linspace(-10, 10, 100);

f = @(x) sin(x);

I = arrayfun(@(x) quad(f, 0, x), x);
plot(x, f(x),'r', x, I, 'b')

我期望有一个 -cos(x),但我得到的结果是偏移量为 1,为什么会发生这种情况?应该如何解决这个问题?

matlab numerical-integration
3个回答
4
投票

微积分基本定理说,nice函数f(x)的不定积分等于函数的反导数F(x),它在加法之前是唯一的持续的。此外,定积分的形式为:

在这种形式中,积分常数将被抵消,并且积分将恰好等于所需的反导数仅当下界评估消失时。但是,

-cos(0)
不会消失,其值为
-1
。因此,为了计算所需的反导数 F(x),应将下界评估添加到右侧。

plot(x, f(x),'r', x, I+ (-cos(0)), 'b');

这相当于为 ODE 的解分配一个初始值 la

ode45


1
投票

您想要做的事情可以通过以下方式实现:

x = linspace(-10, 10, 100);

syms y;
f = sin(y)     %function

I =int(f,y)    %integration of f
plot(x, subs(f,y,x),'r', x, subs(I,y,x), 'b')

输出:-


0
投票

根据Matlab文档,

q = quad(fun,a,b)

求积是一种数值方法,用于求函数图下的面积,即计算定积分。

sin(x) 的积分等于 -cos(x)

sin(x)
x = pi
x = 0
的定积分:
-cos(pi) - (-cos(0)) = 2

由于

quad
计算定积分,我看不出有任何问题。

同:

figure;plot(-cos(x) - (-cos(0)))

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