text:
# Find the directional derivative of f at the given point in the direction indicated by the angle theta. f(x,y)=ye^{-x}, (0,4), \theta=\frac{2\pi}{3}

Find the directional derivative of f at the given point in the direction indicated by the angle theta. $f\left(x,y\right)=y{e}^{-x},\left(0,4\right),\theta =\frac{2\pi }{3}$
You can still ask an expert for help

• Questions are typically answered in as fast as 30 minutes

Solve your problem for the price of one coffee

• Math expert for every subject
• Pay only if we can solve it

rogreenhoxa8


text:
# Scientific Notation

There are many strategies to convert numbers into scientific notation and to reverse the process. The results are always the same. One strategy is provided in this module.

A number written in scientific notation is written as a number between $1$ and $10$ multiplied by a power of $10$.

To convert numbers into scientific notation:

1. Move the decimal point until there is one (non-zero) number in front of the decimal point.
2. The exponent of the power of 10 is determined by the number of places you have moved the decimal point.
1. If the original number is large, you have moved the decimal point to the left, and the number of places you moved the decimal point is the exponent of the power of 10.
2. If the original number is small, you have moved the decimal point to the right, and the exponent of the power of 10 is the negative integer of the number of places you moved the decimal point.
3. Put the number in the correct pattern for scientific notation.
##### Example 1

Write the number $624000$ in scientific notation.

1. After moving the decimal point, so the number has one digit in front of the decimal point, the number is $6.24$ (this number is between $1$ and $10$).
2. The decimal point has been moved $5$ places to the left so the exponent of the power of $10$ is $5$.
3. The number in scientific notation is $6.24\times 10^5$
##### Example 2

Write $0.000009205$ in scientific notation.

1. After moving the decimal point, so the number has one digit in front of the decimal point, the number is $9.205$ (this number is between $1$ and $10$).
2. The decimal point has been moved $6$ places to the right so the exponent of the power of $10$ is $-6$.
3. The number in scientific notation is $9.205\times 10^{-6}$.

Convert the following numbers to scientific notation. Write your answer so it would appear as $\text{Number}\times 10^{\text{Index}}$.

 Number Number          Index $3782000$ $0.000059$ $0.0004052$ $73060000$

To write numbers without scientific notation we use the reverse process to that used to convert into scientific notation.

The steps are:

1. Start with the number between $1$ and $10$.
2. Move the decimal point, the number of places moved is the exponent of $10$.
1. If the exponent is positive move the decimal point to the right.
2. If the exponent is negative move the decimal point to the left.
##### Example 1

Write $7.53\times 10^7$ without scientific notation.

$$7.53\times 10^7 = 75300000.$$

##### Example 2

Write $3.276\times 10^{-9}$ without scientific notation.

$$3.726\times 10^{-9}=0.000000003726.$$

Write the following numbers without scientific notation.
 $6.4 \times 10^4=$ $1.8 \times 10^{-6}=$ $4.07 \times 10^{-9}=$ $9.006\times 10^9=$

format: plain


text:
## A community for students. Sign up today

Here's the question you clicked on:

## Knockknock one year ago Consider the function represented by the equation 1/2j+1/4k=3.Which shows the equation written in function notation with j as the independent variable

• This Question is Closed
1. anonymous

If j is the independent variable, you need to solve the equation for k.

2. anonymous

Is it just the 2 and 4 in the denominator, or are the j and k there too?

3. knockknock

I can give you the 4 options for it. F(j)=-2j+12 F(j)=-1/2j+6 F(k)=-2k+12 F(k)=-1/2k+6

4. anonymous

No, I meant what is the original equation? Which of these?$\frac{ 1 }{ 2 }j+\frac{ 1 }{ 4 }k=3$$\frac{ 1 }{ 2j }+\frac{ 1 }{ 4k }=3$

5. knockknock

My mistake it's the first one that you have (I can't write my equations like that for some reason)

6. knockknock

I just want to know how to start solving it so I can find out the answer

7. anonymous

Multiply by 4 to clear the fractions

8. anonymous

because it's the least common denominator

9. anonymous

|dw:1434732715187:dw|

10. anonymous

So solve that for k

11. knockknock

I got j=3/2 k=3 kinda lost on how to do this

12. anonymous

You're trying to get k by itself on one side of the equation. On the left side you have 2j added to k. So you need to subtract 2j from both sides to get k by itself

13. knockknock

Ohh okay now I have k=-2j+3

14. anonymous

right

15. anonymous

and to put it in function notation, just write k as k(j)

16. knockknock

Okay thanks :)

17. anonymous

actually you forgot to multiply the 4 and 3 on the right, so -2j+12

18. anonymous

@Knockknock

19. knockknock

Okay

20. knockknock

And j is the independent variable so would that mean it's -2j or -2k

21. knockknock

@peachpi

22. anonymous

it's -2j. k = f(j) = -2j +12

#### Ask your own question

Sign Up
Find more explanations on OpenStudy
Privacy Policy


text:
# Class 00: Installing R

In class, you will be using the lab computers to work with the R programming language. I strongly suggest that you also setup R on your own machine for working with the homework and data reports. R is an open source programming language, meaning that you can install it for free on nearly any operating system. The note here guide you through install the core R system, the RStudio IDE, and relevant R packages.

The first step is to download the R programming language. To do this go to https://cran.r-project.org/ and select your platform:

For Windows, first select base

One you have the .pkg (macOS) or .exe (Windows) file, install this on your computer according to the default settings.

## RStudio

The files we just downloaded are the core R language files doing all the hard work of processing data. Next, we’ll install a helpful GUI frontend that make calling R easier.

Go to https://www.rstudio.com/. Click on Products => RStudio.

Scroll down to the DOWNLOAD RSTUDIO DESKTOP button and click on it.

Scroll down again to the Installers for Supported Platforms. The Windows link gives you an exe:

And the macOS link gives a dmg:

Now, install R or RStudio as you would any other program. It should link automatically to the version of R you just installed.

## Installing R packages

The final step is to download all of the R packages that we will need for the semester. It is generally easier to do these all at once rather than as we go along.

Go ahead and launch RStudio. You should see a window that looks like this, as we saw on the class computers:

To install the packages required for class, run the following lines of code in the console. There may be a warning about one or two packages not being available. Note that this may take 5-10 minutes to finish; on slower connections or older computers, it may take even longer. If you run into any problems, please let me know!

Now, you will also need install the smodels package. I have written this package for this course, so you need to install it in a slightly different way.

Finally, make the following changes in the RStudio IDE. These are very important, so don’t skip this step:

• In the RStudio menu click on Tools > Global Options...
• Look for the first drop-down: Save the workspace to .RData on exit
• Change this first drop-down to Never
• All of the check-boxes above this dropdown should be unchecked.

And that should be it! You now have the same system running on your machine that we have in class. If you run into any issues, please let me know. It is likely that I will need to see your computer to help, so bring your laptop to class or office hours and I will help get you setup.


text:
# How to Solve $y'(x)=x\ln(y(x))$ with $y(1)=1$ using DSolve

The solution to $$y'=x \ln(y)$$ with initial conditions $$y(1)=1$$ is $$y=1$$.

How to persuade DSolve to obtain this solution?

ClearAll[y, x];
ode = y'[x] == x Log[y[x]];
ic = y[1] == 1;
sol = DSolve[{ode, ic}, y[x], x]

One can see that $$y=1$$ is solution that also satisfies the ic by looking at direction field.

ClearAll[x, y];
fTerm = x Log[y];
StreamPlot[ {1, fTerm}, {x, -1, 3}, {y, 0, 2},
Axes -> True,
Frame -> False,
PlotTheme -> "Classic",
AspectRatio -> 1 / GoldenRatio,
StreamPoints -> {{{{1, 1}, Red}, Automatic}},
Epilog -> {{Red, PointSize[.025], Point[{1, 1}]}},
PlotLabel -> Style[Text[Row
[{"Solution curve with initial conditions at {", 1, ",", 1,"}"}]], 14]
]

V 12.0 on windows 10

• The function y[x]=1 is a singular solution of the ODE under consideration which cannot be obtained from its general solution y[x]->(LogIntegral^(-1))[x^2/2+Subscript[[ConstantC], 1]] produced by DSolve[y'[x] == x Log[y[x]], y[x], x]. Every soft has its limitations. – user64494 Sep 2 '19 at 12:01
• It's the limit of the general solution as C[1] -> -Infinity, but M does not seem to be very robust with respect to the inverse function of LogIntegral[]. Related: mathematica.stackexchange.com/questions/57910/… – Michael E2 Sep 2 '19 at 12:26
• @Michael E2: it's unclear whether the limit of the general solution as C[1] -> -Infinity is a solution of the ODE under consideration. This should be based. I don't think the proff is simple. In any case that limit is not a particular solution. – user64494 Sep 2 '19 at 13:40
• @user64494 Pointwise convergence seems pretty clear to me. Just think about it. – Michael E2 Sep 2 '19 at 13:50
• @user64494 Yes, so do I, but I would not want to deprive you of the pleasure of figuring it out. – Michael E2 Sep 2 '19 at 13:59

AsymptoticDSolveValue (introduced in V11.3) seems to be more robust than DSolve here and confirms (or at least not falsifies) the solution you want (as @MichaelE2 points out we cannot really get a rigorous solution from a finite series expansion this way):

AsymptoticDSolveValue[
{y'[x] == x Log[y[x]], y[0] == 1},
y[x], {x, 0, (*arbitrarily high finite order*) 10}
]

1

or to see how this works we can get the series expression in x before taking the limit $$x\to 0$$

AsymptoticDSolveValue[
{y'[x] == x Log[y[x]], y[0] == y0},
y[x], {x, 0, 2}
]
Limit[Evaluate[%], y0 -> 1]

y0 + 1/2 x^2 Log[y0]

1

• I think there's a problem claiming this shows y[x] == 1 is a solution, when you've used only finitely many terms of the series. – Michael E2 Sep 2 '19 at 12:55
• @MichaelE2 You're totally right, this kind of solution is very hand-wavy and should not be seen as a substitute for a rigorous proof, but more seen as an engineering technique to make the solution that we already suspected more plausible. – Thies Heidecke Sep 2 '19 at 12:59
• plus usually solutions like y[x] == 1 here is theoretically easy to check but numerically unstable. – yshk Sep 2 '19 at 15:24


text:
the_nu_wgv

# Differences

This shows you the differences between two versions of the page.

 the_nu_wgv [2014/06/09 16:53]gastis created the_nu_wgv [2014/07/01 14:24]vassh 2014/07/01 14:24 vassh 2014/07/01 14:24 vassh 2014/06/18 19:08 willcox 2014/06/18 19:08 willcox 2014/06/18 19:07 willcox 2014/06/18 15:46 cyburt 2014/06/09 16:56 gastis created2014/06/09 16:53 gastis removed2014/06/09 16:53 gastis created Next revision Previous revision 2014/07/01 14:24 vassh 2014/07/01 14:24 vassh 2014/06/18 19:08 willcox 2014/06/18 19:08 willcox 2014/06/18 19:07 willcox 2014/06/18 15:46 cyburt 2014/06/09 16:56 gastis created2014/06/09 16:53 gastis removed2014/06/09 16:53 gastis created Line 1: Line 1: - * [[Don Willcox]] + ===== The $\nu$ WGV Group Members ===== - * [[Nicole Vassh]] + - * [[Panos Gastis]] + * Don Willcox (code/parameters) + * Nicole Vassh (parameters/analysis) + * Panos Gastis (code/analysis) + + ===== Project Goal ===== + + To examine the effect of the neutrino magnetic moment on the primordial abundances. This will be done by considering the magnetic moment as a free parameter (presumably larger than the standard model prediction). This additional magnetic moment coupling will then keep the neutrinos coupled to the electrons past the traditional $\sim 1$ MeV temperature. Here we preliminarily consider the effect on primordial abundances when the magnetic pair-production process $e^{+}+e^{-}\leftrightarrow \nu +\bar{\nu}$ is included into the big bang nucleosynthesis code of F. Timmes. + + ===== Decoupling Temperature Calculation ===== + + + We would like to find the decoupling temperature, such that: + $$\Gamma= G_F^2T^5 + \mu_\nu^2T^3 \sim H = \frac{T^2}{M_{pl}}$$ + + Let's replace with some more illustrative constants: + $$\Gamma = \frac{T^5}{M_W^4} + g_\nu^2\frac{T^3}{m_p^2} \sim H = \frac{T^2}{M_{pl}}$$ + + For $g_\nu\equiv 0$, we have: + $$T_0^3 = \frac{M_W^4}{M_{pl}}$$ + + We can use this to rewrite the cubic equation, in dimensionless form: + $$\left(\frac{T}{T_0}\right)^3 = 1 - g_\nu^2 \frac{M_{pl}^{2/3}M_W^{4/3}}{m_p^2}\frac{T}{T_0}$$ + + We can see that the last term is of order unity when $g_\nu\sim \frac{m_p}{M_{pl}^{1/3}M_W^{2/3}}\sim 10^{-8}$, allowing us to rewrite the equation as: + $$\left(\frac{T}{T_0}\right)^3 = 1 - \left(\frac{g_\nu}{10^{-8}}\right)^2 \frac{T}{T_0}$$ + + ===== Preliminary Results and Presentation ===== + + {{:bbnnmm.pdf|}} + + ===== Revised Results and Conclusions ===== + + {{:nmmabundtalent.pdf|}} + + + ===== Source Code on Git Repository ===== + + * [[https://github.com/dwillcox/bbn-numu]]


text:
# Axiomatic Dimension Theory

While reading Eisenbud's book in introductory commutative algebra, at the start of the chapter on dimension theory, he introduces several axioms for dimension theory, and heuristics as to why they are reasonable axioms. These axioms are:

D1) Dimension is a local property in the sense that the dimension of a ring should be the supermum of the dimensions of the localizations of $R$ at prime ideals, and that completing this localization should preserve dimension.

D2) That nilpotents should not effect dimension in the sense that the dimension of the ring before and after quotienting by a nilpotent ideal should be the same.

D3) Dimension is preserved by maps with finite fibers.

D4) If $k$ is a field, then the dimension of the formal power series ring over $k$ in $r$ variables should have dimension $r$.

Eisenbud explains that these 4 axioms characterize the Krull dimension in the case of Noetherian rings.

He then goes on to give several other notions of dimension, and explain when they coincide and when they do not, as well as provide geometric intuition for them.

This is all well and good, and I find the geometric intuition helpful. On the other hand, the many different theories are a lot to swallow all at once, and there are many notions that follow. I think it would help me to have an overarching system that I can construct these notions within, an axiomatized treatment of dimension theory in commutative algebra which I could read in parallel, since Eisenbud does a pretty good job giving me the intuition I need to understand what's going on.

This would be especially helpful because I imagine that the situation is not unlike what happens in homology theory in topology. There is a class of spaces you can study with some homology theory, and when you work outside that kind of space or theory, some of the axioms needs to be weakened, replaced or just dropped, leading to exotic theories. For me, having this spelled out helps me to stay mentally organized, and keeps me from confusing notions and theories. As such, a treatment of dimension theory in commutative algebra which does this would be absolutely wonderful.

Part of me is suspicious that a good chunk of what I'm looking for belongs to algebraic geometry - the notion of dimensions being tied up intrinsically with the varieties these objects correspond to. I've seen some introductory algebraic geometry in Shafarevich, so I don't mind looking around at some other references, but I'm trying to stay away from behemoths like Hartshorne until I understand some of these notions better. Either way, for this reason I've included the AG tag.

• you are acting like commutative algebra is so different from algebraic geometry, while the former is nothing but a subfield of the latter. – Rüdiger Apr 2 '17 at 15:43
• Well certainly commutative algebra can be divorced from it's geometric interpretations, but I'm not sure why anyone would want to do this. I don't mean to imply they are completely different fields. – Alfred Yerger Apr 2 '17 at 16:10

I hope this isn't too late for an answer, but I found something close to what you are looking for:

http://math.uchicago.edu/~amathew/chdimension.pdf

This source provides several notions of dimension, but also an axiomitization (see 2.2), so that you can go through checking each new definition satisfies the axioms.

In section 2.2 (this occurs after they introduce the hilbert polynomial- I was afraid that would not be your preference), this text characterized the dimension as the unique function on isomorphism classes of rings to $$\mathbb{Z}$$ such that:

1. $$\text{dim}(A) = \text{sup}_{p \text{ a minimal prime}} \text{dim}( A /p)$$. This reduces to the case of domains.

2. $$\text{dim}(K) = 0$$ for a field $$K$$.

3. If $$A$$ is a domain, and $$x$$ is a nonzerodivisor in $$A$$, then $$\text{dim}(A/xA) = \text{dim}(A) - 1$$.

These three properties uniquely characterize the dimension.

Also, a related notion to dimension is the length of a module. It is used in the study of dimension for rings. Here is a characterization of it: Let $$K$$ be an artinian ring, and let $$C$$ be the category of noetherian $$K$$-modules. This is the setting in which length is most often considered (recall that a module has finite length if and only if it is noetherian and artinian, so this is still quite a general setting). Let $$\text{iso}(C)$$ be the set of isomorphism classes of $$K$$. An additive function is a map $$\phi$$ from $$\text{iso}(C)$$ to an abelian group $$A$$ such that $$\phi(N) - \phi(M) + \phi(L) = 0$$ for an exact sequence $$0 \rightarrow N \rightarrow M \rightarrow L \rightarrow 0$$. The length is the universal additive function on $$C$$. The target of the length function is $$\mathbb{Z}$$, and this is known as the grothendieck group of $$C$$.

As I hinted at, the length provides a basic tool for the more complex dimension theory of rings. Intuitively, if $$M$$ is a $$k$$-module over an artinian ring $$k$$, then we want the symmetric algebra $$S (M)$$ of $$M$$ over $$k$$ to have "ring" dimension (krull dimension) equal to the "module" dimension (length) of $$M$$ over $$k$$, which is true.

Also, see here for a similar question:

https://mathoverflow.net/questions/80708/is-there-an-axiomatic-approach-of-the-notion-of-dimension

• This looks very promising. I'll take a look tomorrow and probably accept :) – Alfred Yerger Feb 19 at 5:09


text:
Deepak Mehta is a man out of time. He wanted to be born a few decades earlier, before the advent of the computer, when times were simpler and people were more content. Unfortunately, he wasn't. So, to compete in today's time, he has equipped himself with 2 degrees - one each from BITS Pilani and IIM Ahmedabad. He cracked CAT with a 100 percentile score. In his spare time, he likes to write on random website on random topics and for random people.

Myth 1: Freshers/People with significant work-ex are at a disadvantage

Nope. Each has its own advantages and drawbacks. Some companies which come for a senior profile like a project manager or team leader will prefer someone with a 4+ year of work experience. Consulting + Fin firms are mostly neutral. Sales and Marketing firms might give a slight preference to freshers. General management firms to experienced people. The gist being, there are enough opportunities for everyone. There is no hard discrimination for or against any said profile.

