Numerical Quadrature
This worksheet illustrates basic principles of numerical quadrature. You can do a variety of things here:
The following active input text box contains the main code. You need to click on it to see an "Evaluate" link appear at its bottom. Click on this link to have the code sent to our computer and interpreted. Then you can evaluate/modify/evaluate the examples in the other text boxes in the same way. Have fun and let us know at femhub@googlegroups.com with any problems or questions.
The Code:
|
|
Task 1
In an interval (a, b), calculate quadrature weights for a given list of quadrature points.
Matrix: [[ 1. 1. 1. ] [ 0. 0.5 1. ] [ 0. 0.25 1. ]] RHS: [ 1. 0.5 0.33333333] Weights: [ 0.16666667 0.66666667 0.16666667] |
|
|
|
|
Task 2
Integrate a given function f(x) in interval (a, b) given quadrature points and weights.
|
|
Task 3
Integrate a given function f(x) in interval (a, b) using a Gauss rule.
|
|
Task 4
Integrate a given function f(x) in interval (a, b) using an adaptive Gauss rule with n points.
WARNING: Output truncated! full_output.txt Preparing Gauss quadrature in interval (0, 1)... Points: [0.11270166537925841, 0.5, 0.8872983346207417] Weights: [0.27777777777777779, 0.44444444444444442, 0.2777777777777779] Approx integral = 0.669179633899 Exact integral = 0.666666666667 Preparing Gauss quadrature in interval (0, 0.5)... Points: [0.056350832689629204, 0.25, 0.44364916731037085] Weights: [0.1388888888888889, 0.22222222222222221, 0.13888888888888895] Approx integral = 0.236590728481 Exact integral = 0.235702260396 Preparing Gauss quadrature in interval (0.5, 1)... Points: [0.55635083268962915, 0.75, 0.94364916731037085] Weights: [0.1388888888888889, 0.22222222222222221, 0.13888888888888895] Approx integral = 0.430964722058 Exact integral = 0.430964406271 Preparing Gauss quadrature in interval (0, 0.5)... Points: [0.056350832689629204, 0.25, 0.44364916731037085] Weights: [0.1388888888888889, 0.22222222222222221, 0.13888888888888895] Approx integral = 0.236590728481 Exact integral = 0.235702260396 Preparing Gauss quadrature in interval (0, 0.25)... Points: [0.028175416344814602, 0.125, 0.22182458365518543] Weights: [0.069444444444444448, 0.1111111111111111, 0.069444444444444475] Approx integral = 0.0836474542374 Exact integral = 0.0833333333333 Preparing Gauss quadrature in interval (0.25, 0.5)... Points: [0.27817541634481457, 0.375, 0.47182458365518543] Weights: [0.069444444444444448, 0.1111111111111111, 0.069444444444444475] Approx integral = 0.15236903871 Exact integral = 0.152368927062 Preparing Gauss quadrature in interval (0, 0.25)... Points: [0.028175416344814602, 0.125, 0.22182458365518543] Weights: [0.069444444444444448, 0.1111111111111111, 0.069444444444444475] Approx integral = 0.0836474542374 Exact integral = 0.0833333333333 Preparing Gauss quadrature in interval (0, 0.125)... Points: [0.014087708172407301, 0.0625, 0.11091229182759271] Weights: [0.034722222222222224, 0.055555555555555552, 0.034722222222222238] Approx integral = 0.0295738410601 Exact integral = 0.0294627825494 Preparing Gauss quadrature in interval (0.125, 0.25)... Points: [0.13908770817240729, 0.1875, 0.23591229182759271] Weights: [0.034722222222222224, 0.055555555555555552, 0.034722222222222238] Approx integral = 0.0538705902572 Exact integral = 0.0538705507839 Preparing Gauss quadrature in interval (0, 0.125)... Points: [0.014087708172407301, 0.0625, 0.11091229182759271] Weights: [0.034722222222222224, 0.055555555555555552, 0.034722222222222238] Approx integral = 0.0295738410601 Exact integral = 0.0294627825494 Preparing Gauss quadrature in interval (0, 0.0625)... Points: [0.0070438540862036506, 0.03125, 0.055456145913796356] Weights: [0.017361111111111112, 0.027777777777777776, 0.017361111111111119] Approx integral = 0.0104559317797 Exact integral = 0.0104166666667 Preparing Gauss quadrature in interval (0.0625, 0.125)... Points: [0.069543854086203644, 0.09375, 0.11795614591379636] Weights: [0.017361111111111112, 0.027777777777777776, 0.017361111111111119] Approx integral = 0.0190461298387 Exact integral = 0.0190461158828 ... Weights: [0.0086805555555555559, 0.013888888888888888, 0.0086805555555555594] Approx integral = 0.0103261439761 Exact integral = 0.0103261439339 --------------------------------------------------------------------\ --- Interval (0, 0.125): approximate 0.029462859754258, exact 0.029462782549439 --------------------------------------------------------------------\ --- Preparing Gauss quadrature in interval (0.125, 0.25)... Points: [0.13908770817240729, 0.1875, 0.23591229182759271] Weights: [0.034722222222222224, 0.055555555555555552, 0.034722222222222238] Approx integral = 0.0538705902572 Exact integral = 0.0538705507839 Preparing Gauss quadrature in interval (0.125, 0.1875)... Points: [0.13204385408620364, 0.15625, 0.18045614591379636] Weights: [0.017361111111111112, 0.027777777777777776, 0.017361111111111119] Approx integral = 0.0246638059618 Exact integral = 0.0246638051871 Preparing Gauss quadrature in interval (0.1875, 0.25)... Points: [0.19454385408620364, 0.21875, 0.24295614591379636] Weights: [0.017361111111111112, 0.027777777777777776, 0.017361111111111119] Approx integral = 0.0292067457159 Exact integral = 0.0292067455968 --------------------------------------------------------------------\ --- Interval (0, 0.25): approximate 0.083333411431963, exact 0.083333333333333 --------------------------------------------------------------------\ --- Preparing Gauss quadrature in interval (0.25, 0.5)... Points: [0.27817541634481457, 0.375, 0.47182458365518543] Weights: [0.069444444444444448, 0.1111111111111111, 0.069444444444444475] Approx integral = 0.15236903871 Exact integral = 0.152368927062 Preparing Gauss quadrature in interval (0.25, 0.375)... Points: [0.26408770817240729, 0.3125, 0.36091229182759271] Weights: [0.034722222222222224, 0.055555555555555552, 0.034722222222222238] Approx integral = 0.0697597777818 Exact integral = 0.0697597755906 Preparing Gauss quadrature in interval (0.375, 0.5)... Points: [0.38908770817240729, 0.4375, 0.48591229182759271] Weights: [0.034722222222222224, 0.055555555555555552, 0.034722222222222238] Approx integral = 0.0826091518085 Exact integral = 0.0826091514716 --------------------------------------------------------------------\ --- Interval (0, 0.5): approximate 0.235702341022225, exact 0.235702260395516 --------------------------------------------------------------------\ --- Preparing Gauss quadrature in interval (0.5, 1)... Points: [0.55635083268962915, 0.75, 0.94364916731037085] Weights: [0.1388888888888889, 0.22222222222222221, 0.13888888888888895] Approx integral = 0.430964722058 Exact integral = 0.430964406271 Preparing Gauss quadrature in interval (0.5, 0.75)... Points: [0.52817541634481457, 0.625, 0.72182458365518543] Weights: [0.069444444444444448, 0.1111111111111111, 0.069444444444444475] Approx integral = 0.197310447694 Exact integral = 0.197310441497 Preparing Gauss quadrature in interval (0.75, 1)... Points: [0.77817541634481457, 0.875, 0.97182458365518543] Weights: [0.069444444444444448, 0.1111111111111111, 0.069444444444444475] Approx integral = 0.233653965727 Exact integral = 0.233653964774 --------------------------------------------------------------------\ --- Interval (0, 1): approximate 0.666666754443864, exact 0.666666666666667 --------------------------------------------------------------------\ --- |
Task 5
Write Gauss quadrature rule with an arbitrary number of points.
n = 5
orders: 8, 9
{
{ -0.906179845938664, 0.236926885056189 },
{ -0.538469310105683, 0.478628670499367 },
{ -0.000000000000000, 0.568888888888889 },
{ 0.538469310105683, 0.478628670499367 },
{ 0.906179845938664, 0.236926885056189 },
};
|
Task 6
Use SymPy to integrate some functions "on paper". See where the limits of symbolic integration are.
|
|
|
|
|
|
|
|
|
|
|
|