Plot Scilab中的梯形集成-多边形颜色填充停止

Plot Scilab中的梯形集成-多边形颜色填充停止,plot,polygon,scilab,numerical-integration,Plot,Polygon,Scilab,Numerical Integration,我一直在Scilab中编写一个程序,该程序通过梯形规则对函数进行数值积分(不使用内置函数)。我对函数的积分或绘图没有问题,但我想把实际函数叠加在一个梯形图上,用彩色表示 出于某种原因,当我将边界a=0设置为b=3时,没问题,我得到的正是我想要的。但是,当我将边界设置为3以上时,梯形仍将绘制(按线条),但它们不会着色。在下面的代码中,颜色在3处停止。例如,如果我将0绘制到6,则颜色会在绘制到一半时停止。3到6,而且根本没有颜色 以下是代码的相关部分: deff('[y] = f(x)','y =

我一直在Scilab中编写一个程序,该程序通过梯形规则对函数进行数值积分(不使用内置函数)。我对函数的积分或绘图没有问题,但我想把实际函数叠加在一个梯形图上,用彩色表示

出于某种原因,当我将边界a=0设置为b=3时,没问题,我得到的正是我想要的。但是,当我将边界设置为3以上时,梯形仍将绘制(按线条),但它们不会着色。在下面的代码中,颜色在3处停止。例如,如果我将0绘制到6,则颜色会在绘制到一半时停止。3到6,而且根本没有颜色

以下是代码的相关部分:

deff('[y] = f(x)','y = e^(x^2)');            // Definition of function
a = 0;                                       // Lower bound
b = 4;                                       // Upper bound
n = 20;                                      // Number of intervals
h = ((b - a)/n);                             // Interval spacing
x = a:h:b;                                   // Array of positions for division


您使用的是什么版本的Scilab? 我用Scilab 5.4.1(64位)尝试了你的代码,得到了未着色的梯形,但用5.5.2(64位)所有的形状都是漂亮的绿色。 因此,这些版本之间可能存在一些错误修复。 我还将您的函数定义从
'y=e^(x^2)
更改为
'y=%e^(x^2)
,因为Euler数是一个预定义变量(至少在5.5.2中)


首先,3不是近距离接触的法律价值xfpoly@awiebe不,这是合法的:它必须是一个整数,用于填充多边形的颜色(请参阅Scilab帮助了解更多详细信息)。很抱歉反应太晚(期末考试)。我终于开始下载最新版本了,正如你所说,它看起来很不错。我以前使用过5.4.1,现在使用5.5.2没有任何问题!我真的很感谢你的帮助。谢谢
for i = 1:n+1
    y(i) = f(x(i));
end
for i = 1:n                                         // Plot colored trapezoids
    x_start = a+(h*(i-1));
    x_end = a+(h*(i));
    y_start = y(i);
    y_end = y(i+1);
    xpts = [x_start, x_end, x_end, x_start];
    ypts = [y_start, y_end, 0, 0];
    xfpoly(xpts,ypts,3);
end
clc;
clear;

deff('[y] = f(x)','y = %e^(x^2)');            // Definition of function
a = 0;                                       // Lower bound
b = 6;                                       // Upper bound
n = 100;                                      // Number of intervals
h = ((b - a)/n);                             // Interval spacing
x = a:h:b;                                   // Array of positions for division


for i = 1:n+1
    y(i) = f(x(i));
end

scf(0);
clf(0);
plot2d(x,y);

for i = 1:n                                         // Plot colored trapezoids
    x_start = a+(h*(i-1));
    x_end = a+(h*(i));
    y_start = y(i);
    y_end = y(i+1);
    xpts = [x_start, x_end, x_end, x_start];
    ypts = [y_start, y_end, 0, 0];
    xfpoly(xpts,ypts,3);
end