Þ¥bonds€¬cell_results�Ù$fefc5308-7caf-465a-afc0-b1a6f2e68ba2Цqueued¤logs�§running¦output†¤bodyÚ¤

Numerical analysis

  1. Introduction

  2. The Julia programming language

  3. Revision and preliminaries

  4. Root finding and fixed-point problems

  5. Direct methods for linear systems

  6. Iterative methods for linear systems

  7. Interpolation

  8. Numerical integration

  9. Numerical differentiation

  10. Boundary value problems

  11. Eigenvalue problems

  12. Initial value problems

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ0Pþ7°persist_js_state·has_pluto_hook_features§cell_idÙ$fefc5308-7caf-465a-afc0-b1a6f2e68ba2¹depends_on_disabled_cells§runtimeÍwµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$786a2620-1962-4ee2-950c-b47e28d66e99Цqueued¤logs�§running¦output†¤bodyÚØ

EPFL resources

If you are an EPFL student you find the internal course resources following these links:

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,Í÷°persist_js_state·has_pluto_hook_features§cell_idÙ$786a2620-1962-4ee2-950c-b47e28d66e99¹depends_on_disabled_cells§runtimeÎŽMµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$d448115a-6857-4082-893b-37549fe83b8bЦqueued¤logs�§running¦output†¤bodyÚ¯

Accompanying Excercise sheets

Improving these notes

