Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- L = 8
- f <- function(x) {
- return(exp(1)^(-(x^2)))
- }
- a <- function(n) {
- g <- function(x) {
- return(cos(n * 2 * pi / L * x) * f(x))
- }
- return(2/L * integrate(g, -L/2, L/2)$val)
- }
- b <- function(n) {
- g <- function(x) {
- return(sin(n * 2 * pi / L * x) * f(x))
- }
- return(2/L * integrate(g, -L/2, L/2)$val)
- }
- a0 = 1/L * integrate(f, -L/2, L/2)$val
- M = 2
- H <- function(x) {
- val <- a0
- for (n in 1:M) {
- val = val + a(n) * cos(n * 2 * pi / L * x) + b(n) * sin(n * 2 * pi / L * x)
- }
- return(val)
- }
- cat(c("a 0: ", a0, "\n"))
- for (i in 1:10) {
- cat(c("a", i, ": ", a(i), "\n"))
- }
- for (i in 1:10) {
- cat(c("b", i, ": ", b(i), "\n"))
- }
- vals = c(2, 6, 10)
- for (v in vals) {
- M = v
- png(paste('m', v, '.png', sep=''))
- curve(H, -L/2, L/2)
- }
- png('minf.png')
- curve(f, -L/2, L/2)
- png('m6diff.png')
- M = 6
- diff <- function(x) {
- f(x) - H(x)
- }
- curve(diff, -L/2, L/2)
- png('m10diff.png')
- M = 10
- curve(diff, -L/2, L/2)
- av <- c(a(1))
- bv <- c(b(1))
- nv <- c(1)
- for (i in 2:10) {
- av <- append(av, a(i))
- bv <- append(bv, b(i))
- nv <- append(nv, i)
- }
- png('abplot.png')
- plot(nv, av, col="red")
- points(nv, bv, col="green")
- f <- function(x) {
- return((exp(1)^(-x^2)) * (1/2 * sin(4 * pi / L * x) + 1/2 * cos(6 * pi / L * x)))
- }
- a <- function(n) {
- g <- function(x) {
- return(cos(n * 2 * pi / L * x) * f(x))
- }
- return(2/L * integrate(g, -L/2, L/2)$val)
- }
- b <- function(n) {
- g <- function(x) {
- return(sin(n * 2 * pi / L * x) * f(x))
- }
- return(2/L * integrate(g, -L/2, L/2)$val)
- }
- a0 = 1/L * integrate(f, -L/2, L/2)$val
- M = 2
- H <- function(x) {
- val <- a0
- for (n in 1:M) {
- val = val + a(n) * cos(n * 2 * pi / L * x) + b(n) * sin(n * 2 * pi / L * x)
- }
- return(val)
- }
- cat(c("a 0: ", a0, "\n"))
- for (i in 1:10) {
- cat(c("a", i, ": ", a(i), "\n"))
- }
- for (i in 1:10) {
- cat(c("b", i, ": ", b(i), "\n"))
- }
- vals = c(2, 6, 10)
- for (v in vals) {
- M = v
- png(paste('m2', v, '.png', sep=''))
- curve(H, -L/2, L/2)
- }
- png('m2inf.png')
- curve(f, -L/2, L/2)
- curve(f, -L/2, L/2)
- png('m26diff.png')
- M = 6
- diff <- function(x) {
- f(x) - H(x)
- }
- curve(diff, -L/2, L/2)
- png('m210diff.png')
- M = 10
- curve(diff, -L/2, L/2)
- av <- c(a(1))
- bv <- c(b(1))
- nv <- c(1)
- for (i in 2:10) {
- av <- append(av, a(i))
- bv <- append(bv, b(i))
- nv <- append(nv, i)
- }
- png('abplot2.png')
- plot(nv, av, col="red")
- points(nv, bv, col="green")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement