Вы находитесь на странице: 1из 47

Introduction

Our choice

Example Problem

Final slide :-)

Python + FEM
Introduction to SFE

Robert Cimrman
Department of Mechanics & New Technologies Research Centre University of West Bohemia Plze n, Czech Republic

April 3, 2007, Plze n

1/22

Introduction

Our choice

Example Problem

Final slide :-)

Outline
1

Introduction Programming Languages Programming Techniques Our choice Mixing Languages Best of Both Worlds Python Software Dependencies Example Problem Continuous Formulation Weak Formulation Problem Description File Final slide :-) 2/22

Introduction

Our choice

Example Problem

Final slide :-)

Programming Languages
1

compiled (fortran, C, C++, Java, . . . ) Cons


(often) complicated build process, recompile after any change low-level lots of lines to get basic stu done code size maintenance problems static!

Pros
speed, speed, speed, . . . , did I say speed? large code base (legacy codes), tradition

interpreted or scripting (sh, tcl, matlab, perl, ruby, python, . . . ) Cons


many are relatively new lack of speed, or even utterly slow!

Pros
no compiling (very) high-level a few of lines to get (complex) stu done code size easy maintenance dynamic! (often) large code base

3/22

Introduction

Our choice

Example Problem

Final slide :-)

Programming Languages
1

compiled (fortran, C, C++, Java, . . . ) Cons


(often) complicated build process, recompile after any change low-level lots of lines to get basic stu done code size maintenance problems static!

Pros
speed, speed, speed, . . . , did I say speed? large code base (legacy codes), tradition

interpreted or scripting (sh, tcl, matlab, perl, ruby, python, . . . ) Cons


many are relatively new lack of speed, or even utterly slow!

Pros
no compiling (very) high-level a few of lines to get (complex) stu done code size easy maintenance dynamic! (often) large code base

3/22

Introduction

Our choice

Example Problem

Final slide :-)

Programming Languages
1

compiled (fortran, C, C++, Java, . . . ) Cons


(often) complicated build process, recompile after any change low-level lots of lines to get basic stu done code size maintenance problems static!

Pros
speed, speed, speed, . . . , did I say speed? large code base (legacy codes), tradition

interpreted or scripting (sh, tcl, matlab, perl, ruby, python, . . . ) Cons


many are relatively new lack of speed, or even utterly slow!

Pros
no compiling (very) high-level a few of lines to get (complex) stu done code size easy maintenance dynamic! (often) large code base

3/22

Introduction

Our choice

Example Problem

Final slide :-)

Programming Languages
1

compiled (fortran, C, C++, Java, . . . ) Cons


(often) complicated build process, recompile after any change low-level lots of lines to get basic stu done code size maintenance problems static!

Pros
speed, speed, speed, . . . , did I say speed? large code base (legacy codes), tradition

interpreted or scripting (sh, tcl, matlab, perl, ruby, python, . . . ) Cons


many are relatively new lack of speed, or even utterly slow!

Pros
no compiling (very) high-level a few of lines to get (complex) stu done code size easy maintenance dynamic! (often) large code base

3/22

Introduction

Our choice

Example Problem

Final slide :-)

Programming Languages
1

compiled (fortran, C, C++, Java, . . . ) Cons


(often) complicated build process, recompile after any change low-level lots of lines to get basic stu done code size maintenance problems static!

Pros
speed, speed, speed, . . . , did I say speed? large code base (legacy codes), tradition

interpreted or scripting (sh, tcl, matlab, perl, ruby, python, . . . ) Cons


many are relatively new lack of speed, or even utterly slow!

Pros
no compiling (very) high-level a few of lines to get (complex) stu done code size easy maintenance dynamic! (often) large code base

3/22

Introduction

Our choice

Example Problem

Final slide :-)

Programming Languages
1

compiled (fortran, C, C++, Java, . . . ) Cons


(often) complicated build process, recompile after any change low-level lots of lines to get basic stu done code size maintenance problems static!

Pros
speed, speed, speed, . . . , did I say speed? large code base (legacy codes), tradition

interpreted or scripting (sh, tcl, matlab, perl, ruby, python, . . . ) Cons


many are relatively new lack of speed, or even utterly slow!

