# BEST代写-线上编程学术专家

Best代写-最专业靠谱代写IT | CS | 留学生作业 | 编程代写Java | Python |C/C++ | PHP | Matlab | Assignment Project Homework代写

# Matlab代写 | Engr 3: Introduction to Programming Fall 2020 Midterm Project

### Matlab代写 | Engr 3: Introduction to Programming Fall 2020 Midterm Project

Engr 3: Introduction to Programming
Fall 2020 Midterm Project

Figure 1: The Mandelbrot set: −2 ≤ a ≤ 1, −1 ≤ b ≤ 1.
The white object in Figure 1 is called the Mandelbrot set. It is a famous example of how
complex behavior can arise from simple rules, and has very interesting fractal properties.
In this project, you’ll write Matlab code to generate this figure, and more. You will turn
in your Matlab functions mandelbrot.m and pixelate.m.
First, let’s define the Mandelbrot set. Suppose that z and c are complex numbers,
and define a sequence
z0 = 0,
zn+1 = z
2
n + c, n ≥ 0.
So,
z1 = z
2
0 + c,
z2 = z
2
1 + c,
z3 = z
2
2 + c,
etc. For a given value c, there are two possible cases:
• If |z32| ≤ 2 then c is in the Mandelbrot set.
1
• If |z32| >2, then c is not in the Mandelbrot set.
(Note that the actual definition is that if |zn| stays finite as n → ∞, then c is in the
Mandelbrot set, and if |zn| → ∞ as n → ∞, then c is not in the Mandelbrot set. But the
above conditions are equivalent, and are easier to handle computationally.)
We will write c = a + ib, where i =

−1. In Figure 1, the horizontal axis corresponds
to values of a (with a = −2 on the far left, and a = 1 on the far right), and the vertical
axis corresponds to values of b (with b = 1 on the top, and b = −1 on the bottom – note
that larger values of b are higher in this figure, a convention that we’ll use for all figures).
It was generated using the command
imshow(M,’InitialMagnification’,’fit’)
where M is a matrix whose elements are 1 if the corresponding pixel is in the Mandelbrot
set, and 0 if the corresponding pixel is not.
(a) (60 pts) Write a Matlab function called mandelbrot.m which takes as input the values
amin, amax, bmin, bmax
which are the minimum value of a, the maximum value of a, the minimum value of b, and
the maximum value of b for the desired figure, respectively. We’ll assume that the desired
figure has a total of 1000 pixels in the horizontal direction, and 800 pixels in the vertical
direction. Note that for this project you don’t need to be super careful about ensuring
that the edges of the figure correspond to these precise values; for example, the far left
pixels could correspond to a = −2, or to a = −1.997, as is convenient for your program.
Your function should return M, which is a 800 × 1000 matrix whose entries are either 1
(if the pixel is in the Mandelbrot set) or 0 (if the pixel is not in the Mandelbrot set). When
your function is working properly, the following lines of code should generate Figure 1:
M = mandelbrot(-2,1,-1,1);
imshow(M,’InitialMagnification’,’fit’)
To verify that your code is working properly, the following lines of code should generate
Figure 2:
M = mandelbrot(-1.2,-0.5,0,0.5);
imshow(M,’InitialMagnification’,’fit’)
and the following lines of code should generate Figure 3:
M = mandelbrot(-0.4,0.2,0.5,1.2);
imshow(M,’InitialMagnification’,’fit’)
Figure 2: Zooming in on the Mandelbrot set: −1.2 ≤ a ≤ −0.5, 0 ≤ b ≤ 0.5.
Figure 3: Zooming in on the Mandelbrot set: −0.4 ≤ a ≤ 0.2, 0.5 ≤ b ≤ 1.2.
(b) (40 pts) Now, let’s create pixelated images of the Mandelbrot set, such as Figure 4. In
particular, write a function called pixelate.m which takes as input the matrix M (which
comes from mandelbrot.m) and the variable boxsize, and returns matrix Mpixel of size
800/boxsize × 1000/boxsize, where each element of this matrix is equal to the fraction
of points in the corresponding square of the original figure belong to the Mandelbrot set,
as explained in the following.
The pixelization procedure can be understood by referring to Figure 5. The (m,n)
pairs refer to the element of the matrix Mpixel, shown here for boxsize=100. For example,
the (3,5) element is associated with the square with rows 201-300 and columns 401-500
of the M matrix. The value of the (3,5) element is assigned to be the fraction of the pixels
3
Figure 4: Pixelated Mandelbrot set: −2 ≤ a ≤ 1, −1 ≤ b ≤ 1, boxsize = 100.
Columns Columns Columns Columns
101− 200
Columns
101−200
Rows
(1,1) (1,2) (1,3) (1,4) (1,5)
(2,1) (2,2) (2,3) (2,4) (2,5)
(3,1) (3,2) (3,3) (3,4) (3,5)

201−300
1 − 100 201−300 301−400 401−500
1 − 100
Rows
Rows
in this square which are in the Mandelbrot set. For example, suppose that 5189 out of
the 100 × 100 = 10000 pixels in this square are white, corresponding to points in the
Mandelbrot set. Then we will assign
Mpixel(3,5) = 0.5189
Your code should work for any value of boxsize which is sent to the function as input.
(You may assume that boxsize divides 1000 and 800 with no remainder.)
When your function is working properly, the following lines of code should generate
Figure 4.
4
M = mandelbrot(-2,1,-1,1);
Mpixel = pixelate(M,100);
imshow(Mpixel,’InitialMagnification’,’fit’)
Similarly, these lines of code generate Figure 6:
M = mandelbrot(-2,1,-1,1);
Mpixel = pixelate(M,50);
imshow(Mpixel,’InitialMagnification’,’fit’)
and these lines of code generate Figure 7:
M = mandelbrot(-2,1,-1,1);
Mpixel = pixelate(M,20);
imshow(Mpixel,’InitialMagnification’,’fit’)
Figure 6: Pixelated Mandelbrot set: −2 ≤ a ≤ 1, −1 ≤ b ≤ 1, boxsize = 50.
For Fun: The following is not required for the Midterm Project, but if you enjoyed the
above problems, you might want to try it, just for fun.
For points which are not in the Mandelbrot set, you can color them according to
how many iterations are needed to reach |zn| > 2. This is how the plots in Figure 8 were
generated. Note that you’ll need to modify mandelbrot.m to create three matrices R,G,B,
then use the commands
img = cat(3,R,G,B);
image(img)
as in HW4 to generate the color plots in Figure 8. 