联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

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

日期:2022-11-19 04:03


Math 104A Computation Homework # 2

1 Main problem

We have studied some quadrature rules and their theoretical rates of convergence (or error terms). In this

homework, you compute and report actual rates of convergence of some quadrature rules when they are

implemented for selected integrands. Also, you interpret the result in your own language.

(Quadrature rules) Your program computes the following three quadrature rules for integrals on [?1, 1.1]

with respect to constant weight w(x) ≡ 1.

1. composite trapezoidal rules (“Trapezoidal” below) (textbook p. 481)

2. composite Simpson’s rule (“Simpson” below) (textbook p. 484)

3. composite Gaussian quadrature with three nodes (“Gauss3” below), i.e., n = 2 so we have Gaussian

nodes x0, x1, and x2 for each subinterval (textbook p. 496 provides a version on a single interval

[?1, 1]. You will need to do some work to obtain a composite version from it. In particular, you

will need to apply change of interval.)

(Integrands) Implement these quadrature rules for the following three integrands: consine, a C1– func-

tion, and (a scaled) normal distribution density.

f (x) = cos(pix), g(x) =x2 (x ≥ 0)?x2 (x < 0) , h(x) = exp(?x22 ). (1)

(Experiment) Compute the errors caused by each quadrature rule for each integrand (i.e., the abso-

lute value of the difference between approximation and the true value) implemented with a number of

different resolutions.

– Here, the resolution means the number of subintervals involved in composite rules. (2i for i =

0, 1, 2, · · · , 9 is a good option.) For example, if you decide to use 10 different resolutions, you will

have total 3 × 3 × 10 errors from each combination of a method, an integrand, and a resolution.

– To measure the error, you will need true values of the integrals. Think about how you can obtain

those. If you have no idea, see the Section 2 for tips.

(Report) Report a table that contains the rate of convergence of each quadrature rule for each integrand

as the resolution gets one step higher.

– For example, if you decide to use 10 different resolutions, you will have 9 convergence rate for

each combination of a quadrature rule and an integrand because you have 9 steps of refinement. If

you are not sure what is going on, read ‘how to compute the rate of convergence’ below first, and

possibly all other instructions, then come back here.

1

– How to compute the rate of convergence? We will discuss this in class in a bit more detail. But

the summary is the same. Suppose you have implemented a numerical method using two different

resolutions N1 and N2, where N2 is the higher resolution than N1, say N2 = 2N1. If you have

obtained errors e1 and e2 using the resolutions N1 and N2 respectively, the rate of convergence

based on these two results is given by

r =

log(e1/e2)

log(N2/N1)

.

See the class notes for details.

(Summary)

data

– Target integral information (interval [?1, 1.1]), Three integrands listed above

parameters to choose

– Resolutions (i.e., an array of the number of subintervals for composite rules; 2i for i = 0, 1, 2, · · · , 9

recommended)

output

– MethodIntegrand.csv: A csv file (comma separated values) that contains the rates of conver-

gence so that one can easily compares them across integrands for each method used. Ideally, we

want something like this:

#Subintervals Trapezoidal Simpson Gauss3

consine C1 function normal dist consine C1 function normal dist consine C1 function normal dist

However, csv files work the best when the data is complete and in the simplest rectangular form

like the following. Thus, feel free to submit in this form:

Method Trapezoidal Trapezoidal Trapezoidal Simpson Simpson Simpson Gauss3 Gauss3 Gauss3

Integrand consine C1 function normal dist consine C1 function normal dist consine C1 function normal dist

– IntegrandMethod.csv: A csv file (comma separated values) that contains the rates of conver-

gence so that one can easily compares them across methods for each integrand.

For the same reason as above about csv files, feel free to report csv-friendly table:

2

#Subintervals consine C1 function normal dist

Trapezoidal Simpson Gauss3 Trapezoidal Simpson Gauss3 Trapezoidal Simpson Gauss3

1

2

4

Integrand consine consine consine C1 function C1 function C1 function normal dist normal dist normal dist