If you spot an error feel free to make a pull request to the github repository generating this website.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,Ÿ²°persist_js_state·has_pluto_hook_features§cell_idÙ$d448115a-6857-4082-893b-37549fe83b8b¹depends_on_disabled_cells§runtimeÎ ³¦µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$4e1fa8a0-ad16-417f-ba58-5cb0ccff45a3Цqueued¤logs�§running¦output†¤bodyÚP¾ ¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ0ñs°persist_js_state·has_pluto_hook_features§cell_idÙ$4e1fa8a0-ad16-417f-ba58-5cb0ccff45a3¹depends_on_disabled_cells§runtimeÍ{(µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$7e571edb-6206-4138-863e-5a9d804e07ecЦqueued¤logs�§running¦output†¤bodyÚÅ

Content

The topics covered include:

Algorithm demonstrations and implementations will be based on the Julia programming language and interactive Pluto notebooks.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,(g°persist_js_state·has_pluto_hook_features§cell_idÙ$7e571edb-6206-4138-863e-5a9d804e07ec¹depends_on_disabled_cells§runtimeÎ 5µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$9261420d-3754-4820-a4f0-c5bda988157aЦqueued¤logs�§running¦output†¤bodyÙz

MATH-251(b): Numerical analysis

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,,°persist_js_state·has_pluto_hook_features§cell_idÙ$9261420d-3754-4820-a4f0-c5bda988157a¹depends_on_disabled_cells§runtimeÎÖ\µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$0ccf77bd-0c5d-4c3c-82b5-b25c4adbc3baЦqueued¤logs�§running¦output†¤bodyÚ�

Prerequisites

The course is designed with an audience of applied scientists (physics, biology, materials science) or engineers in mind. With a basic first-year mathematics background and prior exposure to some programming the material should be accessible.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,NH°persist_js_state·has_pluto_hook_features§cell_idÙ$0ccf77bd-0c5d-4c3c-82b5-b25c4adbc3ba¹depends_on_disabled_cells§runtimeΡҵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$b1c510c9-4130-4f5e-8d15-3bfaf0a61033Цqueued¤logs�§running¦output†¤bodyÚÞ

Literature and further reading

The outline of the course as well as many examples are taken from the excellent lecture notes "Numerical analysis" by Prof. Fabio Nobile. A copy of these notes in French as well as English is available on moodle.

For further reading and plenty of Julia code examples related to our subjects, take a look at the book Fundamentals of Numerical Computation by Tobin A. Driscoll and Richard J. Braun published by SIAM. An online version is further available at https://tobydriscoll.net/fnc-julia/. I will also link to this text in the lecture notes from time to time.

A slightly different emphasis in topics, but otherwise a good summary provide the lecture notes First Semester Numerical analysis by Giray Ökten. At places the text is more mathematical than our treatment. In the initial sections it has a good summary of basic Julia commands an concepts. An online PDF is available.

For an in-depth treatment with mathematical details and proofs for the results where we skip these details for brevity can be found in Numerical Mathematics by A. Quarteroni, R. Sacco, F. Saleri. A PDF can be downloaded from Springer by EPFL students.

Finally, if you are curious about Julia, I can highly recommend MIT's computational thinking class, which introduces Julia as well as its way of solving scientific problems in a hands-on and fun way.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,“!°persist_js_state·has_pluto_hook_features§cell_idÙ$b1c510c9-4130-4f5e-8d15-3bfaf0a61033¹depends_on_disabled_cells§runtimeÎϵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$09579796-7e0e-4990-b727-b20f63242bcbЦqueued¤logs�§running¦output†¤bodyÙÞ

This repository contains the teaching material of the course MATH-251(b) Numerical analysis at EPFL.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,Ov°persist_js_state·has_pluto_hook_features§cell_idÙ$09579796-7e0e-4990-b727-b20f63242bcb¹depends_on_disabled_cells§runtimeÎ ³mµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2fЦqueued¤logs�§running¦output†¤bodyÚ¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ0+9°persist_js_state·has_pluto_hook_features§cell_idÙ$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2f¹depends_on_disabled_cells§runtimeÎAÇxµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$ebf43572-95f2-401e-aa2e-d7748d3bf639Цqueued¤logs�§running¦output†¤bodyÙú

Summary

The students will learn key numerical techniques for solving standard mathematical problems in science and engineering. The underlying mathematical theory and properties are discussed.

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,ê°persist_js_state·has_pluto_hook_features§cell_idÙ$ebf43572-95f2-401e-aa2e-d7748d3bf639¹depends_on_disabled_cells§runtimeΣ¨µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$c0da4104-9a5a-4553-8df0-fdadd0194c14Цqueued¤logs�§running¦output†¤bodyÙH

Course outline

¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚƒ,hñ°persist_js_state·has_pluto_hook_features§cell_idÙ$c0da4104-9a5a-4553-8df0-fdadd0194c14¹depends_on_disabled_cells§runtimeÎÀ™µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$a9d71171-dd24-472a-be5f-12619295c4bfЦqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚƒ/K�°persist_js_state·has_pluto_hook_features§cell_idÙ$a9d71171-dd24-472a-be5f-12619295c4bf¹depends_on_disabled_cells§runtimeÎ)mVµpublished_object_keys�¸depends_on_skipped_cells§errored±cell_dependencies�Ù$fefc5308-7caf-465a-afc0-b1a6f2e68ba2„´precedence_heuristic §cell_idÙ$fefc5308-7caf-465a-afc0-b1a6f2e68ba2´downstream_cells_map€²upstream_cells_map�£toc‘Ù$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2fÙ$786a2620-1962-4ee2-950c-b47e28d66e99„´precedence_heuristic §cell_idÙ$786a2620-1962-4ee2-950c-b47e28d66e99´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$d448115a-6857-4082-893b-37549fe83b8b„´precedence_heuristic §cell_idÙ$d448115a-6857-4082-893b-37549fe83b8b´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$4e1fa8a0-ad16-417f-ba58-5cb0ccff45a3„´precedence_heuristic §cell_idÙ$4e1fa8a0-ad16-417f-ba58-5cb0ccff45a3´downstream_cells_map€²upstream_cells_map�¯TableOfContents�Ù$7e571edb-6206-4138-863e-5a9d804e07ec„´precedence_heuristic §cell_idÙ$7e571edb-6206-4138-863e-5a9d804e07ec´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$9261420d-3754-4820-a4f0-c5bda988157a„´precedence_heuristic §cell_idÙ$9261420d-3754-4820-a4f0-c5bda988157a´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$0ccf77bd-0c5d-4c3c-82b5-b25c4adbc3ba„´precedence_heuristic §cell_idÙ$0ccf77bd-0c5d-4c3c-82b5-b25c4adbc3ba´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$b1c510c9-4130-4f5e-8d15-3bfaf0a61033„´precedence_heuristic §cell_idÙ$b1c510c9-4130-4f5e-8d15-3bfaf0a61033´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$09579796-7e0e-4990-b727-b20f63242bcb„´precedence_heuristic §cell_idÙ$09579796-7e0e-4990-b727-b20f63242bcb´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2f„´precedence_heuristic §cell_idÙ$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2f´downstream_cells_map‚§Sidebar�£toc‘Ù$fefc5308-7caf-465a-afc0-b1a6f2e68ba2²upstream_cells_map‹³RobustLocalResource�·HypertextLiteral.Bypass�¸HypertextLiteral.content�¦String�¤@htl�®Markdown.parse�Ù HypertextLiteral.attribute_value�·HypertextLiteral.Result�°HypertextLiteral‘Ù$a9d71171-dd24-472a-be5f-12619295c4bf¨Markdown�¤read�Ù$ebf43572-95f2-401e-aa2e-d7748d3bf639„´precedence_heuristic §cell_idÙ$ebf43572-95f2-401e-aa2e-d7748d3bf639´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$c0da4104-9a5a-4553-8df0-fdadd0194c14„´precedence_heuristic §cell_idÙ$c0da4104-9a5a-4553-8df0-fdadd0194c14´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$a9d71171-dd24-472a-be5f-12619295c4bf„´precedence_heuristic§cell_idÙ$a9d71171-dd24-472a-be5f-12619295c4bf´downstream_cells_mapƒ§PlutoUI�°HypertextLiteral‘Ù$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2f²PlutoTeachingTools�²upstream_cells_map€´cell_execution_order�Ù$a9d71171-dd24-472a-be5f-12619295c4bfÙ$9261420d-3754-4820-a4f0-c5bda988157aÙ$09579796-7e0e-4990-b727-b20f63242bcbÙ$c0da4104-9a5a-4553-8df0-fdadd0194c14Ù$d448115a-6857-4082-893b-37549fe83b8bÙ$786a2620-1962-4ee2-950c-b47e28d66e99Ù$ebf43572-95f2-401e-aa2e-d7748d3bf639Ù$7e571edb-6206-4138-863e-5a9d804e07ecÙ$0ccf77bd-0c5d-4c3c-82b5-b25c4adbc3baÙ$b1c510c9-4130-4f5e-8d15-3bfaf0a61033Ù$4e1fa8a0-ad16-417f-ba58-5cb0ccff45a3Ù$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2fÙ$fefc5308-7caf-465a-afc0-b1a6f2e68ba2´last_hot_reload_timeË©shortpath¨index.jl®process_status¥ready¤pathÙD/home/runner/work/numerical-analysis/numerical-analysis/src/index.jl­pluto_version¨v0.20.27®last_save_timeËAÚƒ,m¤ªcell_order�Ù$9261420d-3754-4820-a4f0-c5bda988157aÙ$09579796-7e0e-4990-b727-b20f63242bcbÙ$c0da4104-9a5a-4553-8df0-fdadd0194c14Ù$fefc5308-7caf-465a-afc0-b1a6f2e68ba2Ù$d448115a-6857-4082-893b-37549fe83b8bÙ$786a2620-1962-4ee2-950c-b47e28d66e99Ù$ebf43572-95f2-401e-aa2e-d7748d3bf639Ù$7e571edb-6206-4138-863e-5a9d804e07ecÙ$0ccf77bd-0c5d-4c3c-82b5-b25c4adbc3baÙ$b1c510c9-4130-4f5e-8d15-3bfaf0a61033Ù$a9d71171-dd24-472a-be5f-12619295c4bfÙ$4e1fa8a0-ad16-417f-ba58-5cb0ccff45a3Ù$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2f±published_objects€¥nbpkgНinstall_time_nsÏ�øV¬instantiatedòinstalled_versions…§PlutoUI¦0.7.80Ù!__internal_julia_manifest_version¦1.12.4°HypertextLiteral¥1.0.0¸__internal_julia_version¦1.12.4²PlutoTeachingTools¥0.4.7°terminal_outputs„ªnbpkg_syncÚÔ Resolving... ===  Project No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Project.toml`  Manifest No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Manifest.toml` Instantiating... === Adding packages... ===  Resolving package versions...  Updating `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Project.toml` [ac1192a8] + HypertextLiteral v1.0.0 [661c6b06] + PlutoTeachingTools v0.4.7 ⌃ [7f904dfe] + PlutoUI v0.7.80  Updating `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Manifest.toml` [6e696c72] + AbstractPlutoDingetjes v1.4.0 [3da002f7] + ColorTypes v0.12.1 [53c48c17] + FixedPointNumbers v0.8.5 [1fa38f19] + Format v1.3.7 [47d2ed2b] + Hyperscript v0.0.5 [ac1192a8] + HypertextLiteral v1.0.0 [b5f81e59] + IOCapture v1.0.0 [692b3bcd] + JLLWrappers v1.8.0 [b964fa9f] + LaTeXStrings v1.4.0 [23fbe1c1] + Latexify v0.16.10 [6c6e2e6c] + MIMEs v1.1.0 [1914dd2f] + MacroTools v0.5.16 [bac558e1] + OrderedCollections v1.8.1 [661c6b06] + PlutoTeachingTools v0.4.7 ⌃ [7f904dfe] + PlutoUI v0.7.80 [21216c6a] + Preferences v1.5.2 [189a3867] + Reexport v1.2.2 [ae029012] + Requires v1.3.1 [10745b16] + Statistics v1.11.1 [410a4b4d] + Tricks v0.1.13 [5c2747f8] + URIs v1.6.1 [61579ee1] + Ghostscript_jll v9.55.1+0 [aacddb02] + JpegTurbo_jll v3.1.5+0 [0dad84c5] + ArgTools v1.1.2 [56f22d72] + Artifacts v1.11.0 [2a0f44e3] + Base64 v1.11.0 [ade2ca70] + Dates v1.11.0 [f43a241f] + Downloads v1.7.0 [7b1f6079] + FileWatching v1.11.0 [b77e0a4c] + InteractiveUtils v1.11.0 [ac6e5ff7] + JuliaSyntaxHighlighting v1.12.0 [b27032c2] + LibCURL v0.6.4 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.12.0 [56ddb016] + Logging v1.11.0 [d6f4376e] + Markdown v1.11.0 [ca575930] + NetworkOptions v1.3.0 [de0858da] + Printf v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v0.7.0 [9e88b42a] + Serialization v1.11.0 [f489334b] + StyledStrings v1.11.0 [fa267f1f] + TOML v1.0.3 [8dfed614] + Test v1.11.0 [cf7118a7] + UUIDs v1.11.0 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.3.0+1 [deac9b47] + LibCURL_jll v8.15.0+0 [29816b5a] + LibSSH2_jll v1.11.3+1 [14a3606d] + MozillaCACerts_jll v2025.11.4 [4536629a] + OpenBLAS_jll v0.3.29+0 [458c3c95] + OpenSSL_jll v3.5.4+0 [83775a58] + Zlib_jll v1.3.1+2 [8e850b90] + libblastrampoline_jll v5.15.0+0 [8e850ede] + nghttp2_jll v1.64.0+1  Info Packages marked with ⌃ have new versions available and may be upgradable. Loading packages... Instantiating... === Precompiling... === Waiting for notebook process to start... Done. Starting precompilation... §PlutoUIÚÔ Resolving... ===  Project No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Project.toml`  Manifest No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Manifest.toml` Instantiating... === Adding packages... ===  Resolving package versions...  Updating `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Project.toml` [ac1192a8] + HypertextLiteral v1.0.0 [661c6b06] + PlutoTeachingTools v0.4.7 ⌃ [7f904dfe] + PlutoUI v0.7.80  Updating `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Manifest.toml` [6e696c72] + AbstractPlutoDingetjes v1.4.0 [3da002f7] + ColorTypes v0.12.1 [53c48c17] + FixedPointNumbers v0.8.5 [1fa38f19] + Format v1.3.7 [47d2ed2b] + Hyperscript v0.0.5 [ac1192a8] + HypertextLiteral v1.0.0 [b5f81e59] + IOCapture v1.0.0 [692b3bcd] + JLLWrappers v1.8.0 [b964fa9f] + LaTeXStrings v1.4.0 [23fbe1c1] + Latexify v0.16.10 [6c6e2e6c] + MIMEs v1.1.0 [1914dd2f] + MacroTools v0.5.16 [bac558e1] + OrderedCollections v1.8.1 [661c6b06] + PlutoTeachingTools v0.4.7 ⌃ [7f904dfe] + PlutoUI v0.7.80 [21216c6a] + Preferences v1.5.2 [189a3867] + Reexport v1.2.2 [ae029012] + Requires v1.3.1 [10745b16] + Statistics v1.11.1 [410a4b4d] + Tricks v0.1.13 [5c2747f8] + URIs v1.6.1 [61579ee1] + Ghostscript_jll v9.55.1+0 [aacddb02] + JpegTurbo_jll v3.1.5+0 [0dad84c5] + ArgTools v1.1.2 [56f22d72] + Artifacts v1.11.0 [2a0f44e3] + Base64 v1.11.0 [ade2ca70] + Dates v1.11.0 [f43a241f] + Downloads v1.7.0 [7b1f6079] + FileWatching v1.11.0 [b77e0a4c] + InteractiveUtils v1.11.0 [ac6e5ff7] + JuliaSyntaxHighlighting v1.12.0 [b27032c2] + LibCURL v0.6.4 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.12.0 [56ddb016] + Logging v1.11.0 [d6f4376e] + Markdown v1.11.0 [ca575930] + NetworkOptions v1.3.0 [de0858da] + Printf v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v0.7.0 [9e88b42a] + Serialization v1.11.0 [f489334b] + StyledStrings v1.11.0 [fa267f1f] + TOML v1.0.3 [8dfed614] + Test v1.11.0 [cf7118a7] + UUIDs v1.11.0 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.3.0+1 [deac9b47] + LibCURL_jll v8.15.0+0 [29816b5a] + LibSSH2_jll v1.11.3+1 [14a3606d] + MozillaCACerts_jll v2025.11.4 [4536629a] + OpenBLAS_jll v0.3.29+0 [458c3c95] + OpenSSL_jll v3.5.4+0 [83775a58] + Zlib_jll v1.3.1+2 [8e850b90] + libblastrampoline_jll v5.15.0+0 [8e850ede] + nghttp2_jll v1.64.0+1  Info Packages marked with ⌃ have new versions available and may be upgradable. Loading packages... Instantiating... === Precompiling... === Waiting for notebook process to start... Done. Starting precompilation... °HypertextLiteralÚÔ Resolving... ===  Project No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Project.toml`  Manifest No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Manifest.toml` Instantiating... === Adding packages... ===  Resolving package versions...  Updating `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Project.toml` [ac1192a8] + HypertextLiteral v1.0.0 [661c6b06] + PlutoTeachingTools v0.4.7 ⌃ [7f904dfe] + PlutoUI v0.7.80  Updating `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Manifest.toml` [6e696c72] + AbstractPlutoDingetjes v1.4.0 [3da002f7] + ColorTypes v0.12.1 [53c48c17] + FixedPointNumbers v0.8.5 [1fa38f19] + Format v1.3.7 [47d2ed2b] + Hyperscript v0.0.5 [ac1192a8] + HypertextLiteral v1.0.0 [b5f81e59] + IOCapture v1.0.0 [692b3bcd] + JLLWrappers v1.8.0 [b964fa9f] + LaTeXStrings v1.4.0 [23fbe1c1] + Latexify v0.16.10 [6c6e2e6c] + MIMEs v1.1.0 [1914dd2f] + MacroTools v0.5.16 [bac558e1] + OrderedCollections v1.8.1 [661c6b06] + PlutoTeachingTools v0.4.7 ⌃ [7f904dfe] + PlutoUI v0.7.80 [21216c6a] + Preferences v1.5.2 [189a3867] + Reexport v1.2.2 [ae029012] + Requires v1.3.1 [10745b16] + Statistics v1.11.1 [410a4b4d] + Tricks v0.1.13 [5c2747f8] + URIs v1.6.1 [61579ee1] + Ghostscript_jll v9.55.1+0 [aacddb02] + JpegTurbo_jll v3.1.5+0 [0dad84c5] + ArgTools v1.1.2 [56f22d72] + Artifacts v1.11.0 [2a0f44e3] + Base64 v1.11.0 [ade2ca70] + Dates v1.11.0 [f43a241f] + Downloads v1.7.0 [7b1f6079] + FileWatching v1.11.0 [b77e0a4c] + InteractiveUtils v1.11.0 [ac6e5ff7] + JuliaSyntaxHighlighting v1.12.0 [b27032c2] + LibCURL v0.6.4 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.12.0 [56ddb016] + Logging v1.11.0 [d6f4376e] + Markdown v1.11.0 [ca575930] + NetworkOptions v1.3.0 [de0858da] + Printf v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v0.7.0 [9e88b42a] + Serialization v1.11.0 [f489334b] + StyledStrings v1.11.0 [fa267f1f] + TOML v1.0.3 [8dfed614] + Test v1.11.0 [cf7118a7] + UUIDs v1.11.0 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.3.0+1 [deac9b47] + LibCURL_jll v8.15.0+0 [29816b5a] + LibSSH2_jll v1.11.3+1 [14a3606d] + MozillaCACerts_jll v2025.11.4 [4536629a] + OpenBLAS_jll v0.3.29+0 [458c3c95] + OpenSSL_jll v3.5.4+0 [83775a58] + Zlib_jll v1.3.1+2 [8e850b90] + libblastrampoline_jll v5.15.0+0 [8e850ede] + nghttp2_jll v1.64.0+1  Info Packages marked with ⌃ have new versions available and may be upgradable. Loading packages... Instantiating... === Precompiling... === Waiting for notebook process to start... Done. Starting precompilation... ²PlutoTeachingToolsÚÔ Resolving... ===  Project No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Project.toml`  Manifest No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Manifest.toml` Instantiating... === Adding packages... ===  Resolving package versions...  Updating `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Project.toml` [ac1192a8] + HypertextLiteral v1.0.0 [661c6b06] + PlutoTeachingTools v0.4.7 ⌃ [7f904dfe] + PlutoUI v0.7.80  Updating `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_avvsoidijj/Manifest.toml` [6e696c72] + AbstractPlutoDingetjes v1.4.0 [3da002f7] + ColorTypes v0.12.1 [53c48c17] + FixedPointNumbers v0.8.5 [1fa38f19] + Format v1.3.7 [47d2ed2b] + Hyperscript v0.0.5 [ac1192a8] + HypertextLiteral v1.0.0 [b5f81e59] + IOCapture v1.0.0 [692b3bcd] + JLLWrappers v1.8.0 [b964fa9f] + LaTeXStrings v1.4.0 [23fbe1c1] + Latexify v0.16.10 [6c6e2e6c] + MIMEs v1.1.0 [1914dd2f] + MacroTools v0.5.16 [bac558e1] + OrderedCollections v1.8.1 [661c6b06] + PlutoTeachingTools v0.4.7 ⌃ [7f904dfe] + PlutoUI v0.7.80 [21216c6a] + Preferences v1.5.2 [189a3867] + Reexport v1.2.2 [ae029012] + Requires v1.3.1 [10745b16] + Statistics v1.11.1 [410a4b4d] + Tricks v0.1.13 [5c2747f8] + URIs v1.6.1 [61579ee1] + Ghostscript_jll v9.55.1+0 [aacddb02] + JpegTurbo_jll v3.1.5+0 [0dad84c5] + ArgTools v1.1.2 [56f22d72] + Artifacts v1.11.0 [2a0f44e3] + Base64 v1.11.0 [ade2ca70] + Dates v1.11.0 [f43a241f] + Downloads v1.7.0 [7b1f6079] + FileWatching v1.11.0 [b77e0a4c] + InteractiveUtils v1.11.0 [ac6e5ff7] + JuliaSyntaxHighlighting v1.12.0 [b27032c2] + LibCURL v0.6.4 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.12.0 [56ddb016] + Logging v1.11.0 [d6f4376e] + Markdown v1.11.0 [ca575930] + NetworkOptions v1.3.0 [de0858da] + Printf v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v0.7.0 [9e88b42a] + Serialization v1.11.0 [f489334b] + StyledStrings v1.11.0 [fa267f1f] + TOML v1.0.3 [8dfed614] + Test v1.11.0 [cf7118a7] + UUIDs v1.11.0 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.3.0+1 [deac9b47] + LibCURL_jll v8.15.0+0 [29816b5a] + LibSSH2_jll v1.11.3+1 [14a3606d] + MozillaCACerts_jll v2025.11.4 [4536629a] + OpenBLAS_jll v0.3.29+0 [458c3c95] + OpenSSL_jll v3.5.4+0 [83775a58] + Zlib_jll v1.3.1+2 [8e850b90] + libblastrampoline_jll v5.15.0+0 [8e850ede] + nghttp2_jll v1.64.0+1  Info Packages marked with ⌃ have new versions available and may be upgradable. Loading packages... Instantiating... === Precompiling... === Waiting for notebook process to start... Done. Starting precompilation... §enabled÷restart_recommended_msgÀ´restart_required_msgÀ­busy_packages�¶waiting_for_permissionÂÙ,waiting_for_permission_but_probably_disabled«cell_inputs�Ù$fefc5308-7caf-465a-afc0-b1a6f2e68ba2„§cell_idÙ$fefc5308-7caf-465a-afc0-b1a6f2e68ba2¤code£toc¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$786a2620-1962-4ee2-950c-b47e28d66e99„§cell_idÙ$786a2620-1962-4ee2-950c-b47e28d66e99¤codeÚ&md""" ## EPFL resources If you are an EPFL student you find the internal course resources following these links: - **Moodle link:** - **Lecture recordings:** [https://mediaspace.epfl.ch](https://mediaspace.epfl.ch/channel/numerical-analysis/110626) """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$d448115a-6857-4082-893b-37549fe83b8b„§cell_idÙ$d448115a-6857-4082-893b-37549fe83b8b¤codeÚÿmd""" **Accompanying Excercise sheets** - [Sheet 0: Getting Started with Julia](https://teaching.matmat.org/numerical-analysis/exercises/ex0_introduction_julia_pluto_statement.html) - [Sheet 0: Basic Plotting in Julia](https://teaching.matmat.org/numerical-analysis/exercises/ex0_introduction_plots_statement.html) ### Improving these notes If you **spot an error** feel free to make a pull request to the [**github repository**](https://github.com/epfl-matmat/numerical-analysis) generating this website. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$4e1fa8a0-ad16-417f-ba58-5cb0ccff45a3„§cell_idÙ$4e1fa8a0-ad16-417f-ba58-5cb0ccff45a3¤code±TableOfContents()¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$7e571edb-6206-4138-863e-5a9d804e07ec„§cell_idÙ$7e571edb-6206-4138-863e-5a9d804e07ec¤codeÚmd""" ## Content The topics covered include: * Properties and issues with numerical computation * Finding roots and fixed points * Interpolation and curve regression * Solving linear and non-linear equations * Solving eigenproblems * Numerical integration and differentiation * Basic numerical techniques for solving differential equations Algorithm demonstrations and implementations will be based on the [Julia programming language](https://julialang.org/) and interactive [Pluto](https://plutojl.org/) notebooks. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$9261420d-3754-4820-a4f0-c5bda988157a„§cell_idÙ$9261420d-3754-4820-a4f0-c5bda988157a¤codeÙ+md""" # MATH-251(b): Numerical analysis """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$0ccf77bd-0c5d-4c3c-82b5-b25c4adbc3ba„§cell_idÙ$0ccf77bd-0c5d-4c3c-82b5-b25c4adbc3ba¤codeÚ*md""" ## Prerequisites * Analysis * Linear algebra The course is designed with an audience of applied scientists (physics, biology, materials science) or engineers in mind. With a basic first-year mathematics background and prior exposure to some programming the material should be accessible. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$b1c510c9-4130-4f5e-8d15-3bfaf0a61033„§cell_idÙ$b1c510c9-4130-4f5e-8d15-3bfaf0a61033¤codeÚÐmd""" ## Literature and further reading The outline of the course as well as many examples are taken from the excellent lecture notes **"Numerical analysis" by Prof. Fabio Nobile**. A copy of these notes in French as well as English is available [on moodle](https://go.epfl.ch/numerical-analysis). For further reading and plenty of Julia code examples related to our subjects, take a look at the book **Fundamentals of Numerical Computation by Tobin A. Driscoll and Richard J. Braun** published by SIAM. An online version is further available at [https://tobydriscoll.net/fnc-julia/](https://tobydriscoll.net/fnc-julia/). I will also link to this text in the lecture notes from time to time. A slightly different emphasis in topics, but otherwise a good summary provide the lecture notes [**First Semester Numerical analysis**](https://diginole.lib.fsu.edu/islandora/object/fsu%3A657877/datastream/PDF/view) **by Giray Ökten**. At places the text is more mathematical than our treatment. In the initial sections it has a good summary of basic Julia commands an concepts. [An online PDF](https://diginole.lib.fsu.edu/islandora/object/fsu%3A657877/datastream/PDF/view) is available. For an in-depth treatment with mathematical details and proofs for the results where we skip these details for brevity can be found in [**Numerical Mathematics**](https://link.springer.com/book/10.1007/b98885) **by A. Quarteroni, R. Sacco, F. Saleri**. A PDF can be downloaded from Springer by EPFL students. Finally, if you are curious about Julia, I can highly recommend [**MIT's computational thinking class**](https://computationalthinking.mit.edu), which introduces Julia as well as its way of solving scientific problems in a hands-on and fun way. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$09579796-7e0e-4990-b727-b20f63242bcb„§cell_idÙ$09579796-7e0e-4990-b727-b20f63242bcb¤codeÙ±md""" This repository contains the teaching material of the course [MATH-251(b) Numerical analysis](https://edu.epfl.ch/coursebook/en/numerical-analysis-MATH-251-B) at EPFL. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2f„§cell_idÙ$8d38c66a-9582-4ef0-96f7-73e0b2ae2e2f¤codeÚFbegin RobustLocalResource("https://teaching.matmat.org/error-control/sidebar.md", "sidebar.md") toc = Markdown.parse(read("sidebar.md", String)) Sidebar(toc, ypos) = @htl("""""") Sidebar(toc, 335) end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$ebf43572-95f2-401e-aa2e-d7748d3bf639„§cell_idÙ$ebf43572-95f2-401e-aa2e-d7748d3bf639¤codeÙÍmd""" ## Summary The students will learn key numerical techniques for solving standard mathematical problems in science and engineering. The underlying mathematical theory and properties are discussed. """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$c0da4104-9a5a-4553-8df0-fdadd0194c14„§cell_idÙ$c0da4104-9a5a-4553-8df0-fdadd0194c14¤code»md""" ## Course outline """¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedÃÙ$a9d71171-dd24-472a-be5f-12619295c4bf„§cell_idÙ$a9d71171-dd24-472a-be5f-12619295c4bf¤codeÙJbegin using HypertextLiteral using PlutoUI using PlutoTeachingTools end¨metadataƒ©show_logsèdisabled®skip_as_script«code_foldedënotebook_idÙ$ae6e9ae0-538f-11f1-871f-653b7a2946d9«in_temp_dir¨metadata€