Scilab中的梯形积分 - 多边形颜色填充停止

时间:2017-02-03 06:52:49

标签: plot polygon scilab numerical-integration

我一直在研究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

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

This is the plot output for a = 0, b = 3

1 个答案:

答案 0 :(得分:1)

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

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