Method Trapezoidal Simpson Gauss3 Trapezoidal Simpson Gauss3 Trapezoidal Simpson Gauss3

(Submission): Please, submit your result as indicated below. Part of the credit is assigned to submitting

things as instructed.

– Source code: (.m, .py, or .ipynb; in particular, NO .pdf)

– two output files: MethodIntegrand.csv, IntegrandMethod.csv

– Interpretation: interpretation.txt (A text file that describes how you interpret the result)

– (Optional): ExtraExperiment.txt – Interpretation on an additional experiment: Try the same

experiment with for integrals from -1 to 1. (You must change the true integrals accordingly.) What

do you observe? What is your interpretation?

2 Tips for this homework

2.1 Obtain true integrals

Although there should be many different ways, using Wolfram Alpha is one good way. Mathematica is

case-sensitive. So be careful of capitalization. Also, use brackets and curly brackets correctly.

Type in the Wolfram Alpha: N[Integrate[Exp[-x*x/2], {x, -1, 1.1}], 20]

This tells Wolfram Alpha that find

∫ 1.1

1 exp(?x2/2)dx up to 20 decimal digits

20 decimal digits will do its job as the true value.

Do similar things for other integrands.

2.2 Tools for reporting

As I showed in class, it is very good to know data processing tools when you report the results. However,

it takes time to learn those tools. Thus, consider learning and using them if you can budget some time. If

you bring this up in office hours, I am happy to discuss it.

(Python) Use the pandas package (along with numpy). Among many great tools that belong to it,

the most relevant things include:

multiindex, pivot, stack, unstack, sort_values, to_csv, to_excel, etc.

3

(Matlab) Use table object. Note that the way Matlab approaches tables are quite different from

how pandas treats data. I believe they are developed based on different philosophy. The most

relevant tools include:

splitvars, mergevars, stack, unstack, writetable, etc.

3 Tips for programming

3.1 Possible time savers

Here I share some issues/tricks you may want to know. Of course, your code may not experience any of

these. But I am trying to save your time in case you decide to use the same ideas/tools and/or have the

same issues.

Common

You can use for loop to conduct many different experiments in a single line. To do that, you can

collect functions in a list (Python) or a cell array (Matlab). (See below for a bit more details for

each language.) For example, if you use Python (Matlab), you can create a list (cell array) named

fn of functions and a list (cell array) mthd of quadrature rules. Then, you can use for loop to

conduct all experiments: “for i from 0 to 2 (from 1 to 3 for Matlab), and for j from 0 to 2 (from 1

to 3 for Matlab), compute the numerical integration of fn[j] using mthd[i].

Python

Depending on the version of Python, 5/3 may “equal” 1 instead of 1.66666 · · · . You can avoid this

by typing “5./3”.

Depending on how you construct the resolutions, they may be considered float64 to Python

rather than int (integer), which may cause error when Python carries out composite quadrature

rules. Consider data type casting by NN = NN.astype(int), where NN is the name of the numpy

array containing resolutions.

(List of functions) To collect functions, you simply gather them by creating a Python list of the

function names. For example, you may want something like the following:

fn = [f, g, h]

mthd = [Trapez, Simpson, Gauss3].

If needed, Google “list of functions.”

Matlab

(cell array) You will want to use cell array for this homework. If you don’t know yet, study bare

minimum of cell arrays. (Again, Google is a good friend). a quick piece of basic is that you have

to use curly brackets to access its entry: e.g., fn{1}. if you use fn(1), Matlab will throw an error.

(cell array of functions) To collect functions, you have to collect so-called function handles of

the Matlab functions. Anonymous functions’ names themselves are function handles (things you

define using the syntax f = @(x) 2*x; ). But the functions you define using function output

= f(x) .... end, you have to refer to it by @f. And you have to collect them in a cell array.

4

For example, if you have defined the integrands using anonymous functions and quadrature rules

using regular functions, you may need something like the following:


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

python代写
微信客服:codinghelp