MATH2033 Introduction to Scientific Computation
Coursework 2
项目类别:数学

Submission deadline: 15:00 Friday 20 December 2024

This coursework contributes 10% towards your mark for this module.

Rules

It is not permitted to use generative artificial intelligence (AI) software for this coursework. Ensure that

you have read and have understood the Policy on academic misconduct. One of the things stated in

this policy is that “The submission of work that is generated and/or improved by software that is not

permitted for that assessment, for the purpose of gaining marks will be regarded as false authorship

and seen as an attempt to gain an unpermitted academic advantage”.

This coursework should be your own individual work, with the exceptions that:

1. You may ask for and receive help from the lecturer Richard Rankin although not all questions will be

answered and those that are will be answered to all students that attend the class.

2. You may copy from material provided on the Moodle pages:

• Introduction to Scientific Computation (MATH2033 UNNC) (FCH1 24-25)

• Analytical and Computational Foundations (MATH1028 UNNC) (FCH1 23-24)

• Calculus (MATH1027 UNNC) (FCH1 23-24)

• Linear Mathematics (MATH1030 UNNC) (FCH1 23-24)

Coding Environment

You should write and submit a py file. You are strongly encouraged to use the Spyder IDE (integrated

development environment). You should not write or submit an ipynb file and so you should not use

Jupyter Notebook.

It will be assumed that numpy is imported as np, and that matplotlib.pyplot is imported as plt.

Submission Procedure:

To submit, upload your linear systems.py file through the Coursework 2 assignment activity in the

Coursework 2 section of the Moodle page Introduction to Scientific Computation (MATH2033 UNNC)

(FCH1 24-25).

Marking

Your linear systems.py file will be mainly marked by running your functions with certain inputs and comparing

the output with the correct output.

Department of Mathematical Sciences Page 1 of 51. The linear systems.py file contains an unfinished function with the following first line:

def smax (w ,s , i ) :

Assume that:

• The type of the input w is numpy.ndarray.

• The type of the input s is numpy.ndarray.

• The type of the input i is int.

• There exists an int n such that the shape of w is (n,) and the shape of s is (n,).

• The input i is a nonnegative integer that is less than n.

Complete the function smax so that it returns an int p which is the smallest integer for which

i ≤ p < n

and

|w[p]|

s[p]

= max

j∈{i,i+1,...,n−1}

|w[j]|

s[j]

.

A test that you can perform on your function smax is to run the Question 1 cell of the tests.py file

and check that what is printed is:

1

[20 marks]

Coursework 2 Page 2 of 52. Suppose that A ∈ R

n×n, that det(A) 6= 0 and that b ∈ R

n.

The linear systems.py file contains an unfinished function with the following first line:

def spp (A ,b , c ) :

Assume that:

• The type of the input A is numpy.ndarray.

• The type of the input b is numpy.ndarray.

• The type of the input c is int.

• There exists an int n such that n > 1, the shape of A is (n,n) and the shape of b is (n,1).

• The input A represents A.

• The input b represents b.

• The input c is a positive integer that is less than n.

Complete the function spp so that it returns a tuple (U, v) where:

• U is a numpy.ndarray with shape (n,n) that represents the matrix comprised of the first n

columns of the matrix arrived at by performing forward elimination with scaled partial pivoting

on the matrix 

A b 

until all of the entries below the main diagonal in the first c columns are

0.

• v is a numpy.ndarray with shape (n,1) that represents the last column of the matrix arrived at

by performing forward elimination with scaled partial pivoting on the matrix 

A b 

until all of

the entries below the main diagonal in the first c columns are 0.

A test that you can perform on your function spp is to run the Question 2 cell of the tests.py file

and check that what is printed is:

[[ 10. 0. 20.]

[ 0. -5. -1.]

[ 0. 10. -11.]]

[[ 70.]

[ -13.]

[ -13.]]

[30 marks]

Coursework 2 Page 3 of 53. Suppose that A ∈ R

n×n, that det(A) 6= 0, that all of the entries on the main diagonal of A are

nonzero and that b ∈ R

n. Let x ∈ R

n be the solution to Ax = b. Let x

(k) be the approximation

to x obtained after performing k iterations of the Gauss–Seidel method starting with the initial

approximation x

(0)

.

The linear systems.py file contains an unfinished function with the following first line:

def GS (A ,b ,g ,t , N ) :

Assume that:

• The type of the input A is numpy.ndarray.

• The type of the input b is numpy.ndarray.

• The type of the input g is numpy.ndarray.

• The type of the input t is numpy.float64, float or int.

• The type of the input N is int.

• There exists an int n such that the shape of A is (n,n), the shape of b is (n,1) and the shape

of g is (n,1).

• The input A represents A.

• The input b represents b.

• The input g represents x

(0)

.

• The input t is a real number.

• The input N is a nonnegative integer.

Complete the function GS so that it returns a tuple (y, r) where:

• y is a numpy.ndarray with shape (n, M + 1) which is such that, for j = 0, 1, . . . , n − 1,

y[j, k] =x

(k)

j+1 for k = 0, 1, . . . , M where M is the smallest nonnegative integer less than N for

which

is less than t if such an integer M exists and M = N otherwise.

• r is a bool which is such that r = True if

is less than t and r = False otherwise.

A test that you can perform on your function GS is to run the Question 3 cell of the tests.py file and

check that what is printed is:

[[ 0. 12. 12.75 ]

[ 0. 3. 3.9375 ]

[ 0. 6.75 6.984375]]

False

[25 marks]

Coursework 2 Page 4 of 54. Suppose that A ∈ R

n×n, that det(A) 6= 0, that all of the entries on the main diagonal of A are

nonzero and that b ∈ R

n. Let x ∈ R

n be the solution to Ax = b. Let x

(k) be the approximation

to x obtained after performing k iterations of the Gauss–Seidel method starting with the initial

approximation x

(0)

.

The linear systems.py file contains an unfinished function with the following first line:

def GS_plot (A ,b ,g ,x , N ) :

Assume that:

• The type of the input A is numpy.ndarray.

• The type of the input b is numpy.ndarray.

• The type of the input g is numpy.ndarray.

• The type of the input x is numpy.ndarray.

• The type of the input N is int.

• There exists an int n such that the shape of A is (n,n), the shape of b is (n,1), the shape of g

is (n,1) and the shape of x is (n,1).

• The input A represents A.

• The input b represents b.

• The input g represents x

(0)

.

• The input x represents x.

• The input N is a nonnegative integer.

Complete the function GS plot so that it returns a matplotlib.figure.Figure, with an appropriate

legend and a single pair of appropriately labelled axes, on which there is a semilogy plot

of:

A test that you can perform on your function GS plot is to run the Question 4 cell of the tests.py

file.

[25 marks]

Coursework 2 Page 5 of 5


留学ICU™️ 留学生辅助指导品牌
在线客服 7*24 全天为您提供咨询服务
咨询电话(全球): +86 17530857517
客服QQ:2405269519
微信咨询:zz-x2580
关于我们
微信订阅号
© 2012-2021 ABC网站 站点地图:Google Sitemap | 服务条款 | 隐私政策
提示:ABC网站所开展服务及提供的文稿基于客户所提供资料,客户可用于研究目的等方面,本机构不鼓励、不提倡任何学术欺诈行为。