# Writing python program for Weierstrass function with Monte Carlo

Our assignment asks us to create a python program to plot the Weierstrass function:

Weierstrass function is an example of a pathological real-valued function on the real line. The function has the property of being continuous everywhere but differentiable nowhere.The function was defined as a Fourier series, where $$0 < a < 1$$, $$b$$ is a positive odd integer, and $$ab > 1 + 3\pi/2$$:

$$f(x) = \sum_{n=0}^\infty a^n \cos(b^n \pi x)$$

In practice, the higher of the Fourier series' order, the more accurate result of $$f(x)$$ we get. And when we consider the accuracy at a specific region of $$x$$, the definition of the average error as the following:

$$f(x) = \frac{1}{N_{\rm num}} \sum_{i}^{N_{\rm num}} \left( f^{n+1}(x_i) - f^{n}(x_i) \right)^2$$

where $$N_{\rm num}$$ is the total number of $$x$$ we calculate, $$f^n(x)$$ is the value of $$f(x)$$ with the order of $$n$$.

Please write a python program to plot this function with the parameters $$a = 0:5$$; $$b = 13$$; $$x$$ is [0; 3:3]; $$N_{\rm num}= 10^3$$.

And find the proper order ($$n$$) where the average error is smaller than $$10^{-8}$$.

Now, I have already written the function for the Fourier series:

def f(x, n):
y = 0
for i in range(n):
y = y + (0.5**n)*np.cos(np.pi*x*13**n)
return y


But I have some problem writing the error function. I have written something like this, but I can't figure out how to put the $$i$$ and $$x_i$$ inside the summation part(I don't know what is $$i$$ and where it comes from):

def error(x, N):
N = 10**3
error_sum = 0
for n in range(N):
error_sum = error_sum + (f(x, n + 1) - f(x, n))**2
return error_sum/N


Can someone help me with the problem and also check whether my first function is correct or not?

• You're summing over $n$ in your code, but the sum runs over $i$ in the formula. You have $\sum_{n=1}^{N} (f^{n+1}(x_i) - f^n(x_i))^2$ in your code, this defines a function of $x_i$. But in the formula, it's $\sum_{i=1}^{N}(f^{n+1}(x_i) - f^n(x_i))^2$, in which $x_i$'s are given (in the problem description: $x\in[0,3]$, $N=10^3$), and this is a function of $n$. – Kirill May 1 '19 at 18:13