// -------------------------------------------------------------------------------- // テキストp.20 例題1 // sin(x)上の5つの補間点から4次のラグランジュ補間多項式を求め, // sin(x)のグラフを重ねてグラフに表示するスクリプト // -------------------------------------------------------------------------------- clear; // 定義済みの変数の値を全て消去 exec('Lagrange.sci'); // Lagrange関数の読込み x = [0, %pi/4, %pi/2, 3*%pi/4, %pi]; // 補間点のx軸の値の系列 y = [0, sqrt(2)/2, 1, sqrt(2)/2, 0]; // 補間点のy軸の値の系列 f = Lagrange(x, y) // Lagrange関数でラグランジュ補間多項式を求める xx = x(1):0.001:x($); // 0〜πの間を0.001刻みで分割した系列(グラフのx軸の刻み) yy = horner(f, xx); // x軸の系列xxでの補間多項式の値(xxと同じ長さの系列) y_real = sin(xx); // x軸の系列xxでの理論値sin(x)の値(xxと同じ長さの系列) plot2d(xx', [yy', y_real']); // 補間多項式とsin(x)を重ねて表示(ほぼぴったり重なる)