Skip to main content
If you continue browsing this website, you agree to our policies:
  • Condizioni di utilizzo e trattamento dei dati
Continue
x
e-Learning - UNIMIB
  • Home
  • My Media
  • More
Listen to this page using ReadSpeaker
 Log in
e-Learning - UNIMIB
Home My Media
Percorso della pagina
  1. Science
  2. Bachelor Degree
  3. Physical Sciences for Innovative Technologies [E3004Q]
  4. Courses
  5. A.A. 2025-2026
  6. 1st year
  1. Physical Modelling and Simulations
  2. Summary
Insegnamento Course full name
Physical Modelling and Simulations
Course ID number
2526-1-E3004Q004
Course summary SYLLABUS

Course Syllabus

  • Italiano ‎(it)‎
  • English ‎(en)‎
Export

Obiettivi

Questo corso intende fornire agli studenti le basi della programmazione e dei metodi computazionali per la fisica; gli studenti impareranno a modellizzare e simulare semplici problemi fisici, ottenendo predizioni e analizzando i risultati.

Obiettivi secondo i Descrittori di Dublino:
2. Conoscenza e capacità di comprensione applicate
3. Autonomia di giudizio
5. Capacità di apprendere

Contenuti sintetici

• Introduzione al Bash e agli script Bash.
• Introduzione alla programmazione, linguaggi interpretati vs linguaggi compilati. Python e librerie fondamentali: NumPy, SciPy, Matplotlib. Accenni al calcolo simbolico con SimPy.
• Accenni di programmazione a oggetti e al calcolo parallelo
• Metodi numerici: interpolazione, approssimazione, zeri, differenziazione e integrazione.
• Algebra lineare: operazioni elementari con matrici, sistemi lineari, equazioni agli autovalori.
• Equazioni differenziali ordinarie.
• Modellizzare semplici problemi fisici: esempi dalla meccanica classica.
• Dinamica gravitazionale di sistemi a più corpi.
• Metodi di Monte Carlo per simulazioni.

Programma esteso

Parte 1: Basi di programmazione e calcolo numerico

Introduzione al Bash: shell, comandi Unix, creare e manipolare file e cartelle, variabili di ambiente e alias.
Creare ed eseguire uno script in Bash, primi passi nel coding: variabili, cicli, condizioni, funzioni.

Introduzione ai linguaggi di programmazione. Python, accenni di C++; creare ed eseguire un codice.
Tipi di variabili e operazioni fondamentali. Leggere e scrivere file, definire funzioni, importare moduli. Liste e manipolazioni di liste.
Moduli specifici
NumPy: funzioni fondamentali, numeri pseudocasuali, array multidimensionali.
Matplotlib: realizzare e manipolare immagini, 2D e 3D plotting.
Accenni alla programmazione a oggetti in Python: classi, membri, metodi, ereditarietà.

Metodi numerici per trovare gli zeri: bisezione, metodo di Newton ed estensioni, metodo della secante. Implementazioni in Python con SciPy.
Interpolazione in una e due dimensioni. Implementazione con SciPy.
Derivate prime e seconde con differenze finite. Calcolo esatto con SimPy. scipy.misc.derivative.
Metodi numerici per l’integrazione: metodo dei rettangoli, metodo dei trapezi, formula di Cavalieri-Simpson, metodo di Gauss. Implementazione con SciPy.integrate.

Operazioni con array e matrici: somme, differenze, moltiplicazione righe per colonne. Risolvere sistemi lineari, calcolare il determinante di una matrice e ottenere la matrice inversa. Diagonalizzazione, calcolare autovalori e autovettori con NumPy.

Risolvere equazioni differenziali ordinarie: metodi di Eulero e Runge Kutta. Condizioni al contorno e Shooting.

Parte 2: modellizzazione e simulazione
Risoluzione di problemi di fisica elementare usando metodi numerici:
• cinematica del punto materiale: derivazione numerica delle traiettorie per moti in una, due e tre dimensioni.
• Meccanica: equazioni del moto per il pendolo semplice e smorzato
• pendolo doppio
• sistemi meccanici in presenza di attrito
• moto di rotolamento

Modellizzare problemi complessi:
• sistemi collisionali a molte particelle (esempio del gas in una scatola e calcolo di osservabili fisiche come temperatura e pressione)
• sistemi non collisionali a molte particelle: il potenziale gravitazionale di un sistema autogravitante
• Tempi computazionali. Accenno al calcolo parallelo

Rudimenti di metodi Monte-Carlo: cenni storici, algoritmo di Metropolis-Hastings. L’integrazione numerica con metodi Monte-Carlo.

Prerequisiti

Si richiedono conoscenze matematiche di base, funzioni elementari e calcolo algebrico: equazioni, disequazioni, trigonometria.

Modalità didattica

Le lezioni saranno erogate sia da remoto, in modalità asincrona, per 30 ore, sia in presenza per 18 ore. Ogni lezione prevede una parte teorica di lezione frontale (30 ore), sia una parte di esercitazione guidata (18).

Materiale didattico

Dispense delle lezioni ed esempi di codici forniti dal docente, volta per volta.
Testo suggerito per la programmazione in Python: “Introduction to Python Programming by OpenStack”, reperibile liberamente online https://openstax.org/details/books/introduction-python-programming (CC license)

Periodo di erogazione dell'insegnamento

Primo semestre

Modalità di verifica del profitto e valutazione

