<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://eduwiki.innopolis.university/index.php?action=history&amp;feed=atom&amp;title=BSc%3ANumericalModelling</id>
	<title>BSc:NumericalModelling - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://eduwiki.innopolis.university/index.php?action=history&amp;feed=atom&amp;title=BSc%3ANumericalModelling"/>
	<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:NumericalModelling&amp;action=history"/>
	<updated>2026-05-07T15:45:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:NumericalModelling&amp;diff=77&amp;oldid=prev</id>
		<title>10.90.136.11: Created page with &quot;= Numerical Modelling =  * &lt;span&gt;'''Course name:'''&lt;/span&gt; Numerical Modelling * &lt;span&gt;'''Course number:'''&lt;/span&gt; XYZ * &lt;span&gt;'''Subject area:'''&lt;/span&gt; Math  == Course chara...&quot;</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:NumericalModelling&amp;diff=77&amp;oldid=prev"/>
		<updated>2021-07-30T10:48:29Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Numerical Modelling =  * &amp;lt;span&amp;gt;&amp;#039;&amp;#039;&amp;#039;Course name:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; Numerical Modelling * &amp;lt;span&amp;gt;&amp;#039;&amp;#039;&amp;#039;Course number:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; XYZ * &amp;lt;span&amp;gt;&amp;#039;&amp;#039;&amp;#039;Subject area:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; Math  == Course chara...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Numerical Modelling =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Numerical Modelling&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Subject area:'''&amp;lt;/span&amp;gt; Math&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* An understanding of the basic &amp;amp;quot;canon&amp;amp;quot; of numerical algorithms and numerical methods relevant to computing given task&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
This course answer on the next questions. To what problems does an algorithm or method apply? How does the method work? How does the method compare to alternatives (in terms of appropriate computational metrics)? What can go wrong? What are the sources of error and uncertainty?&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
=== - What should a student remember at the end of the course? ===&lt;br /&gt;
&lt;br /&gt;
* Understand key principles involved in numerical solution of typical mathematical problems.&lt;br /&gt;
* Become familiar with numerical differentiation and integration.&lt;br /&gt;
* Solve systems of non/linear algebraic equations numerically by different ways.&lt;br /&gt;
* Become familiar with methods of interpolation and regression.&lt;br /&gt;
* Get hands-on experience with numerical solving system of nonlinear differential equations.&lt;br /&gt;
&lt;br /&gt;
=== - What should a student be able to understand at the end of the course? ===&lt;br /&gt;
&lt;br /&gt;
* Key principles involved in numerical solution of typical mathematical problems.&lt;br /&gt;
* How to apply numerical differentiation and integration.&lt;br /&gt;
* How to solve systems of non/linear algebraic equations numerically by different ways.&lt;br /&gt;
* How to apply methods of interpolation and regression.&lt;br /&gt;
* How to make numerical solving system of nonlinear differential equations.&lt;br /&gt;
&lt;br /&gt;
=== - What should a student be able to apply at the end of the course? ===&lt;br /&gt;
&lt;br /&gt;
* Numerical solution of typical mathematical problems&lt;br /&gt;
* Make nonlinear regression and interpolation&lt;br /&gt;
* Make numerical differentiation and integration&lt;br /&gt;
* Numerical solution systems of non/linear algebraic equations&lt;br /&gt;
* Numerical solving system of nonlinear differential equations&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Proposed points'''&lt;br /&gt;
|-&lt;br /&gt;
| Labs/seminar classes&lt;br /&gt;
| 20&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|-&lt;br /&gt;
| Interim performance assessment&lt;br /&gt;
| 30&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|-&lt;br /&gt;
| Exams&lt;br /&gt;
| 50&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Proposed range'''&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
| 90-100&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 85-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
| 75-89&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 65-84&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
| 60-74&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 50-64&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
| 0-59&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0-49&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
==== Textbooks: ====&lt;br /&gt;
&lt;br /&gt;
* Gilbert Strang. Computational Science and Engineering. Wellesley, MA: Wellesley-Cambridge Press, 2007. 727 Pg. ISBN: 9780961408817.&lt;br /&gt;
* I.B. Petrov, A.I. Lobanov. Lectures in Computational Mathematics. M.: Internet University of Information Technology, 2006. 523 c. ISBN: 5-94774-542-9.&lt;br /&gt;
&lt;br /&gt;
==== Reference material: ====&lt;br /&gt;
&lt;br /&gt;
* Jaan Kiusalaas. Numerical Methods in Engineering with Python. Cambridge University Press, 2005. 433 Pg. ISBN: 978-0-521-85287-6.&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
The main sections of the course and approximate hour distribution between them is as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
| '''Section Title'''&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''Lectures'''&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''Seminars'''&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''Self-study'''&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''Knowledge'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''Number'''&lt;br /&gt;
|&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''(hours)'''&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''(labs)'''&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| '''evaluation'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Numerical differentiation and integration, functions interpolation, solution of system of linear algebraic equations.&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 14&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 14&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 28&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Solution of nonlinear algebraic equations and systems. Solving of ODEs and PDEs. Discrete Fourier Series.&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| Final examination&lt;br /&gt;
|&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: ====&lt;br /&gt;
&lt;br /&gt;
Numerical differentiation and integration, functions interpolation, solution of system of linear algebraic equations&lt;br /&gt;
&lt;br /&gt;
=== Topics covered in this section: ===&lt;br /&gt;
&lt;br /&gt;
* Key concerns of numerical computations. Accuracy of floating-point arithmetic.&lt;br /&gt;
* Numerical differentiation. Method of undetermined coefficients.&lt;br /&gt;
* Interpolation of functions. Splines.&lt;br /&gt;
* Numerical integration. Quadrature formulas.&lt;br /&gt;
* Solution of system of linear algebraic equations.&lt;br /&gt;
&lt;br /&gt;
=== What forms of evaluation were used to test students’ performance in this section? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tabular&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;|a|c|&amp;lt;/span&amp;gt; &amp;amp;amp; '''Yes/No'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Development of individual parts of software product code &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Homework and group projects &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Midterm evaluation &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing (written or computer based) &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Reports &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Essays &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Oral polls &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Discussions &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Typical questions for ongoing performance evaluation within this section ===&lt;br /&gt;
&lt;br /&gt;
# How to perform numerical differentiation by the method of undetermined coefficients?&lt;br /&gt;
# How to perform interpolation of function by using splines?&lt;br /&gt;
# How to perform numerical integration by using quadrature formulas?&lt;br /&gt;
# How to solve a system of linear algebraic equations by using iteration methods?&lt;br /&gt;
# How to solve a system of linear algebraic equations by using variation methods?&lt;br /&gt;
&lt;br /&gt;
=== Typical questions for seminar classes (labs) within this section ===&lt;br /&gt;
&lt;br /&gt;
# To make numerical differentiation by the method of undetermined coefficients.&lt;br /&gt;
# To make function interpolation by using splines.&lt;br /&gt;
# To make numerical integration by using quadrature formulas.&lt;br /&gt;
# To Solve a system of linear algebraic equations by using iteration methods?&lt;br /&gt;
# To solve a system of linear algebraic equations by using variation methods?&lt;br /&gt;
&lt;br /&gt;
=== Test tasks for final assessment in this section ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You are requested to compute the integral of a black box function. The function would be supplied to you at the compile time in the form of a header file &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox.h&amp;lt;/math&amp;gt;. At the very beginning of your program you should read single integer &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;n&amp;lt;/math&amp;gt; from the standard input call the function &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-init(n)&amp;lt;/math&amp;gt;. &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-init&amp;lt;/math&amp;gt; should only be called once. All other functions should only be called after &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-init&amp;lt;/math&amp;gt;. Calling &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox_init&amp;lt;/math&amp;gt; with argument different from the one supplied via standard input leads to undefined behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;When you want to get the value of the function at point &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt; you should call &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox(x)&amp;lt;/math&amp;gt;. This function is guaranteed to be thread-safe. &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt; should be in range [-1; 1].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to get the maximum absolute value of the &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k-th&amp;lt;/math&amp;gt; derivative of the black box function on the integration interval, you should call &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-df(k)&amp;lt;/math&amp;gt;. The &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k&amp;lt;/math&amp;gt; should be integer from 1 to 6.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To check if the black box function is oscillating you should call &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-period()&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The returned value would be the period length if the function is oscillating, and 0 otherwise.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The required absolute precision is &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;10^-9&amp;lt;/math&amp;gt;. The truncated &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox.h&amp;lt;/math&amp;gt; file (implementing only one of possible blackbox functions) and an example (suboptimal) solution &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;solution.cpp&amp;lt;/math&amp;gt; are available to you on the “Files” tab in PCMS.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You should only submit your &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;solution.c/solution.cpp&amp;lt;/math&amp;gt; file. The appropriate &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox.h&amp;lt;/math&amp;gt; will be supplied by the testing system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You should not try to reverse-engineer the black box and/or interact with it in any way except through the four functions listed above.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The task is simple: you have to fit a set of points with a 9-degree polynomial&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y = a_9x^9+a_8x^8+...+a_1x+a_0&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Your program receives the following stream of commands:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ADD &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y&amp;lt;/math&amp;gt; Read values &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt; and &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;FIT Print the coefficients for a polynomial fitted through all the points read since the beginning of the program. You will have no more than 13 FIT commands in each test.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;END Print the coefficients for a polynomial fitted through all the points read since the beginning of the program, and quit.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You will get no more than 107 commands before END.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The task is simple: you have to solve a system of linear algebraic equations (SLAE) &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;Ax = b&amp;lt;/math&amp;gt; with residual no more than &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;10^-9&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;And the matrix &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A&amp;lt;/math&amp;gt; is very nice: non-singular, symmetric and strictly diagonally dominant. A piece of cake, you might think. The catch: you do not have &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A&amp;lt;/math&amp;gt; in any explicit form.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can only get the result of its multiplication with the vector.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You have a number of the blackbox functions through which you work with the SLAE:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;void &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-init()&amp;lt;/math&amp;gt; – initializes the internal blackbox data structures. Should be called in the very beginning of the program! No other blackbox function should be called before it, and no reading from the &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;stdin&amp;lt;/math&amp;gt; shall be made (or at least, as they say, “be kind, rewind”).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;int &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-size()&amp;lt;/math&amp;gt; – returns the number of equations (which is equal to the number of unknowns) of the system. The number of equations lies between 10 and 10000 (inclusive).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;void &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-mult&amp;lt;/math&amp;gt; (const double &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;*x&amp;lt;/math&amp;gt;, double &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;*out&amp;lt;/math&amp;gt;) – compute the product of &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A&amp;lt;/math&amp;gt; and vector &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt;, write the results to out. The pointers &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt; and out should point to different chunks of memory of size at least &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-size() * sizeof(double)&amp;lt;/math&amp;gt; bytes each.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;void &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-rhs(double *b)&amp;lt;/math&amp;gt; – write the right-hand side of the SLAE (i.e., vector &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;b&amp;lt;/math&amp;gt;) to the array &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;b&amp;lt;/math&amp;gt;. The pointer &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;b&amp;lt;/math&amp;gt; should point to the chunk if memory of size at least &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-size() * sizeof(double)&amp;lt;/math&amp;gt; bytes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;void &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-submit(double *solution)&amp;lt;/math&amp;gt; – write the result of the program. The array solution should contain the solution to the SLAE: &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;blackbox-size()&amp;lt;/math&amp;gt; values of type double. This should the last function to be called by your program (besides return 0;).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Section 2 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: ====&lt;br /&gt;
&lt;br /&gt;
Solution of nonlinear algebraic equations and systems. Solving of ODEs and PDEs. Discrete Fourier Series.&lt;br /&gt;
&lt;br /&gt;
=== Topics covered in this section: ===&lt;br /&gt;
&lt;br /&gt;
* Numerical solution of nonlinear algebraic equations and systems.&lt;br /&gt;
* Basic concepts of the theory of difference schemes. Numerical methods for solving of initial value problem for ordinary differential equations (ODEs).&lt;br /&gt;
* Numerical methods for solving of boundary value problems for ODEs.&lt;br /&gt;
* Discrete Fourier Series. Numerical solution of second-order ODEs by Discrete Fourier Series. Numerical solution of the partial differential equations (PDEs) by Discrete Fourier Series.&lt;br /&gt;
* Variable-directions method. Numerical solution of the PDEs by finite difference methods.&lt;br /&gt;
&lt;br /&gt;
=== What forms of evaluation were used to test students’ performance in this section? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tabular&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;|a|c|&amp;lt;/span&amp;gt; &amp;amp;amp; '''Yes/No'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Development of individual parts of software product code &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Homework and group projects &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Midterm evaluation &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing (written or computer based) &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Reports &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Essays &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Oral polls &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Discussions &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Typical questions for ongoing performance evaluation within this section ===&lt;br /&gt;
&lt;br /&gt;
# How to perform numerical solution of nonlinear algebraic equations and systems.&lt;br /&gt;
# How to perform numerical solution of initial value problem for ordinary differential equations (ODEs).&lt;br /&gt;
# How to perform numerical solution of boundary value problems for ODEs.&lt;br /&gt;
# How to perform numerical solution of ODEs and PDEs by Discrete Fourier Series.&lt;br /&gt;
# How to perform numerical solution of the PDEs by finite difference methods.&lt;br /&gt;
&lt;br /&gt;
=== Typical questions for seminar classes (labs) within this section ===&lt;br /&gt;
&lt;br /&gt;
# To make numerical solution of nonlinear algebraic equations and systems.&lt;br /&gt;
# To make numerical solution of initial value problem for ordinary differential equations (ODEs).&lt;br /&gt;
# To make numerical solution of boundary value problems for ODEs.&lt;br /&gt;
# To make numerical solution of ODEs and PDEs by Discrete Fourier Series.&lt;br /&gt;
# To make numerical solution of the PDEs by finite difference methods.&lt;br /&gt;
&lt;br /&gt;
=== Test tasks for final assessment in this section ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You have to build software for a new GPS/GLONASS receiver. The satellite navigation works as follows (of course, this is a rather simplified description of a real-world situation). There are &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;N&amp;lt;/math&amp;gt; &amp;amp;lt; 30 satellites. Every satellite broadcasts its position (&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x_i; y_i; z_i&amp;lt;/math&amp;gt;) and high-precision synchronized time &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;t_i&amp;lt;/math&amp;gt;. These signals take time to reach the receiver (e.g., the one that’s in your smartphone). If the receiver has position &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt;; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y&amp;lt;/math&amp;gt;; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;z&amp;lt;/math&amp;gt;, and receives the signal at time &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;t&amp;lt;/math&amp;gt;, the following equation (called “Navigation equation”) holds true (For simplicity, we choose the speed of light &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;c&amp;lt;/math&amp;gt; = 1):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;(x - x_i)^2 + (y - y_i)^2 + (z - z_i)^2 = (t - t_i)^2&amp;lt;/math&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As we can see, we have four unknowns (the position of the receiver &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt;; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y&amp;lt;/math&amp;gt;; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;z&amp;lt;/math&amp;gt; and the precise time &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;t&amp;lt;/math&amp;gt; when it received the signal). So, we need at least &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;N&amp;lt;/math&amp;gt; = 4 satellites to get the location of the receiver (“fix”). The system of exactly four navigational equations might, in general, have multiple solutions. But usually, more than &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;N&amp;lt;/math&amp;gt; &amp;amp;gt; 4 satellites are visible, and we have an overdetermined system of nonlinear equations (due to noise, the equations can not be satisfied exactly). In this case, our goal is to minimize the sum of squares of residuals:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;Sum_i((x - x_i)^2 + (y - y_i)^2 + (z - z_i)^2 - (t - t_i)^2) \xrightarrow{} min&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You program should continuously read data from a virtual GPS receiver and print the position in each moment until the signal is lost. The number of satellites (and their order) can change. The initial position is unknown, but the position between successive readings does not change too much. The required accuracy is given by&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;Sum_i((x - x_i)^2 + (y - y_i)^2 + (z - z_i)^2 - (t - t_i)^2) &amp;lt; 10^{-6}&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It is guaranteed that such solution exists. The coordinates &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;x&amp;lt;/math&amp;gt;; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;y&amp;lt;/math&amp;gt;; &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;z&amp;lt;/math&amp;gt; are in range [-10; 10], the time &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;t&amp;lt;/math&amp;gt; is in range [-1000; 1000].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The number of readings is guaranteed not to exceed &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;10^5&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You have to build a simulation software for a new chemical reactor. Your program is given a list of chemical reactions and initial concentrations of all components. You should output the concentrations after time &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;t&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In first-order reactions, only one molecule is necessary for the reaction, and the reaction rate is proportional to the concentration of this reagent:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A\xrightarrow{k_1} n_1B_1 + n_2B_2 + ... + n_IB_I&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For this reaction, we can write down the following system of ODEs:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d[A]/dt=-k_1[A]&amp;lt;/math&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d[B_i]/dt=n_ik_1[A]&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;i=1,...,I&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Here, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;[A]&amp;lt;/math&amp;gt; is the concentration of molecule &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;[B_i]&amp;lt;/math&amp;gt; is the concentration of &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;B_i&amp;lt;/math&amp;gt; molecules, and &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k_1&amp;lt;/math&amp;gt; is the reaction rate constant.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In second order reactions, two molecules are necessary for the reaction to proceed:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A+C\xrightarrow{k_2} n_1B_1 + n_2B_2 + ... + n_IB_I&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d[A]/dt=-k_2[A][C]&amp;lt;/math&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;d[B_i]/dt=n_ik_2[A][C]&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;i=1,...,I&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;The simplest example of oscillating chemical system is the Oregonator [http://www.scholarpedia.org/article/Oregonator], which consists of the following reactions:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A+Y\xrightarrow{k_1}X+P&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;X+Y\xrightarrow{k_2}2P&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A+X\xrightarrow{k_3}2X+2Z&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;2X\xrightarrow{k_4}A+P&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;B+Z\xrightarrow{k_5}Y&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The reaction rates will always be within order of magnitude from their respective values in the example input file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Input&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The first line contains a single integer number &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;T&amp;lt;/math&amp;gt; = 1...1000 – how long we will run our virtual reactor. The second line contains six floating-point values – the initial concentrations of &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;X&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;Y&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;Z&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;B&amp;lt;/math&amp;gt; and &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;P&amp;lt;/math&amp;gt;. The third line contains five floating-point values – the reaction rate constants &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;k_1,...,k_5&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Output&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The output should contains six floating-point values – the final concentrations of &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;X&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;Y&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;Z&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;A&amp;lt;/math&amp;gt;, &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;B&amp;lt;/math&amp;gt; and &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;P&amp;lt;/math&amp;gt;. Required precision is &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;10^-6&amp;lt;/math&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exams and retake planning ==&lt;br /&gt;
&lt;br /&gt;
=== Exam ===&lt;br /&gt;
&lt;br /&gt;
Exams will be project-based and will be conducted in a form of problem solving, where the problems will be similar to those mentioned above. Students will be given 1-2 weeks to complete the exam.&lt;br /&gt;
&lt;br /&gt;
=== Retake 1 ===&lt;br /&gt;
&lt;br /&gt;
First retake will be paper-based and will be conducted in a form of problem solving. Students will be given 2-3 hours to complete the exam.The weight of the retake exam will be the same as the all course.&lt;br /&gt;
&lt;br /&gt;
=== Retake 2 ===&lt;br /&gt;
&lt;br /&gt;
Second retake will be paper-based and will be conducted in a form of problem solving. Students will be given 2-3 hours to complete the exam.The weight of the retake exam will be the same as the all course.&lt;/div&gt;</summary>
		<author><name>10.90.136.11</name></author>
	</entry>
</feed>