aboutsummaryrefslogtreecommitdiffstats
path: root/docs/tutorials.rst
blob: a2e1b2033d0579a4d075db5ccfad8c0d10c8d9f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Tutorials
=========

Quickstart
----------

For the impatient, here is a very quick overview.

.. code:: py

        from mdpoly import State, Variable, Parameter
        from mdpoly.representations import SparseRepr

        # Construct an expression
        x, y = Variable.from_names("x, y") # or just Variable("x")
        k = Parameter("k")

        p = (x + 2 * y) ** 3 + y ** 2 + k
        print(f"{p = }")

        # Make a concrete representation
        state = State(parameters={k: 3.14}) # try to replace with empty dict
        sparse, state = p.to_repr(SparseRepr, state)

        # Look inside the representation
        for entry in sparse.entries():
            print(f"at (row, col) = {entry.row, entry.col} there is a polynomial:")
            for term in sparse.terms(entry):
                monomial_str = ""
                for idx in term:
                    var = state.from_index(idx.var_idx)
                    monomial_str += f"{var.name}^{idx.power} "

                # Get the coefficient
                coeff = sparse.at(entry, term)
                print(" - the monomial", monomial_str, "has coefficient", coeff)

        # You can also simply iterate over it
        for entry, term, coeff in sparse:
            print(entry, term, coeff)