Pros
no compiling (very) high-level a few of lines to get (complex) stu done code size easy maintenance dynamic! (often) large code base

3/22

Introduction

Our choice

Example Problem

Final slide :-)

Example Python Code

4/22

Introduction

Our choice

Example Problem

Final slide :-)

Example C Code
c h a r s [ ] = s e l tudy , mel dudy . a s e l o p r a v d u t u d y . ; i n t s t r f i n d ( char s t r , char t g t ) { int tlen = s t r l e n ( tgt ); i n t max = s t r l e n ( s t r ) t l e n ; register int i ; f o r ( i = 0 ; i < max ; i ++) { i f ( s t r n c m p (& s t r [ i ] , t g t , t l e n ) == 0) return i ; } r e t u r n 1; } int i1 ; i 1 = s t r f i n d ( s , tudy ) ; p r i n t f ( %d \ n , i 1 ) ;

5/22

Introduction

Our choice

Example Problem

Final slide :-)

Programming Techniques
Random remarks: spaghetti code modular programming OOP design patterns (gang-of-four, GO4) post-OOP dynamic languages . . . all used, but I try to move down the list! :-)

6/22

Introduction

Our choice

Example Problem

Final slide :-)

Programming Techniques
Random remarks: spaghetti code modular programming OOP design patterns (gang-of-four, GO4) post-OOP dynamic languages . . . all used, but I try to move down the list! :-)

6/22

Introduction

Our choice

Example Problem

Final slide :-)

Mixing Languages Best of Both Worlds


Low level: C FE matrix evaluations costly mesh-related functions (listing faces, edges, surface generation, . . . ) ... can use also fortran

+
High level: Python www.python.org batteries included logic of the code conguration les! problem input les! 7/22

Introduction

Our choice

Example Problem

Final slide :-)

Mixing Languages Best of Both Worlds


Low level: C FE matrix evaluations costly mesh-related functions (listing faces, edges, surface generation, . . . ) ... can use also fortran

+
High level: Python www.python.org batteries included logic of the code conguration les! problem input les! 7/22

Introduction

Our choice

Example Problem

Final slide :-)

Python I
Python r is a dynamic object-oriented programming language that can be used for many kinds of software development. It oers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code.

...

batteries included

8/22

Introduction

Our choice

Example Problem

Final slide :-)

Python II
1.1.16 Why is it called Python? At the same time he began implementing Python, Guido van Rossum was also reading the published scripts from Monty Pythons Flying Circus (a BBC comedy series from the seventies, in the unlikely case you didnt know). It occurred to him that he needed a name that was short, unique, and slightly mysterious, so he decided to call the language Python. 1.1.17 Do I have to like Monty Pythons Flying Circus? No, but it helps. :) . . . General Python FAQ

9/22

Introduction

Our choice

Example Problem

Final slide :-)

Python III
NASA uses Python. . .

. . . so does Rackspace, Industrial Light and Magic, AstraZeneca, Honeywell, and many others.

http://wiki.python.org/moin/NumericAndScientic

10/22

Introduction

Our choice

Example Problem

Final slide :-)

Python III
NASA uses Python. . .

. . . so does Rackspace, Industrial Light and Magic, AstraZeneca, Honeywell, and many others.

http://wiki.python.org/moin/NumericAndScientic

10/22

Introduction

Our choice

Example Problem

Final slide :-)

Software Dependencies
1

libraries & modules SciPy: free (BSD license) collection of numerical computing libraries for Python
enables Matlab-like array/matrix manipulations and indexing

UMFPACK: very fast direct solver for sparse systems


Python wrappers are part of SciPy :-)

output les (results) and data les in HDF5:


general purpose library and le format for storing scientic data, ecient storage and I/O . . . via PyTables
2

misc: Pyparsing, Matplotlib tools SWIG: automatic generation of Python-C interface code Medit: simple mesh and data viewer ParaView: VTK-based advanced mesh and data viewer in Tcl/Tk MayaVi/MayaVi2: VTK-based advanced mesh and data viewer in Python

11/22

Introduction

Our choice

Example Problem

Final slide :-)

Software Dependencies
1

libraries & modules SciPy: free (BSD license) collection of numerical computing libraries for Python
enables Matlab-like array/matrix manipulations and indexing

