2017-02-03 32 views
1

私はScilabのプログラムで、台形ルールによる関数を数値的に(組み込み関数を使わずに)統合しています。関数の積分やプロットに問題はありませんが、実際の関数を色付きの台形のプロットにオーバーレイしたいのですが、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

+0

@awiebe – awiebe

+0

xfpolyが近いために有効な値ではありませんいいえ、それは合法である:それは、整数、多角形を充填するために使用される色である必要があります(詳細はScilabのヘルプを参照してください) 。 – Attila

答えて

1

あなたはScilabのどのバージョンを使用していますか? Scilab 5.4.1(64bit)でコードを試したところ、無色の台形が得られましたが、5.5.2(64bit)では全ての形が素敵です。 多分、これらのバージョン間にいくつかのバグ修正がありました。 オイラー番号が定義済みの変数(少なくとも5.5.2)であるため、関数定義を'y = e^(x^2)'から'y = %e^(x^2)'に変更しました。スタータ3のためによく

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 
+0

遅れて申し訳ありません(最終試験)。 私は最終的に最新バージョンをダウンロードしていました。以前は5.4.1を使用していましたが、5.5.2では問題ありません。 本当にありがとうございます。ありがとう! –