Myth 2: An MBA guarantees good placements, satisfaction and success in professional life

While doing an MBA from one of the best colleges does indeed guarantee good placements, far from the majority of people land their dream jobs. Since the placement process is run over a week or so with 100s of firms and 300+ students, it is mostly a game of taking the best first option. In mid-tier colleges, even placements are not assured. So it is going to be another race, just like life is. I know a lot of batchmates of mine who have already quit their first jobs. Nothing is guaranteed in life.

Myth 3: Doing an MBA entails losing out on work-life balance

Depends on the candidate. If you want a high paying job and are fine with working 14 - 16 hours a day/6 days a week, welcome to the world of investment banking/consulting. If you aren't ready for it, you can opt not to apply to such firms. Colleges usually have a extensive repository of feedback from alumni on the quality of work and life at various firms, so you can make an informed choice.

Myth 4: All MBAs are equal

At the risk of sounding obnoxious, they aren't. There are many hundred MBA colleges in India. But only the top 15-20 will be recognized and respected in the industry.

Myth 5: You need to be an excellent public orator to get into a good B-school

While it would be a desirable trait, it isn't an elimination criteria. People generally tend to develop such qualities over time during the course. I still can't stand in front of a crowd. But in case of an official pitch or presentation, I can practice enough to sell.

Myth 6: You can dictate what you want in the corporate world if you have an MBA

No one cares. When you start working in a firm, you will have subject matter experts, tech geniuses, people with 20+ years of experience on you. No one would give a damn about you or what you think when you start. Like everyone, you need to start at the bottom. All an MBA gives you is a good understanding of the corporate world, a basic minimum survival skill set.

Myth 7: B-school rankings

B school rankings are not sacrosanct. If you want to get an true picture of the institute, talk to people who have studies there to get a frank opinion.

Myth 8: I can't do an MBA; I don't have the money

While the cost of doing an MBA has been on a steep uphill in the past few years, it is still affordable even for the average Indian. There are a whole host of banks ready to shell out 15-20 lacs of loans without any collateral to students. The same can be paid off at a comfortable pace in 7 years after graduation.

Myth 9: There is no discrimination against non-engineers

There is. The entire selection process, though probably unintentionally, is skewed to give an edge to engineers. The topics in the entrance exams are math-oriented. There is no normalization for scores in 10th, 12th and UG giving engineers an edge as it is easier to get 70-80+ in maths and related engineering branches than it is for someone pursuing law, medicine, arts, humanities. So next time you complain about the extra marks given for academic diversity, DON'T.

Myth 10: Placement stats of various colleges are sacrosanct

Again, there are no rules while presenting the placement stats. They are easily manipulated and presented in a manner to appeal to the public. One thing you need to keep in mind while looking at stats is that they can be easily altered in the way they are presented, to a large degree, to suit the needs of anyone. When I say altered, I am not saying that the stats are false. All I am saying is that you are being made to look at them from a single perspective deemed best by the authorities. And perspective is very powerful.

Depending on the perspective, it is either a circle or a square. When companies/institutes say "package", the usually means CTC (Cost to Company) which can include a multitude of things. Basic salary, Maximum bonus (which is almost never possible), Interest free loan, One time joining bonus and so on. Consider this, a company pays 10L basic salary. It has 40% maximum bonus (but people generally get in the range of 15%, 40% is very rare and for very high positions). Also, they pay a joining bonus of 4L. Finally, they have a policy of giving low interest rate loan to employees if they need to buy a house, vehicle etc to the tune of 50% of basic. Now, a person usually does not avail option 4. He will get 10L + 1.5L bonus (15%) and 4L in 1st year i.e. 15.5L. But subsequently, he will only get 11.5L (excluding the one time joining bonus). Realistically, the company is only paying 11.5L. But what it can show is 10L (basic) + 4L (maximum bonus) + 4L (one time) + 5L (low interest/interest free loan) = 23L i.e. more than double the figure.

Also, when most of the institutes consider "average" package, they merge both domestic and international placements (to use high exchange rate conversion of the dollar or the euro). But a burger worth 60 bucks in India will not be available for $1 in US. To get a better idea, one must use PPP (Purchasing Power Parity) conversion rate rather than the exchange rate. What PPP signifies is the amount for which one gets the same quantity of goods in both countries. The PPP exchange rate for India is somewhere around 25 INR to the dollar i.e. 1 dollar in US (comparable cities) is the same as 25 rupees in India. So, a package of$100,000 is not equal to INR 60L, but rather INR 25L. It is still high but not hot enough to fuel the media frenzy around it.

I will take these "figures" more seriously once they start releasing more information like the domestic and international averages, total no. of students, mean salaries, median salaries (to remove the effect of outliers), mean basic , median basic etc.

Myth 11: Admissions are guaranteed if you have good scores and a good profile

There are multiple criteria for getting selected. If you do not qualify even one of them, you won't get admission even if you might be stellar in everything else. Sad, but true. There are some things you can work on - UG CGPA, CAT score, GD and PI and some things you can't help - 10th and 12th scores. So, research about the college. See the evaluation and selection criteria and aim accordingly.

Myth 12: Technical courses >> People/Soft/HR courses

On the contrary, they are more critical. You can learn the basics of accounting by yourself. You might not get the same perspective on a course on leadership by a eminent professor or industry leader.

Myth 13: An MBA will grant you keen business sense and insight

It will give you tools to think and evaluate, but not make you a thinker or analyst. You will learn that you still have a lot to learn when you land a job.

Myth 14: The IIM tag holds more value than other good colleges

No. There are more than 13 IIMs now. An IIM-Raipur does not hold anything to a degree from XLRI, FMS, NMIMS or MDI. While it will be good for you, do not select a college just because of its tag.

Myth 15: MBAs are smarter than non-MBAs

Haha. The most intelligent people on the job will most likely be non-MBAs. They have dedicated their lives in pursuit of specialization and excellence. MBAs are aimed to provide you all round development and a holistic perspective. So while you might have a good breadth of knowledge but not the same depth of understanding.


text:
# split matrices over two lines using array

I was wondering if there is anyway to split across two lines the following eigenvalue , eigenvector pair which I have listed below? I have tried \bigskip, \par, \newline within the array environment, but these all give me an error (more precisely " missing \$ inserted" for which I do not understand). A minimum working example is given below along with a picture of the output. I would like to keep the output I have now, but loose the error which latex gives me. Also, is it possible to add some vertical space after the matrices at the bottom? I tried using \vspace{}, but I did not succeed.

\documentclass[a4paper,twoside,12pt,openany]{report}
\begin{document}
\usepackage{mathtools}
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage{placeins}
\usepackage{amssymb}
\usepackage{amsmath,scalefnt}

Eigenvalues, Eigenvectors \par
(D126) & {\small $$\left[\left(\begin{array}{c} 1\\ -d\\ -\frac{\sqrt{3}\,d}{3}\\ \frac{\sqrt{3}\,d} {3} \end{array}\right), \left(\begin{array}{cccc} 1 & -1 & 1 & 1\\ 1 & 0 & - \frac{\left(2\,\sqrt{3}+3\right)\,\left(d+3\right)}{3\,\left(d-1\right)} & \frac{\left(2\,\sqrt{3}-3\right)\,\left(d+3\right)}{3\,\left(d-1\right)}\\ 1 & 0 & \frac{3\,d+2\,\sqrt{3}\,d+2\,\sqrt{3}+5}{d-1} & \frac{3\,d-2\,\sqrt{3}\,d- 2\,\sqrt{3}+5}{d-1}\\ 1 & 1 & 1 & 1 \end{array}\right) \right] \nonumber$$} \\ \hline

• You're probably better of defining some letters being equal to those big fractions and then displaying these letters in the matrix. No one want to read it in its current form 2 days ago
• That is not a working example. And the formulas in the not-working example are different from those in the picture. 2 days ago

Something like this? (Note that I've gotten rid of all \left and \right sizing directives and all \, spacing directives.)

\documentclass[a4paper,twoside,12pt,openany]{report}
\usepackage{mathtools}
\usepackage[T1]{fontenc}

\begin{document}
Eigenvalues, Eigenvectors D126
\begin{gather*}
\renewcommand\arraystretch{1.35}
\begin{pmatrix}
1 \\ -d \\ -\frac{\sqrt{3}d}{3} \\  \frac{\sqrt{3}d}{3}
\end{pmatrix},  \\[2ex] % <-- induce a line break
\begin{pmatrix}
1 & -1 & 1 & 1  \\
1 & 0
& -\frac{(2\sqrt{3}+3)(d+3)}{3(d-1)}
&  \frac{(2\sqrt{3}-3)(d+3)}{3(d-1)} \\
1 & 0
& \frac{3d+2\sqrt{3}d+2\sqrt{3}+5}{d-1}
& \frac{3d-2\sqrt{3}d-2\sqrt{3}+5}{d-1} \\
1 & 1 & 1 & 1
\end{pmatrix}
\end{gather*}
\end{document}
• Yes, thank you so much. Just what I was looking for) 2 days ago


text:
# Derivation of the Beta posterior distribution

I'm a beginner student in Bayesian data analysis and I'm trying to understand how the posterior distribution of the Beta distribution is derived. In many of the references I've been reading an example of the posterior of the Beta distribution is presented in the following form:

$$p(\theta\mid\alpha, \beta,y) \propto p(y\mid\alpha,\beta,\theta)\;p(\theta\mid\alpha,\beta),$$

where $y \sim \operatorname{Bin}(n, \theta)$ and $\theta \sim Beta(\alpha, \beta)$. When this form is presented in the tutorials it is briefly mentioned that the normalizing denominator can be "forgotten" and I can't recall a presentation of this posterior function where the normalizing factor is included in the equation.