UMFPACK: very fast direct solver for sparse systems


Python wrappers are part of SciPy :-)

output les (results) and data les in HDF5:


general purpose library and le format for storing scientic data, ecient storage and I/O . . . via PyTables
2

misc: Pyparsing, Matplotlib tools SWIG: automatic generation of Python-C interface code Medit: simple mesh and data viewer ParaView: VTK-based advanced mesh and data viewer in Tcl/Tk MayaVi/MayaVi2: VTK-based advanced mesh and data viewer in Python

11/22

Introduction

Our choice

Example Problem

Final slide :-)

Software Dependencies
1

libraries & modules SciPy: free (BSD license) collection of numerical computing libraries for Python
enables Matlab-like array/matrix manipulations and indexing

UMFPACK: very fast direct solver for sparse systems


Python wrappers are part of SciPy :-)

output les (results) and data les in HDF5:


general purpose library and le format for storing scientic data, ecient storage and I/O . . . via PyTables
2

misc: Pyparsing, Matplotlib tools SWIG: automatic generation of Python-C interface code Medit: simple mesh and data viewer ParaView: VTK-based advanced mesh and data viewer in Tcl/Tk MayaVi/MayaVi2: VTK-based advanced mesh and data viewer in Python

11/22

Introduction

Our choice

Example Problem

Final slide :-)

Software Dependencies
1

libraries & modules SciPy: free (BSD license) collection of numerical computing libraries for Python
enables Matlab-like array/matrix manipulations and indexing

UMFPACK: very fast direct solver for sparse systems


Python wrappers are part of SciPy :-)

output les (results) and data les in HDF5:


general purpose library and le format for storing scientic data, ecient storage and I/O . . . via PyTables
2

misc: Pyparsing, Matplotlib tools SWIG: automatic generation of Python-C interface code Medit: simple mesh and data viewer ParaView: VTK-based advanced mesh and data viewer in Tcl/Tk MayaVi/MayaVi2: VTK-based advanced mesh and data viewer in Python

11/22

Introduction

Our choice

Example Problem

Final slide :-)

Software Dependencies
1

libraries & modules SciPy: free (BSD license) collection of numerical computing libraries for Python
enables Matlab-like array/matrix manipulations and indexing

UMFPACK: very fast direct solver for sparse systems


Python wrappers are part of SciPy :-)

output les (results) and data les in HDF5:


general purpose library and le format for storing scientic data, ecient storage and I/O . . . via PyTables
2

misc: Pyparsing, Matplotlib tools SWIG: automatic generation of Python-C interface code Medit: simple mesh and data viewer ParaView: VTK-based advanced mesh and data viewer in Tcl/Tk MayaVi/MayaVi2: VTK-based advanced mesh and data viewer in Python

11/22

Introduction

Our choice

Example Problem

Final slide :-)

Software Dependencies
1

libraries & modules SciPy: free (BSD license) collection of numerical computing libraries for Python
enables Matlab-like array/matrix manipulations and indexing

UMFPACK: very fast direct solver for sparse systems


Python wrappers are part of SciPy :-)

output les (results) and data les in HDF5:


general purpose library and le format for storing scientic data, ecient storage and I/O . . . via PyTables
2

misc: Pyparsing, Matplotlib tools SWIG: automatic generation of Python-C interface code Medit: simple mesh and data viewer ParaView: VTK-based advanced mesh and data viewer in Tcl/Tk MayaVi/MayaVi2: VTK-based advanced mesh and data viewer in Python

11/22

Introduction

Our choice

Example Problem

Final slide :-)

Software Dependencies
1

libraries & modules SciPy: free (BSD license) collection of numerical computing libraries for Python
enables Matlab-like array/matrix manipulations and indexing

UMFPACK: very fast direct solver for sparse systems


Python wrappers are part of SciPy :-)

output les (results) and data les in HDF5:


general purpose library and le format for storing scientic data, ecient storage and I/O . . . via PyTables
2

misc: Pyparsing, Matplotlib tools SWIG: automatic generation of Python-C interface code Medit: simple mesh and data viewer ParaView: VTK-based advanced mesh and data viewer in Tcl/Tk MayaVi/MayaVi2: VTK-based advanced mesh and data viewer in Python

