【问题标题】:how to make a plot of an integral function?如何绘制积分函数图?
【发布时间】:2015-12-09 21:45:04
【问题描述】:

我做了一个积分如下:

fun = @(t)((2/sqrt(pi)) * (exp(1).^((-t).^(2))));

计算它可以正常工作:

q = integral(fun, 0, 2);

但我想绘制从 0 到不同最大值(0 到 1、0 到 2 等)的结果

我试过了

plot(A,fun, '-b');

而且我找不到其他方法来让它工作。什么是正确的方法,为什么它不起作用?

【问题讨论】:

  • 你到底想画什么?你想绘制不同最大值的积分结果吗? x 轴是最大值,y 轴是积分?
  • 没错!! y 结果,x 为最大值
  • 我已经给出了答案。但是,我看到这个功能正在迅速增长。确保选择对您的函数有意义的最大值。
  • 除了@rayryeng 的答案之外,您还可以调整答案我gave here0 的恒定下限,最后一行没有cumsum

标签: matlab


【解决方案1】:

因为您想计算每个最大值处的积分,所以由于您调用integral 的自然方式,您无法对其进行矢量化。因此,您必须将其放入 for 循环中。

在循环中的每次迭代中,您将计算积分,将其放入数组中,然后绘制数组。也许做这样的事情:

vals = 1:3; %// For different maxima - Change to suit your tastes

%// To store the integral results
q = zeros(1,numel(vals));

%// Your code
fun = @(t)((2/sqrt(pi)) * (exp(1).^((-t).^(2))));

%// For each value
for ii = 1 : numel(vals)        
    q(ii) = integral(fun, 0, vals(ii)); %// Find integral of each value
end

%// Plot the max value and integral pairs
plot(vals, q);

我明白了:

【讨论】:

  • 如果我不按照我的方式调用积分,会有更简单的方法吗?
  • @CherrysaHerrim - 我不明白。你能澄清一下吗?
  • 有没有办法让积分成为像 x.^2 这样的函数?所以我只能通过设置一个名为 x 的向量来使用。
  • @CherrysaHerrim - 对integral 的调用让你无法做到这一点。 integral 一次只能取一个下限和一个上限……即使函数像x.^2 这样简单。这就是您需要for 循环的原因。
  • @rayryeng 哎呀,是的 :-) 所以这一定是为什么我的代码和你的代码没有得到相同的情节。现在他们是一样的
【解决方案2】:

integral 只能处理积分限制的 numeric 值。要获得通用积分限制,您可以将该限制定义为 symbolic variable 并象征性地执行积分,您可以使用 int。这为您提供了积分作为上限的符号函数。最后,具体化上限值和绘图。

fun = @(t)((2/sqrt(pi)) * (exp(1).^((-t).^(2))));
syms y; %// variable that defines upper integration limit
q = int(fun, 0, y); %// symbolic function of upper integration limit
yValues = linspace(0,2,100); %// define actual values for integration limit
qValues = subs(q, y, yValues); %// particularize q for those values
plot(yValues, qValues) %// plot values

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2016-08-20
    • 1970-01-01
    • 2019-10-25
    • 2021-02-11
    • 2015-08-02
    相关资源
    最近更新 更多