I tried to figure this out myself:

$$p(\theta\mid\alpha, \beta,y) = \frac{p(\theta, \alpha, \beta, y)}{p(\alpha, \beta, y)}$$

$$p(y\mid\alpha, \beta, \theta) = \frac{p(\theta, \alpha, \beta, y)}{p(\alpha, \beta, \theta)}$$

$$p(\theta\mid\alpha, \beta,y)\;p(\alpha, \beta, y) = p(y\mid\alpha, \beta, \theta)\;p(\alpha, \beta, \theta)$$

$$p(\theta\mid\alpha, \beta,y) = \frac{p(y\mid\alpha, \beta, \theta)\;p(\alpha, \beta, \theta)}{p(\alpha, \beta, y)}= \frac{p(y\mid\alpha, \beta, \theta)\;p(\theta\mid\alpha,\beta)\;p(\alpha,\beta)}{p(y\mid\alpha,\beta)\;p(\alpha,\beta)}$$

$$=\frac{p(y\mid\alpha, \beta, \theta)\;p(\theta\mid\alpha,\beta)}{p(y\mid\alpha,\beta)}.$$

So I get pretty close to the form given in references and this makes me think that does:

$$p(y\mid\alpha, \beta)=c\in\mathbb{R},$$

that is, is the normalizing factor a constant?

Sorry if my question is unclear. This is pretty new stuff for me and I get confused easily :)

• $p(y\mid\alpha,\beta)$ doesn't depend on $\theta$, so we consider it constant with regard to $\theta$, and thus 'ignore it' in the expression for the posterior. – Blaza Feb 6 '17 at 14:25
• Thank you @Blaza appreciate it :) Could you perhaps post your comment as an answer? – jjepsuomi Feb 6 '17 at 15:16

The factor $p(y\mid\alpha,\beta)$ doesn't depend on $\theta$ and thus we consider it a constant with regard to $\theta$. Therefore we can 'ignore' it in the expression for the posterior (it is contained in the '$\propto$' notation).
One way it is often written is also $p(y\mid\alpha,\beta)=\int_\Theta{}p(y\mid\alpha,\beta,\theta)p(\theta\mid\alpha,\beta)d\theta$. It's basically the numerator averaged over all values of $\theta$. That's also a reason why it is called the normalising factor, it ensures the posterior integrates to $1$.


text:
# Home

Score : $100$ points

### Problem Statement

We will buy a product for $N$ yen (the currency of Japan) at a shop.

If we use only $1000$-yen bills to pay the price, how much change will we receive?

Assume we use the minimum number of bills required.

### Constraints

• $1 \leq N \leq 10000$
• $N$ is an integer.

### Input

Input is given from Standard Input in the following format:

$N$

### Output

Print the amount of change as an integer.

### Sample Input 1

1900

### Sample Output 1

100

We will use two $1000$-yen bills to pay the price and receive $100$ yen in change.

### Sample Input 2

3000

### Sample Output 2

0

We can pay the exact price.


text:
# Render region and render with 1 keystroke?

I was looking into this: https://github.com/CenekStrichel/CendaTools/wiki/Render-Tools And there´s 1 key assignment to do the render region.

Basically you have: step 1: If user presses "(key)", invoke view3d.render_border command step 2: view3d.toggle_renderer step 3: Render area gets represented. step 4: IF a render area exist, and user presses "(key)" THEN view3d.clear_render_border

How could an .addon be created bindig all those commands and IF statement to a single keystroke?

Could this code get us started?

import bpy

class QuickRenderRegion(bpy.types.Operator):
"""Tooltip"""
bl_idname = "view3d.toggle_render"
bl_label = "QuickRenderRegion"
bl_options = {'REGISTER', 'UNDO'}

@classmethod
def execute(self, context):
bpy.ops.view3d.render_border()
bpy.ops.view3d.toggle_render
#return {'FINISHED'}

def register():
bpy.utils.register_class(QuickRenderRegion)

def unregister():
bpy.utils.unregister_class(QuickRenderRegion)

if __name__ == "__main__":
register()

• Modal operator. Have a look into Templates > Python > Operator Modal. However that's cumbersome in this case. Out of curiosity: why you can't just use Ctrl+B? – p2or Jun 18 '18 at 9:48
• ctrl+b, shift+z, wait for render, shift+z, ctrl+alt+b <---- Outrageous combo! Ultra finish. (I think you get me). Keybinding it to 1 key: genius. – Pierre Schiller Jun 18 '18 at 17:17
• Simple example on how to bind an operaor to any shortcut. I think you get the idea, copy the operator and just replace the name of the class when calling keymap_items.new() and you are literally done. But notice that the operator you've linked to, actually needs a cleanup before using it in a production: there are bad references, bpy is imported multiple times etc... – p2or Jun 19 '18 at 13:48
• Actually it would be necessary to anchor 3 commands to the same keybind: 1-that starts the drawing rectangle area, 2 shifts to render, 3 if the same key is pressed again and there is a render preview area, then clear the area first and go into rectangle draw area again unless "ESC" is pressed and session will cancel (toggle back to regular selection mode). – Pierre Schiller Jun 21 '18 at 16:00
• @PierreSchiller you should make your solution into an answer to close this question. I don't think there is any better solution. – HenrikD Mar 5 at 16:35

I took p2or link and modified a little. After running the script, shortcut key is Shift + Q. def register() part has type = "Q" and shift = True alt = False and ctrl = False.

bl_info = {
"name": "Toggle Simplify",
"description": "Toggle Simplify",
"author": "poor",
"version": (0, 0, 2),
"blender": (2, 79, 6),
"location": "3D View",
"category": "3D View"
}

import bpy

# operator
class ToggleSimplify(bpy.types.Operator):
"""Tooltip"""
bl_idname = "view3d.toggle_simplify"
bl_label = "Toggle Simplify"
bl_options = {'REGISTER'}

border = bpy.props.BoolProperty(default=False)

def execute(self, context):

if bpy.context.area.spaces.active.use_render_border:
bpy.context.area.spaces.active.use_render_border = False
self.border = False
bpy.ops.view3d.toggle_render()
else:
bpy.ops.view3d.render_border("INVOKE_DEFAULT")

return {'RUNNING_MODAL'}

def modal(self, context, event):

if not self.border and context.area.spaces.active.use_render_border:
bpy.ops.view3d.toggle_render()
self.border = True
return {'FINISHED'}
return {'PASS_THROUGH'}

# register
def register():
bpy.utils.register_class(ToggleSimplify)

# handle the keymap
wm = bpy.context.window_manager
if kc:
kmi = km.keymap_items.new(ToggleSimplify.bl_idname, type='Q', value='PRESS', shift=True, alt=False, ctrl=False)

# unregister
def unregister():
km.keymap_items.remove(kmi)

bpy.utils.unregister_class(ToggleSimplify)

if __name__ == "__main__":
register()

• Hi. I´ll test this code. Question: What if I do SHIFT+Q for the shortcut instead of "Q" on edit mode, or object mode? Is the interaction mode going to affect the script? Say I am in wireframe mode, will it toggle to full render and back to wireframe? Also: How do I clear the region using the same Shotcut key but just "tap" to clear render region? Could this line change to: "ToggleSimplify.bl_idname, type='SHIFT Q', value='PRESS', shift=True" ? – Pierre Schiller Mar 5 at 19:44
• I installed your .py addon, but when I press "Q", nothing happens. – Pierre Schiller Mar 5 at 19:58
• Shift+Q is already the shortcut key combination for that script. – JuhaW Mar 5 at 20:50
• Right now it´s triggering the render toggle first, then it launches area select mode. It should be area select mode first, end selecting area and when defined, then it should launch the toggle render function. Otherwise it beats the purpose of having a render preview. Could that be adjusted? – Pierre Schiller Mar 5 at 21:08
• I updated the script. – JuhaW Mar 6 at 9:53


text:
# Functions on manifolds

## The exponential map, the logarithmic map, and geodesics

Geodesics are the generalizations of a straight line to manifolds, i.e. their intrinsic acceleration is zero. Together with geodesics one also obtains the exponential map and its inverse, the logarithmic map. Informally speaking, the exponential map takes a vector (think of a direction and a length) at one point and returns another point, which lies towards this direction at distance of the specified length. The logarithmic map does the inverse, i.e. given two points, it tells which vector “points towards” the other point.

Base.expMethod
exp(M::AbstractManifold, p, X)
exp(M::AbstractManifold, p, X, t::Real = 1)

Compute the exponential map of tangent vector X, optionally scaled by t, at point p from the manifold AbstractManifold M, i.e.

$$$\exp_p X = γ_{p,X}(1),$$$

where $γ_{p,X}$ is the unique geodesic starting in $γ(0)=p$ such that $\dot γ(0) = X$.

source
Base.logMethod
log(M::AbstractManifold, p, q)

Compute the logarithmic map of point q at base point p on the AbstractManifold M. The logarithmic map is the inverse of the exponential map. Note that the logarithmic map might not be globally defined.

source
ManifoldsBase.exp!Method
exp!(M::AbstractManifold, q, p, X)
exp!(M::AbstractManifold, q, p, X, t::Real = 1)

Compute the exponential map of tangent vector X, optionally scaled by t, at point p from the manifold AbstractManifold M. The result is saved to q.

source
ManifoldsBase.geodesic!Method
geodesic!(M::AbstractManifold, Q, p, X, T::AbstractVector) -> AbstractVector