11/22

Introduction

Our choice

Example Problem

Final slide :-)

Shape Optimization in Incompressible Flow Problems


Objective Function (u ) 2 |u |2 min
c

(1)

minimize gradients of solution (e.g. losses) in c by moving design boundary perturbation of by vector eld V (t ) = + {t V (x )}x c \ where V = 0 in (2)

D in D D

C C out

12/22

Introduction

Our choice

Example Problem

Final slide :-)

Shape Optimization in Incompressible Flow Problems


Objective Function (u ) 2 |u |2 min
c

(1)

minimize gradients of solution (e.g. losses) in c by moving design boundary perturbation of by vector eld V (t ) = + {t V (x )}x c \ where V = 0 in (2)

D in D D

C C out

12/22

Introduction

Our choice

Example Problem

Final slide :-)

Shape Optimization in Incompressible Flow Problems


Objective Function (u ) 2 |u |2 min
c

(1)

minimize gradients of solution (e.g. losses) in c by moving design boundary perturbation of by vector eld V (t ) = + {t V (x )}x c \ where V = 0 in (2)

D in D D

C C out

12/22

Introduction

Our choice

Example Problem

Final slide :-)

Appetizer
ow and spline boxes, left: initial, right: nal

connectivity of spline boxes (6 boxes in dierent colours)

13/22

Introduction

Our choice

Example Problem

Final slide :-)

Continuous Formulation
laminar steady state incompressible Navier-Stokes equations 2 u + u u + p u boundary conditions u = u 0 on in u pn + = p n on out n u = 0 on walls adjoint equations for computing the adjoint solution w : 2 w + u w u w r = c 2 u in w = 0 in w = 0 on in walls and c is the characteristic function of c (6) = = 0 0 in in (3) (4)

(5)

14/22

Introduction

Our choice

Example Problem

Final slide :-)

Continuous Formulation
laminar steady state incompressible Navier-Stokes equations 2 u + u u + p u boundary conditions u = u 0 on in u pn + = p n on out n u = 0 on walls adjoint equations for computing the adjoint solution w : 2 w + u w u w r = c 2 u in w = 0 in w = 0 on in walls and c is the characteristic function of c (6) = = 0 0 in in (3) (4)

(5)

14/22

Introduction

Our choice

Example Problem

Final slide :-)

Weak Formulation
state problem: nd u, p (from suitable function spaces) such that v : u +

(u u ) v

p v =
out

p v n

v V0 ,

q u = 0 q Q

(7) adjoint equations: nd w, r (from suitable function spaces) such that v : w +


(v u ) w +

(u v ) w +

r v (8)

=
c

v : u

v V0 ,

q w = 0 q Q

+ proper BC . . .

15/22

Introduction

Our choice

Example Problem

Final slide :-)

Weak Formulation
state problem: nd u, p (from suitable function spaces) such that v : u +

(u u ) v

p v =
out

p v n

v V0 ,

q u = 0 q Q

(7) adjoint equations: nd w, r (from suitable function spaces) such that v : w +


(v u ) w +

(u v ) w +

r v (8)

=
c

v : u

v V0 ,

q w = 0 q Q

+ proper BC . . .

15/22

Introduction

Our choice

Example Problem

Final slide :-)

Weak Formulation
state problem: nd u, p (from suitable function spaces) such that v : u +

(u u ) v

p v =
out

p v n

v V0 ,

q u = 0 q Q

(7) adjoint equations: nd w, r (from suitable function spaces) such that v : w +


(v u ) w +

(u v ) w +

r v (8)

=
c

v : u

v V0 ,

q w = 0 q Q

+ proper BC . . .

15/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File I


a regular python le all python machinery is accessible! requires/recognizes several keywords to dene
mesh regions subdomains, boundaries, characteristic functions, . . . boundary conditions Dirichlet elds eld approximation per subdomain variables unknown elds, test elds, parameters equations materials constitutive relations, e.g. newton uid, elastic solid, . . . solver parameters nonlinear solver, ow solver, optimization solver, . . . ...

16/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File I


