联系方式

您当前位置:首页 >> Python编程Python编程

日期:2024-12-18 09:35

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


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:821613408 微信:horysk8 电子信箱:[email protected]
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:horysk8