【R言語】統計解析フリーソフトR 第6章【GNU R】at MATH
【R言語】統計解析フリーソフトR 第6章【GNU R】 - 暇つぶし2ch945:132人目の素数さん
21/03/16 13:05:28.85 cJpJJpsg.net
# 振幅1の正弦波の一周期の長さを求めよ
の計算に、一般化して計算できるように関数を書いてみたのだが、
文字列での入力が必要でどうも美しくない。
# 関数y=f(x)の曲線でx=from からx=toまでの長さを求める
CurveLength <- function(f='sin(x)',from=-pi,to=pi){
str=paste("deriv(~ ",f,",","'x',func=TRUE)")
Df <- eval(str2lang(str))
f1 <- function(x) as.numeric(attributes(Df(x)))
f1=Vectorize(f1)
integrate(function(x) sqrt(1+f1(x)^2), from, to, rel.tol = 1e-12)
}
計算としてはあっていると思う。
> CurveLength()
7.640396 with absolute error < 2.6e-13
> CurveLength('log(1+cos(x))',0,pi/2)
1.762747 with absolute error < 2e-14
もっとエレガントなコードがあればご教示をお願いします。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch