绘制 sin 积分时的 MATLAB 偏移量

MATLAB offset when plotting integration of sin

我有一个问题,因为这适用于许多函数,但我在尝试绘制正弦积分时遇到了问题(我使用的是 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 文档,q = quad(fun,a,b)

Quadrature is a numerical method used to find the area under the graph of a function, that is, to compute a definite integral.

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

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

因为quad计算定积分,我看不出有什么问题。

同于:
figure;plot(-cos(x) - (-cos(0)))

Fundamental Theorem of Calculus says that the indefinite integral of a nice functionf(x)等于函数的反导数F(x),这是唯一的,直到加法常数。此外,定积分的形式为:

在这种形式下,积分常数将被抵消,积分将恰好等于所需的反导数只有当下界评估消失。但是,-cos(0) 并没有消失,其值为 -1。因此,为了计算所需的反导数 F(x),应将下界评估添加到右侧。

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

这相当于为 ODE 的解分配初始值 ode45

您可以使用以下方法实现您想要做的事情:

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')

输出:-