Get the geodesic with initial point p and velocity X on the AbstractManifold M. A geodesic is a curve of zero acceleration. That is for the curve $γ_{p,X}: I → \mathcal M$, with $γ_{p,X}(0) = p$ and $\dot γ_{p,X}(0) = X$ a geodesic further fulfills

$$$∇_{\dot γ_{p,X}(t)} \dot γ_{p,X}(t) = 0,$$$

i.e. the curve is acceleration free with respect to the Riemannian metric. This function evaluates the geodeic at time points t fom T in place of Q.

source
ManifoldsBase.geodesic!Method
geodesic!(M::AbstractManifold, q, p, X, t::Real)

Get the geodesic with initial point p and velocity X on the AbstractManifold M. A geodesic is a curve of zero acceleration. That is for the curve $γ_{p,X}: I → \mathcal M$, with $γ_{p,X}(0) = p$ and $\dot γ_{p,X}(0) = X$ a geodesic further fulfills

$$$∇_{\dot γ_{p,X}(t)} \dot γ_{p,X}(t) = 0,$$$

i.e. the curve is acceleration free with respect to the Riemannian metric. This function evaluates the geodeic at t in place of q.

source
ManifoldsBase.geodesic!Method
geodesic!(M::AbstractManifold, p, X) -> Function

Get the geodesic with initial point p and velocity X on the AbstractManifold M. A geodesic is a curve of zero acceleration. That is for the curve $γ_{p,X}: I → \mathcal M$, with $γ_{p,X}(0) = p$ and $\dot γ_{p,X}(0) = X$ a geodesic further fulfills

$$$∇_{\dot γ_{p,X}(t)} \dot γ_{p,X}(t) = 0,$$$

i.e. the curve is acceleration free with respect to the Riemannian metric. This yields that the curve has constant velocity and is locally distance-minimizing.

This function returns a function (q,t) of (time) t that mutates q.

source
ManifoldsBase.geodesicMethod
geodesic(M::AbstractManifold, p, X, T::AbstractVector) -> AbstractVector

Evaluate the geodesic $γ_{p,X}: I → \mathcal M$, with $γ_{p,X}(0) = p$ and $\dot γ_{p,X}(0) = X$ a geodesic further fulfills

$$$∇_{\dot γ_{p,X}(t)} \dot γ_{p,X}(t) = 0,$$$

at time points t from T.

source
ManifoldsBase.geodesicMethod
geodesic(M::AbstractManifold, p, X, t::Real)

Evaluate the geodesic $γ_{p,X}: I → \mathcal M$, with $γ_{p,X}(0) = p$ and $\dot γ_{p,X}(0) = X$ a geodesic further fulfills

$$$∇_{\dot γ_{p,X}(t)} \dot γ_{p,X}(t) = 0,$$$

at time t.

source
ManifoldsBase.geodesicMethod
geodesic(M::AbstractManifold, p, X) -> Function

Get the geodesic with initial point p and velocity X on the AbstractManifold M. A geodesic is a curve of zero acceleration. That is for the curve $γ_{p,X}: I → \mathcal M$, with $γ_{p,X}(0) = p$ and $\dot γ_{p,X}(0) = X$ a geodesic further fulfills

$$$∇_{\dot γ_{p,X}(t)} \dot γ_{p,X}(t) = 0,$$$

i.e. the curve is acceleration free with respect to the Riemannian metric. This yields, that the curve has constant velocity that is locally distance-minimizing.

This function returns a function of (time) t.

source
ManifoldsBase.log!Method
log!(M::AbstractManifold, X, p, q)

Compute the logarithmic map of point q at base point p on the AbstractManifold M. The result is saved to X. The logarithmic map is the inverse of the exp!onential map. Note that the logarithmic map might not be globally defined.

source
ManifoldsBase.shortest_geodesic!Method
shortest_geodesic!(M::AbstractManifold, R, p, q, T::AbstractVector) -> AbstractVector

Evaluate a geodesic $γ_{p,q}(t)$ whose length is the shortest path between the points pand q, where $γ_{p,q}(0)=p$ and $γ_{p,q}(1)=q$ at all t from T in place of R. When there are multiple shortest geodesics, a deterministic choice will be taken.

source
ManifoldsBase.shortest_geodesic!Method
shortest_geodesic!(M::AabstractManifold, r, p, q, t::Real)

Evaluate a geodesic $γ_{p,q}(t)$ whose length is the shortest path between the points pand q, where $γ_{p,q}(0)=p$ and $γ_{p,q}(1)=q$ at t in place of r. When there are multiple shortest geodesics, a deterministic choice will be taken.

source
ManifoldsBase.shortest_geodesic!Method
shortest_geodesic!(M::AbstractManifold, p, q) -> Function

Get a geodesic $γ_{p,q}(t)$ whose length is the shortest path between the points pand q, where $γ_{p,q}(0)=p$ and $γ_{p,q}(1)=q$. When there are multiple shortest geodesics, a deterministic choice will be returned.

This function returns a function (r,t) -> ... of time t which works in place of r.

Further variants

shortest_geodesic!(M::AabstractManifold, r, p, q, t::Real)
shortest_geodesic!(M::AbstractManifold, R, p, q, T::AbstractVector) -> AbstractVector

mutate (and return) the point r and the vector of points R, respectively, returning the point at time t or points at times t in T along the shortest geodesic.

source
ManifoldsBase.shortest_geodesicMethod
shortest_geodesic(M::AbstractManifold, p, q, T::AbstractVector) -> AbstractVector

Evaluate a geodesic $γ_{p,q}(t)$ whose length is the shortest path between the points pand q, where $γ_{p,q}(0)=p$ and $γ_{p,q}(1)=q$ at time points T. When there are multiple shortest geodesics, a deterministic choice will be returned.

source
ManifoldsBase.shortest_geodesicMethod
shortest_geodesic(M::AabstractManifold, p, q, t::Real)

Evaluate a geodesic $γ_{p,q}(t)$ whose length is the shortest path between the points pand q, where $γ_{p,q}(0)=p$ and $γ_{p,q}(1)=q$ at time t. When there are multiple shortest geodesics, a deterministic choice will be returned.

source
ManifoldsBase.shortest_geodesicMethod
shortest_geodesic(M::AbstractManifold, p, q) -> Function

Get a geodesic $γ_{p,q}(t)$ whose length is the shortest path between the points pand q, where $γ_{p,q}(0)=p$ and $γ_{p,q}(1)=q$. When there are multiple shortest geodesics, a deterministic choice will be returned.

This function returns a function of time, which may be a Real or an AbstractVector.

source

## Parallel transport

While moving vectors from one base point to another is the identity in the Euclidean space – or in other words all tangent spaces (directions one can “walk” into) are the same. This is different on a manifold.

If we have two points $p,q ∈ \mathcal M$, we take a $c: [0,1] → \mathcal M$ connecting the two points, i.e. $c(0) = p$ and $c(1) = q$. this could be a (or the) geodesic. If we further consider a vector field $X: [0,1] → T\mathcal M$, i.e. where $X(t) ∈ T_{c(t)}\mathcal M$. Then the vector field is called parallel if its covariant derivative $\frac{\mathrm{D}}{\mathrm{d}t}X(t) = 0$ for all $t∈ |0,1]$.

If we now impose a value for $X=X(0) ∈ T_p\mathcal M$, we obtain an ODE with an initial condition. The resulting value $X(1) ∈ T_q\mathcal M$ is called the parallel transport of X along $c$ or in case of a geodesic the _parallel transport of X from p to q.

ManifoldsBase.parallel_transport_alongMethod
Y = parallel_transport_along(M::AbstractManifold, p, X, c)

Compute the parallel transport of the vector X from the tangent space at p along the curve c.

To be precise let $c(t)$ be a curve $c(0)=p$ for vector_transport_along $\mathcal P^cY$

THen In the result $Y\in T_p\mathcal M$ is the vector $X$ from the tangent space at $p=c(0)$ to the tangent space at $c(1)$.

Let $Z\colon [0,1] \to T\mathcal M$, $Z(t)\in T_{c(t)}\mathcal M$ be a smooth vector field along the curve $c$ with $Z(0) = Y$, such that $Z$ is parallel, i.e. its covariant derivative $\frac{\mathrm{D}}{\mathrm{d}t}Z$ is zero. Note that such a $Z$ always exists and is unique.

Then the parallel transport is given by $Z(1)$.

source

## Further functions on manifolds

### General functions provided by the interface

Base.angleMethod
angle(M::AbstractManifold, p, X, Y)

Compute the angle between tangent vectors X and Y at point p from the AbstractManifold M with respect to the inner product from inner.

source
Base.copyto!Method
copyto!(M::AbstractManifold, Y, p, X)

Copy the value(s) from X to Y, where both are tangent vectors from the tangent space at p on the AbstractManifold M. This function defaults to calling copyto!(Y, X), but it might be useful to overwrite the function at the level, where also information from p and M can be accessed.

source
Base.copyto!Method
copyto!(M::AbstractManifold, q, p)

Copy the value(s) from p to q, where both are points on the AbstractManifold M. This function defaults to calling copyto!(q, p), but it might be useful to overwrite the function at the level, where also information from M can be accessed.

source
Base.isapproxMethod
isapprox(M::AbstractManifold, p, X, Y; error:Symbol=:none; kwargs...)

Check if vectors X and Y tangent at p from AbstractManifold M are approximately equal.

The optional positional argument can be used to get more information for the case that the result is false, if the concrete manifold provides such information. Currently the following are supported

• :error - throws an error if isapprox evaluates to false, providing possibly a more detailed error. Note that this turns isapprox basically to an @assert.
• :info – prints the information in an @info
• :warn – prints the information in an @warn
• :none (default) – the function just returns true/false

By default these informations are collected by calling check_approx.

Keyword arguments can be used to specify tolerances.

source
Base.isapproxMethod
isapprox(M::AbstractManifold, p, q; error::Symbol=none, kwargs...)

Check if points p and q from AbstractManifold M are approximately equal.

The keyword argument can be used to get more information for the case that the result is false, if the concrete manifold provides such information. Currently the following are supported

• :error - throws an error if isapprox evaluates to false, providing possibly a more detailed error. Note that this turns isapprox basically to an @assert.
• :info – prints the information in an @info
• :warn – prints the information in an @warn
• :none (default) – the function just returns true/false

Keyword arguments can be used to specify tolerances.

source
Base.randMethod
Random.rand(M::AbstractManifold, [d::Integer]; vector_at=nothing)
Random.rand(rng::AbstractRNG, M::AbstractManifold, [d::Integer]; vector_at=nothing)

Generate a random point on manifold M (when vector_at is nothing) or a tangent vector at point vector_at (when it is not nothing).

Optionally a random number generator rng to be used can be specified. An optional integer d indicates that a vector of d points or tangent vectors is to be generated.

Note

Usually a uniform distribution should be expected for compact manifolds and a Gaussian-like distribution for non-compact manifolds and tangent vectors, although it is not guaranteed. The distribution may change between releases.

rand methods for specific manifolds may take additional keyword arguments.

source
ManifoldsBase.allocateMethod
allocate(a)
allocate(a, dims::Integer...)
allocate(a, dims::Tuple)
allocate(a, T::Type)
allocate(a, T::Type, dims::Integer...)
allocate(a, T::Type, dims::Tuple)
allocate(M::AbstractManifold, a)
allocate(M::AbstractManifold, a, dims::Integer...)
allocate(M::AbstractManifold, a, dims::Tuple)
allocate(M::AbstractManifold, a, T::Type)
allocate(M::AbstractManifold, a, T::Type, dims::Integer...)
allocate(M::AbstractManifold, a, T::Type, dims::Tuple)

Allocate an object similar to a. It is similar to function similar, although instead of working only on the outermost layer of a nested structure, it maps recursively through outer layers and calls similar on the innermost array-like object only. Type T is the new number element type number_eltype, if it is not given the element type of a is retained. The dims argument can be given for non-nested allocation and is forwarded to the function similar.

It's behavior can be overriden by a specific manifold, for example power manifold with nested replacing representation can decide that allocate for Array{<:SArray} returns another Array{<:SArray} instead of Array{<:MArray}, as would be done by default.

source
ManifoldsBase.base_manifoldFunction
base_manifold(M::AbstractManifold, depth = Val(-1))

Return the internally stored AbstractManifold for decorated manifold M and the base manifold for vector bundles or power manifolds. The optional parameter depth can be used to remove only the first depth many decorators and return the AbstractManifold from that level, whether its decorated or not. Any negative value deactivates this depth limit.

source
ManifoldsBase.distanceMethod
distance(M::AbstractManifold, p, q)

Shortest distance between the points p and q on the AbstractManifold M, i.e.

$$$d(p,q) = \inf_{γ} L(γ),$$$

where the infimum is over all piecewise smooth curves $γ: [a,b] \to \mathcal M$ connecting $γ(a)=p$ and $γ(b)=q$ and

$$$L(γ) = \displaystyle\int_{a}^{b} \lVert \dotγ(t)\rVert_{γ(t)} \mathrm{d}t$$$

is the length of the curve $γ$.

If $\mathcal M$ is not connected, i.e. consists of several disjoint components, the distance between two points from different components should be $∞$.

source
ManifoldsBase.embed!Method
embed!(M::AbstractManifold, Y, p, X)

Embed a tangent vector X at a point p on the AbstractManifold M into the ambient space and return the result in Y. This method is only available for manifolds where implicitly an embedding or ambient space is given. Additionally, embed! includes changing data representation, if applicable, i.e. if the tangents on M are not represented in the same way as tangents on the embedding, the representation is changed accordingly. This is the case for example for Lie groups, when tangent vectors are represented in the Lie algebra. The embedded tangents are then in the tangent spaces of the embedded base points.

The default is set in such a way that it assumes that the points on M are represented in their embedding (for example like the unit vectors in a space to represent the sphere) and hence embedding also for tangent vectors is the identity by default.

source
ManifoldsBase.embed!Method
embed!(M::AbstractManifold, q, p)

Embed point p from the AbstractManifold M into an ambient space. This method is only available for manifolds where implicitly an embedding or ambient space is given. Not implementing this function means, there is no proper embedding for your manifold. Additionally, embed might include changing data representation, if applicable, i.e. if points on M are not represented in the same way as their counterparts in the embedding, the representation is changed accordingly.

The default is set in such a way that it assumes that the points on M are represented in their embedding (for example like the unit vectors in a space to represent the sphere) and hence embedding in the identity by default.

If you have more than one embedding, see EmbeddedManifold for defining a second embedding. If your point p is already represented in some embedding, see AbstractDecoratorManifold how you can avoid reimplementing code from the embedded manifold

source
ManifoldsBase.embedMethod
embed(M::AbstractManifold, p, X)

Embed a tangent vector X at a point p on the AbstractManifold M into an ambient space. This method is only available for manifolds where implicitly an embedding or ambient space is given. Not implementing this function means, there is no proper embedding for your tangent space(s).

Additionally, embed might include changing data representation, if applicable, i.e. if tangent vectors on M are not represented in the same way as their counterparts in the embedding, the representation is changed accordingly.

The default is set in such a way that memory is allocated and embed!(M, Y, p. X) is called.

If you have more than one embedding, see EmbeddedManifold for defining a second embedding. If your tangent vector X is already represented in some embedding, see AbstractDecoratorManifold how you can avoid reimplementing code from the embedded manifold

source
ManifoldsBase.embedMethod
embed(M::AbstractManifold, p)

Embed point p from the AbstractManifold M into the ambient space. This method is only available for manifolds where implicitly an embedding or ambient space is given. Additionally, embed includes changing data representation, if applicable, i.e. if the points on M are not represented in the same way as points on the embedding, the representation is changed accordingly.

The default is set in such a way that memory is allocated and embed!(M, q, p) is called.

source

Infimum of the injectivity radii injectivity_radius(M,p) of all points p on the AbstractManifold.

Return the distance $d$ such that exp(M, p, X) is injective for all tangent vectors shorter than $d$ (i.e. has an inverse).

Distance $d$ such that retract(M, p, X, method) is injective for all tangent vectors shorter than $d$ (i.e. has an inverse) for point p if provided or all manifold points otherwise.

In order to dispatch on different retraction methods, please either implement _injectivity_radius(M[, p], m::T) for your retraction R or specifically injectivity_radius_exp(M[, p]) for the exponential map. By default the variant with a point p assumes that the default (without p) can ve called as a lower bound.

source
ManifoldsBase.is_pointFunction
is_point(M::AbstractManifold, p, throw_error::Boolean = false; kwargs...)
is_point(M::AbstractManifold, p, report_error::Symbol; kwargs...)

Return whether p is a valid point on the AbstractManifold M.

If throw_error is false, the function returns either true or false. If throw_error is true, the function either returns true or throws an error. By default the function calls check_point and checks whether the returned value is nothing or an error.

A more precise way can be set using a symbol as the optional parameter, where ' :error is the same as setting throw_error=true ' :info displays the error message as an @info

• :warn displays the error message as a @warning

all other symbols are equivalent to throw_error=false.

source
ManifoldsBase.is_vectorFunction
is_vector(M::AbstractManifold, p, X, throw_error = false, check_base_point=true; kwargs...)
is_vector(M::AbstractManifold, p, X, error::Symbol, check_base_point::Bool=true; kwargs...)

Return whether X is a valid tangent vector at point p on the AbstractManifold M. Returns either true or false.

If throw_error is false, the function returns either true or false. If throw_error is true, the function either returns true or throws an error. By default the function calls check_vector and checks whether the returned value is nothing or an error.

If check_base_point is true, then the point p will be first checked using the check_point function.

A more precise way can be set using a symbol as the optional parameter, where ' :error is the same as setting throw_error=true ' :info displays the error message as an @info

• :warn displays the error message as a @warning.

all other symbols are equivalent to throw_error=false.

source
ManifoldsBase.mid_point!Method
mid_point!(M::AbstractManifold, q, p1, p2)

Calculate the middle between the two point p1 and p2 from manifold M. By default uses log, divides the vector by 2 and uses exp!. Saves the result in q.

source
ManifoldsBase.mid_pointMethod
mid_point(M::AbstractManifold, p1, p2)

Calculate the middle between the two point p1 and p2 from manifold M. By default uses log, divides the vector by 2 and uses exp.

source
ManifoldsBase.riemann_tensorMethod
riemann_tensor(M::AbstractManifold, p, X, Y, Z)

Compute the value of the Riemann tensor $R(X_f,Y_f)Z_f$ at point p, where $X_f$, $Y_f$ and $Z_f$ are vector fields defined by parallel transport of, respectively, X, Y and Z to the desired point. All computations are performed using the connection associated to manifold M.

The formula reads $R(X_f,Y_f)Z_f = \nabla_X\nabla_Y Z - \nabla_Y\nabla_X Z - \nabla_{[X, Y]}Z$, where $[X, Y]$ is the Lie bracket of vector fields.

Note that some authors define this quantity with inverse sign.

source
ManifoldsBase.zero_vector!Method
zero_vector!(M::AbstractManifold, X, p)

