概要

  • X, Y をファイルから読み込み、3次多項式近似の各項の係数を求める。
  • 切片の有無をオプションで選択可能。
    • intercept=TRUE … 切片あり
    • intercept=FALSE … 切片=0
  • 係数、近似値および誤差をファイル出力する。
  • 入力ファイルの系列名 X, Y は変更しないこと。

ソース

  • fileapprox_n3.zip
    すべてを展開すべてを収束
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
    
     
    -
    |
    |
    |
    |
    -
    |
    -
    |
    |
    !
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    !
    
    # 3次多項式近似の各項の係数を求める
    approx_n3 <- function(file, intercept=TRUE){
        sep <- "\t";
        enc <- "utf-8";
        xy <- read.table(file=file, sep=sep, header=TRUE, fileEncoding=enc);
        xy <- xy[order(xy$X),];
        if (intercept){
            c <- glm(Y ~ 1 + I(X^1) + I(X^2) + I(X^3), data=xy)$coefficients;
        } else {
            c <- glm(Y ~ 0 + I(X^1) + I(X^2) + I(X^3), data=xy)$coefficients;
            c["(Intercept)"] <- 0;
        }
        xy["A"] <- c["(Intercept)"] + c["I(X^1)"] * xy$X + c["I(X^2)"] * (xy$X ^ 2) + c["I(X^3)"] * (xy$X ^ 3);
        xy["D^2"] <- (xy["A"] - xy["Y"]) ^ 2;
        write.table(xy, file=paste("Result_", file), sep=sep, fileEncoding=enc);
        write.table(c, file="Result.tsv", sep=sep, fileEncoding=enc);
        xrange <- c(min(xy["X"]), max(xy["X"]));
        yrange <- c(min(xy["Y"], xy["A"]), max(xy["Y"], xy["A"]));
        plot(xy$X, xy$A, type="l", xlim=xrange, ylim=yrange, ann=FALSE);
        par(new=TRUE);
        plot(xy$X, xy$Y, type="p", xlim=xrange, ylim=yrange, xlab="X", ylab="Y");
        return(c);
    }

サンプル

  • 入力
    "X"	"Y"
    100	5
    110	21
    120	34
    125	39
    130	46
    140	58
    150	70
    160	77
    170	85
    175	87
    180	91
    190	97
    200	100
  • 出力
    x
    (Intercept)-199.049086928878
    I(X^1)2.48992928482351
    I(X^2)-0.0039765900265772
    I(X^3)-4.97814557795034e-06
XYAD^2
110055.199795709750180.0399183256345765
21102120.10048331587160.809130265025352
31203433.87729530853280.0150564413080552
41253940.33491392685721.78199519211736
51304646.50036281426620.250362945900381
61405857.9398169596040.00362199835130803
71507068.16578887107853.36433046545941
81607777.14840967522210.0220254316995243
91708584.85781049856690.0202178543177879
101758788.22571939448121.50238803400737
111809191.26412246764540.0697606779151217
121909796.33747670898990.438937111130896
13200100100.0480043491330.00230441753563746

YX.png


添付ファイル: fileapprox_n3.zip 152件 [詳細] fileYX.png 176件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Thu, 13 Nov 2014 13:11:55 JST (1314d)