On Sat, Aug 15, 2020, 11:20 AM Stephen J. Turnbull <
turnbull.stephen...@u.tsukuba.ac.jp> wrote:

> Ricky Teachey writes:
>
>  > Well keep in mind that generally an engineer submits calculations-- not
>  > code-- to be reviewed. This leaves me with a few options:
>
> [...]
>
>  > Hiding the portion of code that looks too much like programming (and not
>  > enough like equations) takes some time, but if I do not do this it will
>  > inevitably lead to a 40 minute phone call [...].
>
> Ah, I misinterpreted your statement that engineers don't much use
> linear algebra.  You *do* use it for *presentation*, but it's not very
> useful in the programming that gets your results.
>


Yes I'd say this is generally true most of the time. There are certainly
instances where I've needed to used matrices to solve a system of equations
in an automated way. But most of time it's simply not needed, and if I do
need to do it, I can always use Mathcad.

General comment: a lot of my "I wish" thoughts regarding python syntax have
to do with the idea that code could look more like handwritten mathematical
calculations. But I recognize that a balance has to be maintained.



> > Furthermore, the same NYDoT reviewer might come back and say:
>  >
>  > *"Rejected: calculation does not take into account change in friction
> angle
>  > with depth."*
>  >
>  > The official would be saying that friction (μ_s) is not a scalar, it
> should
>  > be another array variable, because the soils apply different friction
> along
>  > the shaft depth.
>
> I don't think Steven's proposed matrix class can substitute for numpy
> in general.  It will work for your case because '*' can be both scalar
> multiplication and matrix multiplication.  That is, the scalar μ_s
> (float, I presume?) doesn't know how to self.__mul__(q_s), but
> q_s.__rmul__(μ_s) works fine.  Then tmp.__mul__(C_shaft) (C_shaft a
> scalar or a vector of the same length) works.  But if you have *two*
> variables, and the reviewer claims they have different (scalar)
> coefficients, you're going to need numpy-style broadcasting.
>

I actually started trying to write a proof of concept for this last night.
I'm sure it will be far far less usable and correct then Steven's but if I
get it working I'll share it just for comparison of ideas.


 > >>>  γ_per_ft = matrix( [120, 122, 118, 117] )
>  > >>> print(f"{γ_per_ft=:.0f} pcf")
>  > (120, 122, 118, 117) pcf
>  >
>  > The idea here is that python knows the datatype of  γ_per_ft is float,
> so
>  > it can format all the members of the array *one at a time*.
>
> I think all you need to do is provide an appropriate __format__ method
> on matrix objects.  That method will have access to the format spec
> (ie, everything after the colon), and if there isn't a parser you can
> just import, I'm sure there are plenty you can copy.  At least for
> this case you can just apply it to the individual elements.
>
> It's not obvious to me that elementwise is the "right" way to
> implement matrix.__format__ (there may be "matrix-level" formatting
> that takes precedence, for example how to treat rows wider than the
> page width), but it's quite plausible.  Of course you can also derive
> a simple subclass with elementwise __format__.
>


I'm going to try to solve this with my toy implementation, too. If it get
it working I'll be sure to pass it along for comment.

>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/ZWCHWUROLQOP3QRW5KWIHF5GNPGP2TIQ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to