La modalità di verifica del profitto consiste nella presentazione di un progetto di gruppo con relazione finale, da discutere durante una prova orale, dove verranno inoltre verificate le competenze di programmazione e modellizzazione acquisite durante il corso. Non sono previste prove parziali, ma verranno lasciati degli esercizi settimanali che, se svolti e discussi correttamente all'esame, garantiranno da 1 a 3 punti in più sul voto finale.

Orario di ricevimento

Ogni giorno, possibilmente con richiesta di appuntamento via email

Sustainable Development Goals

ISTRUZIONE DI QUALITÁ
Export

Aims

This course aims to provide students with the fundamentals of programming and computational methods for physics. Students will learn how to model and simulate simple physical problems, make predictions, and analyze the results.

objectives according to Dublin Descriptors:
2. Applying knowledge and understanding
3. Making judgements
5. Learning skills

Contents

• Introduction to Bash and Bash scripts.
• Introduction programming, compiled vs inteprted languages. Pyhton and fundamental libraries: NumPy, SciPy, Matplotlib. Mention to symbolic calculus with SimPy.
• Basic notion about object-oriented programming and parallel computation
• Numerical methods: interpolation, approximation, root finding, differentiation, and integration.
• Linear algebra: basic matrix operations, linear systems, eigenvalue equations.
• Ordinary differential equations.
• Modelling simple physical problems: examples from classical mechanics.
• Gravitational dynamics of multi-body systems.
• Monte Carlo methods for simulations.

Detailed program

Part 1: Basics of Programming and Numerical Computing

Introduction to Bash: shell, Unix commands, creating and managing files and directories, environment variables, and aliases.
Creating and executing a Bash script, first steps in coding: variables, loops, conditions, functions.

Introduction to programming languages. Python, brief mention to C++; create and execute a code. Variable types and fundamental operations. Reading and writing files, defining functions, importing modules. Lists and list manipulations.
Specific Modules
NumPy: fundamental functions, pseudorandom numbers, multidimensional arrays.
Matplotlib: creating and manipulating images, 2D and 3D plotting.

Introduction to object-oriented programming in Python: classes, members, methods, inheritance.

Numerical methods for finding zeros: bisection, Newton’s method and extensions, secant method. Implementations in Python with SciPy.

Interpolation in one and two dimensions. Implementation with SciPy.

First and second derivatives using finite differences. Exact calculation with SymPy. scipy.misc.derivative.

Numerical methods for integration: rectangle method, trapezoidal rule, Cavalieri-Simpson’s formula, Gauss quadrature. Implementation with SciPy.integrate.

Operations with arrays and matrices: sums, differences, row-by-column multiplication. Solving linear systems, computing the determinant and inverse of a matrix. Diagonalization, computing eigenvalues and eigenvectors with NumPy.

Solving ordinary differential equations: Euler and Runge-Kutta methods. Boundary conditions and the Shooting method.

Part 2: Modelling and Simulation
Solving elementary physics problems using numerical methods:
• Kinematics of a material point: numerical derivation of trajectories in one, two, and three dimensions.
• Mechanics: equations of motion for the simple and damped pendulum.
• Double pendulum.
• Mechanical systems with friction.
• Rolling motion.

Modelling complex problems:
• Many-particle collisional systems (e.g., gas in a box and computation of physical observables such as temperature and pressure).
• Many-particle non-collisional systems: gravitational potential of a self-gravitating system.
• Computational time. introduction to parallel computing.

Introduction to Monte Carlo methods: historical background, Metropolis-Hastings algorithm. Numerical integration using Monte Carlo methods.

Prerequisites

Knowledge of basic Mathematics is required, elementary functions and algebraic calculus: equations, inequalities, trigonometry.

Teaching form

Lectures will be delivered both remotely, in asynchronous mode, for 28 hours, and in person for 20 hours. Each lesson includes a theoretical lecture component (30 hours) as well as a guided exercise session (18 hours).

Textbook and teaching resource

Lecture notes and codes examples provided gradually.
Suggested Textbook for Python programming: “Introduction to Python Programming by OpenStack”, reperibile liberamente online https://openstax.org/details/books/introduction-python-programming (CC license)

Semester

First semester

Assessment method

The assessment relies on presenting a group project with a final report, to be discussed during an oral exam, in order to evaluate the programming and modeling skills acquired during the course. No partial exams are planned, but weekly exercises will be assigned. If completed and discussed correctly during the exam, these exercises will grant an additional 1 to 3 points on the final grade.

Office hours

Every day with preferred requested appointment via email

Sustainable Development Goals

QUALITY EDUCATION
Enter

Key information

Field of research
ING-INF/05
ECTS
6
Term
First semester
Course Length (Hours)
48
Degree Course Type
Degree Course
Language
English

Staff

    Teacher

  • GC
    Gabriele Coppi
  • LP
    Lorenzo Pizzuti

Students' opinion

View previous A.Y. opinion

Bibliography

Find the books for this course in the Library

Enrolment methods

Manual enrolments
Self enrolment (Student)

Sustainable Development Goals

QUALITY EDUCATION - Ensure inclusive and equitable quality education and promote lifelong learning opportunities for all
QUALITY EDUCATION

You are not logged in. (Log in)
Policies
Get the mobile app
Powered by Moodle
© 2025 Università degli Studi di Milano-Bicocca
  • Privacy policy
  • Accessibility
  • Statistics