a regular python le all python machinery is accessible! requires/recognizes several keywords to dene
mesh regions subdomains, boundaries, characteristic functions, . . . boundary conditions Dirichlet elds eld approximation per subdomain variables unknown elds, test elds, parameters equations materials constitutive relations, e.g. newton uid, elastic solid, . . . solver parameters nonlinear solver, ow solver, optimization solver, . . . ...

16/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File II


mesh
f i l e N a m e m e s h = s i m p l e . mesh

regions
region 1000 = { name : Omega , s e l e c t : elements of group 6 , } region 0 = { name : W a l l s , s e l e c t : n o d e s o f s u r f a c e n r . O u t l e t , } region 1 = { name : I n l e t , s e l e c t : n o d e s by c i n c ( x , y , z , 0 ) , } region 2 = { name : O u t l e t , s e l e c t : n o d e s by c i n c ( x , y , z , 1 ) , } region 100 = { name : Omega C , # C o n t r o l domain . s e l e c t : n o d e s i n ( x > 25.9999 e 3) & ( x < 18.990 e 3) , } region 101 = { name : Omega D , # D e s i g n domain . s e l e c t : a l l e r . Omega C , }

17/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File III


elds
field 1 = { name : 3 v e l o c i t y , dim : ( 3 , 1 ) , f l a g s : ( BQP , ) , b a s e s : ( ( Omega , 3 4 P1B ) , ) } field 2 = { name : p r e s s u r e , dim : ( 1 , 1 ) , flags : ( ) , b a s e s : ( ( Omega , 3 4 P1 ) , ) }

variables
variables u w 0 w v p r q Nu } = : : : : : : : : { ( ( ( ( ( ( ( ( field field field field field field field field , , , , , , , , parameter , 3 v e l o c i t y , ( 3 , 4 , 5 ) ) , parameter , 3 v e l o c i t y , ( 3 , 4 , 5 ) ) , unknown , 3 v e l o c i t y , ( 3 , 4 , 5 ) , 0 ) , test , 3 v e l o c i t y , ( 3 , 4 , 5 ) , w ) , parameter , p r e s s u r e , ( 9 , ) ) , unknown , p r e s s u r e , ( 9 , ) , 1 ) , test , pressure , (9 ,) , r ) , meshVelocity , pressure , ( 9 , ) ) ,

18/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File III


elds
field 1 = { name : 3 v e l o c i t y , dim : ( 3 , 1 ) , f l a g s : ( BQP , ) , b a s e s : ( ( Omega , 3 4 P1B ) , ) } field 2 = { name : p r e s s u r e , dim : ( 1 , 1 ) , flags : ( ) , b a s e s : ( ( Omega , 3 4 P1 ) , ) }

variables
variables u w 0 w v p r q Nu } = : : : : : : : : { ( ( ( ( ( ( ( ( field field field field field field field field , , , , , , , , parameter , 3 v e l o c i t y , ( 3 , 4 , 5 ) ) , parameter , 3 v e l o c i t y , ( 3 , 4 , 5 ) ) , unknown , 3 v e l o c i t y , ( 3 , 4 , 5 ) , 0 ) , test , 3 v e l o c i t y , ( 3 , 4 , 5 ) , w ) , parameter , p r e s s u r e , ( 9 , ) ) , unknown , p r e s s u r e , ( 9 , ) , 1 ) , test , pressure , (9 ,) , r ) , meshVelocity , pressure , ( 9 , ) ) ,

18/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File IV


Dirichlet BC
ebc = { Walls : ( ( Walls , ( 3 , 4 , 5 ) , 0 . 0 ) , ) , Inlet : (( VelocityInlet x , (4 ,) , 1.0) , ( VelocityInlet yz , (3 ,5) , 0.0)) , }

state equations (compare with (7))


equations = { balance : + d w d i v g r a d . Omega ( f l u i d , v , w ) + d w c o n v e c t . Omega ( v , w ) d w g r a d . Omega ( v , r ) = d w s u r f a c e l t r . Outlet ( bpress , v ) , incompressibility : d w d i v . Omega ( q , w ) = 0 , }

19/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File IV


Dirichlet BC
ebc = { Walls : ( ( Walls , ( 3 , 4 , 5 ) , 0 . 0 ) , ) , Inlet : (( VelocityInlet x , (4 ,) , 1.0) , ( VelocityInlet yz , (3 ,5) , 0.0)) , }

state equations (compare with (7))


equations = { balance : + d w d i v g r a d . Omega ( f l u i d , v , w ) + d w c o n v e c t . Omega ( v , w ) d w g r a d . Omega ( v , r ) = d w s u r f a c e l t r . Outlet ( bpress , v ) , incompressibility : d w d i v . Omega ( q , w ) = 0 , }

19/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File V


adjoint equations (compare with (8))
equations adjoint = { balance : + d w d i v g r a d . Omega ( f l u i d , v , w ) + d w a d j c o n v e c t 1 . Omega ( v , w , u ) + d w a d j c o n v e c t 2 . Omega ( v , w , u ) + d w g r a d . Omega ( v , r ) = d w a d j d i v g r a d 2 . Omega C ( one , f l u i d , v , u ) , incompressibility : d w d i v . Omega ( q , w ) = 0 , }

materials
material 2 = { name : f l u i d , mode : h e r e , r e g i o n : Omega , v i s c o s i t y : 1 . 2 5 e 1, } material 100 = { name : b p r e s s , mode : h e r e , r e g i o n : Omega , val : 0.0 , }

20/22

Introduction

Our choice

Example Problem

Final slide :-)

