绘制 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 = pi
到 x = 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')
输出:-
我有一个问题,因为这适用于许多函数,但我在尝试绘制正弦积分时遇到了问题(我使用的是 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 = pi
到 x = 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')
输出:-