4

数値解析では、学生は、与えられた関数 f(x) がそのフーリエ補間 tN(x) を見つけ、補間誤差を計算するコードを R に実装する義務があります。

$||f(x)-t_{N}(x)||=\int_{0}^{2\pi}$ $|f(x)-t_{N}(x)|^2$ 

またはさまざまな異なる $N$ 私は最初に、次の式に従って d 係数を計算しようとしました。

$d = \frac 1N  M  y$

M は DFT 行列を表し、y は一連の等距離関数値を表し、

$y_j = f(x_j)$ and 
$x_j = e^{\frac{2*pi*i}N*j}$ 
for $j = 1,..,N-1$. 

私の目標は、次のように説明できる合計を考え出すことでした。

$t_{N}(x) = \Sigma_{k=0}^{N-1} d_k * e^{i*k*x}$

これは、後で加算表記のようなものに後で統合する方が簡単です。

f <- function(x) 3/(6+4*cos(x)) #first function to compare with
g <- function(x) sin(32*x) #second one
xj <- function(x,n) 2*pi*x/n

M <- function(n){
   w = exp(-2*pi*1i/n)
   m = outer(0:(n-1),0:(n-1))
   return(w^m)
}

y <- function(n){
   f(xj(0:(n-1),n))
} 
transformFunction <- function(n, f){
   d = 1/n * t(M(n)) %*% f(xj(0:(n-1),n))
   script <- paste(d[1])
   for(i in 2:n)
   script <- paste0(script,paste0("+",d[i],"*exp(1i*x*",i,")"))
   #trans <- sum(d[1:n] * exp(1i*x*(0:(n-1))))
   return(script)
 } 

変換関数の主な目的は、当初、関数を返すことでした。つまり、数式を返すことでした。これを使用して、フーリエ補間関数を宣言することができます。問題は、私のかなり限られた知識に基づくと、まだ合計がネストされている関数を統合できないことです (そのため、コード内の対応する行にコメントを付けました)。絶対的な絶望から、その後、各被加数をテキストの形式で貼り付けようとしましたが、それらを式として再度解析するだけでした。したがって、残っている主な問題は次のとおりです。関数として使用し、後でそれらを統合できるように数式を返すにはどうすればよいでしょうか? 誤解や混乱、および一見素人っぽいコーディングで申し訳ありません。前もって感謝します!

4

1 に答える 1