Problem Description File V


adjoint equations (compare with (8))
equations adjoint = { balance : + d w d i v g r a d . Omega ( f l u i d , v , w ) + d w a d j c o n v e c t 1 . Omega ( v , w , u ) + d w a d j c o n v e c t 2 . Omega ( v , w , u ) + d w g r a d . Omega ( v , r ) = d w a d j d i v g r a d 2 . Omega C ( one , f l u i d , v , u ) , incompressibility : d w d i v . Omega ( q , w ) = 0 , }

materials
material 2 = { name : f l u i d , mode : h e r e , r e g i o n : Omega , v i s c o s i t y : 1 . 2 5 e 1, } material 100 = { name : b p r e s s , mode : h e r e , r e g i o n : Omega , val : 0.0 , }

20/22

Introduction

Our choice

Example Problem

Final slide :-)

Yes, the nal slide!


What is done basic FE element engine
approximations up to P2 on simplexes (possibly with bubble) Q1 tensor-product approximation on rectangles

What is not done general FE engine, with symbolic evaluation (` a la SyFi - merge it?) documentation, unit tests organization of solvers
fast problem-specic solvers

handling of elds and variables


boundary conditions, DOF handling

parallelization of both assembling and solving


use PETSC?

FE assembling equations, terms, regions materials, material caches generic solvers (Newton iteration, direct linear system solution)

What will not be done (?) GUI real symbolic parsing/evaluation of equations 21/22

Introduction

Our choice

Example Problem

Final slide :-)

Yes, the nal slide!


What is done basic FE element engine
approximations up to P2 on simplexes (possibly with bubble) Q1 tensor-product approximation on rectangles

What is not done general FE engine, with symbolic evaluation (` a la SyFi - merge it?) documentation, unit tests organization of solvers
fast problem-specic solvers

handling of elds and variables


boundary conditions, DOF handling

parallelization of both assembling and solving


use PETSC?

FE assembling equations, terms, regions materials, material caches generic solvers (Newton iteration, direct linear system solution)

What will not be done (?) GUI real symbolic parsing/evaluation of equations 21/22

Introduction

Our choice

Example Problem

Final slide :-)

Yes, the nal slide!


What is done basic FE element engine
approximations up to P2 on simplexes (possibly with bubble) Q1 tensor-product approximation on rectangles

What is not done general FE engine, with symbolic evaluation (` a la SyFi - merge it?) documentation, unit tests organization of solvers
fast problem-specic solvers

handling of elds and variables


boundary conditions, DOF handling

parallelization of both assembling and solving


use PETSC?

FE assembling equations, terms, regions materials, material caches generic solvers (Newton iteration, direct linear system solution)

What will not be done (?) GUI real symbolic parsing/evaluation of equations 21/22

Introduction

Our choice

Example Problem

Final slide :-)

This is not a slide!

22/22

Вам также может понравиться