Save to X the tangent vector from the tangent space $T_p\mathcal M$ at p that represents the zero vector, i.e. such that retracting X to the AbstractManifold M at p produces p.

source
ManifoldsBase.zero_vectorMethod
zero_vector(M::AbstractManifold, p)

Return the tangent vector from the tangent space $T_p\mathcal M$ at p on the AbstractManifold M, that represents the zero vector, i.e. such that a retraction at p produces p.

source

### Internal functions

While you should always add your documentation to functions from the last section, some of the functions dispatch onto functions on layer III. These are the ones you usually implement for your manifold – unless there is no lower level function called, like for the manifold_dimension.

ManifoldsBase._pick_basic_allocation_argumentMethod
_pick_basic_allocation_argument(::AbstractManifold, f, x...)

Pick which one of elements of x should be used as a basis for allocation in the allocate_result(M::AbstractManifold, f, x...) method. This can be specialized to, for example, skip Identity arguments in Manifolds.jl group-related functions.

source
ManifoldsBase.allocate_resultMethod
allocate_result(M::AbstractManifold, f, x...)

Allocate an array for the result of function f on AbstractManifold M and arguments x... for implementing the non-modifying operation using the modifying operation.

Usefulness of passing a function is demonstrated by methods that allocate results of musical isomorphisms.

source
ManifoldsBase.check_approxMethod
check_approx(M::AbstractManifold, p, q; kwargs...)
check_approx(M::AbstractManifold, p, X, Y; kwargs...)

Check whether two elements are approximately equal, either p, q on the AbstractManifold or the two tangent vectors X, Y in the tangent space at p are approximately the same. The keyword arguments kwargs can be used to set tolerances, similar to Julia's isapprox.

This function might use isapprox from Julia internally and is similar to isapprox, with the difference that is returns an ApproximatelyError if the two elements are not approximately equal, containting a more detailed description/reason. If the two elements are approximalely equal, this method returns nothing.

This method is an internal function and is called by isapprox whenever the user specifies an error= keyword therein.

source
ManifoldsBase.check_pointMethod
check_point(M::AbstractManifold, p; kwargs...) -> Union{Nothing,String}

Return nothing when p is a point on the AbstractManifold M. Otherwise, return an error with description why the point does not belong to manifold M.

By default, check_point returns nothing, i.e. if no checks are implemented, the assumption is to be optimistic for a point not deriving from the AbstractManifoldPoint type.

source
ManifoldsBase.check_sizeMethod
check_size(M::AbstractManifold, p)
check_size(M::AbstractManifold, p, X)

Check whether p has the right representation_size for a AbstractManifold M. Additionally if a tangent vector is given, both p and X are checked to be of corresponding correct representation sizes for points and tangent vectors on M.

By default, check_size returns nothing, i.e. if no checks are implemented, the assumption is to be optimistic.

source
ManifoldsBase.check_vectorMethod
check_vector(M::AbstractManifold, p, X; kwargs...) -> Union{Nothing,String}

Check whether X is a valid tangent vector in the tangent space of p on the AbstractManifold M. An implementation does not have to validate the point p. If it is not a tangent vector, an error string should be returned.

By default, check_vector returns nothing, i.e. if no checks are implemented, the assumption is to be optimistic for tangent vectors not deriving from the TVector type.

source

## Error Messages

This interface introduces a small set of own error messages.

ManifoldsBase.ApproximatelyErrorType
ApproximatelyError{V,S} <: Exception

Store an error that occurs when two data structures, e.g. points or tangent vectors.

Fields

• val amount the two approximate elements are apart – is set to NaN if this is not known
• msg a message providing more detail about the performed test and why it failed.

Constructors

ApproximatelyError(val::V, msg::S) where {V,S}

Generate an Error with value val and message msg.

ApproximatelyError(msg::S) where {S}

Generate a message without a value (using val=NaN internally) and message msg.

source
ManifoldsBase.ComponentManifoldErrorType
CompnentError{I,E} <: Exception

Store an error that occured in a component, where the additional index is stored.

Fields

• index::I index where the error occured
• error::E error that occured.
source
ManifoldsBase.ManifoldDomainErrorType
ManifoldDomainError{<:Exception} <: Exception

An error to represent a nested (Domain) error on a manifold, for example if a point or tangent vector is invalid because its representation in some embedding is already invalid.

source


text:
# Monoids, weighted automata and algorithmic philosophy of science

The Algorithmic Thinkers
original art by Auguste Rodin & Eric Joyner
modified by Kate Zen

If pressed to find a passion and unifying theme behind my interests, I would say that my goal is to emancipate theoretical computer science from the current tyranny of technology and engineering, and restore it to its original position of asking and helping find answers for fundamental questions in science and philosophy. I’ve already written on progress toward an algorithmic theory of biology, wherein I permitted myself to foray into the philosophy of science. I want to continue the expedition with this post because I think that cstheory can be painlessly integrated into philosophy as an extension of analytic philosophy — algorithmic philosophy.

A precise definition of analytic philosophy is difficult to pin down, and a cheeky characterization might be as “the philosophic tradition that has its roots in British thought of the late 19th and early 20th centuries and is currently practiced mostly in American departments of philosophy.” Although largely true, there is a certain deeper ‘family resemblance’ between analytic philosophers in seeking clarity of argument through the application of (often formal) logic and a respect for mathematics and the natural sciences. At times this focus might seem as silly as mathematical physicist John Baez writes:

[I]n the US many academic philosophers have “mathematics envy”, just as economists have “physics envy”. They admire the precision and rigor of mathematics, especially mathematical logic. But ask them to compute the cohomology of a CW complex, or solve an elliptic PDE, and they get cold feet.

But it is this envy that cstheorists can leverage to enter into modern philosophy. This is not to say that I am comfortable with cohomology or elliptic PDEs — heck, even a large system of ODEs will have me reaching for a warm pair of socks — but a theory oriented computer science education leaves one relatively comfortable with math. More importantly, the experience of regularity conversing with a computer is great preparation for formalizing the ‘obvious’.

Of course, I am not the first person to push for this sort of philosophy. As I alluded in the opening, I believe the early work of computational pioneers like Church, Godel, Post, Turing, von Neumann and others was fundamentally scientific and philosophical in nature. However, I believe that much of this spirit was lost to the seduction of engineering and technology and is only now being recaptured with the work of thinkers like Aaronson, Chaitin, Deutsch, de Wolf, Papadimitrious, and Valiant (to name the few whose work I am familiar with). For some exemplary work, I recommend Ronald de Wolf’s master’s thesis Philosophical Applications of Computational Learning Theory (1997), and Scott Aaronson’s Why Philosophers Should Care About Computational Complexity (2011) and recent meditation on free-will (2013).

Traditional philosophers were not passive in their “mathematics envy”, either. German philosophers pioneered mathematical philosophy and pushed it to the point of creating the Munich Center for Mathematical Philosophy. They even have an introductory Coursera course starting on July 29th:

They are extending analytic philosophy past formal logic, and touching on domains of particular interest to me such as game theory. But, they are not using the insights of theoretical computer science, and only using the computational tools of simulation — a roadmap that I fear will lead their expedition to the curse of computing instead of its grail. Although I am looking forward to taking their course — and hope that you will join me in the G+ study group — I don’t think Leitgeb and Hartmann are guiding analytic philosophy in the same direction as a theoretical computer scientist would.

### Scientific inquiry as machine learning

To start exploring algorithmic philosophy of science, the last tenet of analytic philosophy that we need — and the only part of logical positivism that continues to resonate with me — is a deference to science on what is foundational or fundamental, and a focus on maintaining a minimally restrictive metaphysics. As such, if we want to look at the philosophy of science, we should begin with an instrumentalist or operationalist perspective. The latter stance originated with Percy Williams Bridgman (1927) The Logic of Modern Physics and most of its subsequent impact was in psychology (rather than physics) where it was introduced by Stevens (1935a,b) and Hull (1943) as a relaxation of Watson and Skinner’s behaviorism. In fact, in physics it is often blamed for the anti-philosophical stance of “shut-up and calculate”, although to me it seems essential to modern work on foundations of quantum mechanics. However, we will use it primarily because of its agnostic treatment of realism and leave the metaphysical questions of ‘what is really real‘ out of this philosophy of science.

Through the lens of operationalism, a scientist or naturalist sets up an experiment or takes note of conditions leading up to their observation and then measures — either actively or passively — some quantity. We can think of the experiment (or notes on conditions) as a string of symbols from some alphabet of basic experimental (or observational) steps. Let us assume that this alphabet is fixed and finite, but allow for arbitrarily long experimental descriptions; if you need a more concrete proxy then think of the alphabet as English words (or if that isn’t fixed enough, then letters) and the strings as the method sections of papers (although in reality we would need a slightly better behaved description of experiments; English is just too quirky). A measurement in just a real number that corresponds to some quantity of interest, however we will at times restrict our measurements to even simpler binary indicators.

In this setting, the world is just a mapping from experimental procedures to measurements. If our set of basic experimental observations is $\Sigma$ then any experiment is described by a word $w \in \Sigma^*$. Thus, the real world is the functions:

$f: \; \Sigma^* \rightarrow \mathbb{R}$

And we hope to learn some hidden structure underlying this mapping. Since I am only interested in mechanistic theories, I will assume that no magic is happening and our theory is expressible as terms in lambda calculus. Now suppose that this structure corresponds to some states that map from an initial configuration given by lambda-term $\alpha$, and is measured by some function $\omega$ to the reals. In other words (reading our operations from left to right as a programming language, not right to left as is typical for functions):

$f(w) = \alpha F(w) \omega$

and the goal of a theoryfull scientist is to learn $F$ and the state space it operates on (if that can be represented as something simpler than all possible lambda-terms). Note that this does not assume realism, since $F(w)$ does not need to describe a ‘real’ state of the world, but could just specify our description; if you are thinking in terms of quantum mechanics — $F(w)$ could just specify a transformation on the Hilbert space with no philosophical assumptions about the Hilbert space being ‘real’. However, we will ask these states to be well behaved in the sense that we can think of experimental procedures acting on them step by step. In particular, if our instructions $w = uv$ then $F(uv) = F(u)F(v)$. Our hidden world has some configuration after $u$ that is independent of if $u$ is followed by a measurement or other experimental manipulation $v$. We will also ask for a ‘nothing’ experimental operation $\epsilon$ that corresponds to the identity on our space $F(\epsilon) = \mathrm{\lambda x.x}$.

The above two assumptions on $F$ mean that it has the structure of a monoid. From representation theory, we know that the actions of a monoid with basis $\Sigma$ can be represented by a set of matrices $\{M_\sigma\}_{\sigma \in \Sigma}$ acting on a real vector space. Therefore, our hypothesis class is restricted the set of vectors $\alpha$, $\omega$ in some real vector space, and matrices $\{M_\sigma | \sigma \in \Sigma\}$ acting on that vector space. Since we can only describe a finite amount of information, we might as well make our last restriction: the underlying vector space is finite dimensional.

For a given alphabet $\Sigma$ and finite dimensional vector space $\mathbb{R}^n$ we can define a weighted automaton (Esik & Kuich 2009; Mohri, 2009) on it as the tuple:

$A = \langle \alpha, \omega \in \mathbb{R}^n, \{M_\sigma \in \mathbb{R}^{n \times n} | \sigma \in \Sigma \} \rangle$

Here $\alpha$ is the initial state, $\omega$ is a final measurement, and for each $\sigma \in \Sigma$ we have a corresponding transition matrix $M_\sigma$. The dimensionality of the underlying vector space is the size of the machine, i.e. $\text{size}(A) = n$. The world $f_A$ described by this machine is:

$f_A(\sigma_1...\sigma_m) = \alpha M_{\sigma_1} ... M_{\sigma_m} \omega$

Weighted automata are the perfect hypothesis class to describe an arbitrary real world within our assumptions. Monoids are central, but our last restriction on the existence of a finite dimensional representation means that only some monoids are valid hypotheses. Thankfully, we can qualify this condition in terms of the basic structure of our world $f$. Let us introduce the Hankel matrix $H_f: \Sigma^* \times \Sigma^* \rightarrow \mathbb{R}$, defined as $H(u,v) = f(uv)$, to give us the theorem:

$\mathrm{rank}(H_f) \leq n$ if and only if there exists a weighted automata representation of $f$ of size $n$.

Inherent in the proof of the above theorem is a way to construct the weighted automaton corresponding to $f$ from the Hankel matrix $H_f$ for $f$. Unfortunately, the Hankel matrix is an infinite object but its rank gives us finite handles with which to wrangle it in.

The best part about weighted automata is that they work not only over the reals, but any field (actually, any semiring in the most general treatments, but the linear algebra becomes more hairy). As such, if we want to compare to more standard models of computation then we can replace $\mathbb{R}$ by either the Boolean semiring or the field of two elements $\mathbb{GF}(2)$ ($\mathbb{Z}_2$ for short).

In this case, we can think of measurements as yes-no questions, and our real world as a function:

$f: \Sigma^* \rightarrow \{0,1\}$

And simply consider the subset $L_f \subseteq \Sigma^*$ on which $f$ is $1$. In that case, we can see what restrictions our common sense assumptions put on the operationalist theories we can represent: our functions can only be the indicators for regular languages. This might seem depressingly simple at first, but it actually takes us into a rich area of computational learning theory. Just like Valiant (2009) framed evolution (and ecorithms more generally) as a formal subset of machine learning, algorithmic philosophy allows us to look at the act of scientific inquiry as a formal subset of machine learning. This lends credibility to Valiant’s view of human activity as ecorithms. I will deal with implications, limitations, and critiques of this viewpoint in future posts. I hope that you will join me for the rest of this expedition!

### References

Aaronson, S. (2011). Why philosophers should care about computational complexity. arXiv preprint arXiv:1108.1791.

Aaronson, S. (2013). The Ghost in the Quantum Turing Machine. arXiv preprint arXiv:1306.0159.

de Wolf, R. M. (1997). Philosophical Applications of Computational Learning Theory: Chomskyan Innateness and Occzam’s Razor (Master’s thesis, Erasmus Universiteit Rotterdam).

Esik, Z., & Kuich, W. (2009). Finite Automata. Handbook of Weighted Automata, 69-104.

Hull, C. L. (1943). Principles of behavior: An introduction to behavior theory.

Mohri, M. (2009). Weighted automata algorithms Handbook of Weighted Automata, 213-254 DOI: 10.1007/978-3-642-01492-5_6

Stevens, S. S. (1935a). The operational basis of psychology. The American Journal of Psychology, 47(2), 323-330.

Stevens, S. S. (1935b). The operational definition of psychological concepts. Psychological Review, 42(6), 517.

Valiant, L.G. (2009) Evolvability. Journal of the ACM 56(1): 3.

From the Department of Computer Science at Oxford University and Department of Translational Hematology & Oncology Research at Cleveland Clinic, I marvel at the world through algorithmic lenses. My mind is drawn to evolutionary dynamics, theoretical computer science, mathematical oncology, computational learning theory, and philosophy of science. Previously I was at the Department of Integrated Mathematical Oncology at Moffitt Cancer Center, and the School of Computer Science and Department of Psychology at McGill University. In a past life, I worried about quantum queries at the Institute for Quantum Computing and Department of Combinatorics & Optimization at University of Waterloo and as a visitor to the Centre for Quantum Technologies at National University of Singapore. Meander with me on Google+ and Twitter.

### 25 Responses to Monoids, weighted automata and algorithmic philosophy of science

1. Martino says:

I’m not familiar with much of the mathematics, but it sounds fascinating.
(Note: twice in the text there are formulas that fail to be interpreted as latex and are shown within ).

• Thank you!

I fixed the LaTeX typos, WordPress has this annoying feature where you must write dollar sign followed by ‘latex’ instead of just opening with a single dollar sign and when I type quickly I tend to forget.

2. ishanuc says:

“our functions can only be the indicators for regular languages.”–

are you referring to the fact that regular languages are decidable while CFLs are not?

Also, dont you think the notion of the physical experiment as $\Sigma^\star \rightarrow \mathbb{R}$ is too simplistic? What about experiments that yield probabilistic outcomes…. wont it be better to think of experiments mapping words to a probability measure?

• are you referring to the fact that regular languages are decidable while CFLs are not?

No, finite dimensional weighted automata recognize the set of regular languages (i.e. WA are just another way of writing finite automata). Of course, as you note, if we had a more powerful language class then most problems we would want to ask about theories would be undecidable. However, we are not getting this is just a convenient feature, and not a built in assumption. The actual assumptions that lead to this are the monoid structure on how we write down experimental procedures. One could easily object here that we should employ a much richer grammar for writing down experiments and I have no good response to that apart from saying: “but it works so much nicer if we use this, so why not start here?”

We could try to argue for using the free monoid on $\Sigma$ as our way of writing experiments by saying: “if we use something more complicated then answering most questions about theories will become impossible”. Unfortunately, I prefer not to take this route, since there is the old economist defense: “well, when I say that we are looking at a more complicated structure, I don’t mean any arbitrary (or adversarially) chosen members of that structure, but just the ones that ‘play nice’.” I call this the economist defense because it is how the argue that complexity theoretic results about equilibria in game theory and models of economies are irrelevant. Of course, economists are not the only (or even the first) to make these arguments. I am sure plenty of linguists argued something similar after Gold (and I would have joined them).

I don’t think $\Sigma^* \rightarrow \mathbb{R}$ is too simplistic, or at least I don’t think “lets put something more complicated than $\mathbb{R}$ on the RHS is a powerful objection. A probability is just another measurement: a real number that happens to be between 0 and 1, so WA over reals can work with them. But if you insist on the replacement then as I mentioned, WA are pretty robust and we can replace the right hand side by any finite set or infinite set that can form a module over our underlying semiring.

The more serious objection in my opinion though, is If you are getting a probability measurement out then you probably have an instruction like “repeat 1000 times” somewhere in your experiment. This means that your measurement is noisy (although maybe you can make the noise pretty small). Unfortunately, when we work with weighted automata, we are usually looking at properties like rank, and it is a simple fact that if we have a rank deficient matrix and we perturb its entries with random noise then the matrix jumps up to full rank with high probability (over the reals or any noncountable set, it would be with probability 1). Thus, the real issue is how to deal with noisy measurement, in practice we can just introduce some sort of regularization and ask: “is there a matrix of a significantly lower rank ‘near’ our measured data?”

Note: I hope you don’t mind, but I edited your comment to make your latex render. WordPress has this annoying feature where instead of just writing dollar-sign to open math-mode you need to write dollar-sign-‘latex’ all as one word. Closing math mode is still done with a single dollar-sign.

3. Starry D says:

A correction: “last tenant” should be “last tenet”.

A tenant occupies a rental property.

A tenet is a principal or belief.

4. Starry D says:

But you’re not alone: other examples of this eggcorn: http://eggcorns.lascribe.net/english/300/tenant/

5. isaacthanghoe says:

Reblogged this on Sleepless With My Endeavours and commented:
Very good post by Artem Kaznatcheev. :D

6. JohnnyB says:

Thank you, this was wonderful.