I had strange theoretical dreaming as I was rousing from sleep.

Three distinctly different, and offbeat, concepts presented.

The first was on the use of tree structures as representations of the program paths and execution histories of running programs... simulacra of an executing program as it were. It is theoretically possible now to represent the entire history of a program, from its inception through development, instances of its executions, and archival, in a hypernetwork -- which hypernetwork can be exposed as tree structured markup. This was evident to me from my first exposure to SGML in 1992, but not something I felt was practical or useful to discuss with those around me. I'm not sure why it occurred to me again.

The second was the idea that time is... I'm grasping for it now as it fades... the virtual interface between spacial dimensions. In my dream I was making a presentation of some sort of simulation or model, and explaining that "we can choose to view space as having only one dimension", space-time being what results when a singularity is expanded. Time is the interface between the vectors as they span out from the center. (I don't know what that was supposed to really mean. I get the image of the universe as an grain of puffed wheat, foamy with slight tearing spread throughout, the distance between the edges of the tearing of which constitutes time. But as far as I know, that's just gobbledygook.)

The third thing that occurred to me was a formal definition of something called "demi-orthogonality", in conjunction with the "isometric vertexion" defined by Fuller. Fuller's construction involves 12 vectors radiating out from a center point, each in alignment with the edges of an octahedral/tetrahedral truss -- that is, the center-to-vertex vectors of an icosahedron. So in my dream ideation, demi-othogonality as it were, was defined as being a property of such a set of vectors, an analog of the orthogonality among the standard basis vectors in 3-space. I awoke as it was being defined... something about some subset of the vectors summing to the negation of one of the other vectors.

After I awoke, I thought about it for a minute, and considered that would mean demi-orthogonality couldn't be connected to orthogonality. So I thought about the definition as:

a set of vectors {a, b, ...n} in the M-space is demi-orthogonal to a vector q in the M-space if and only if there exists a vector r orthogonal to q such that the vector sum of q and r is the negation of the vector sum of {a, b, ...n}.

Don't take that definition as meaning anything important. It was only a dream. I haven't even tried to look up any other definition(s) of demi-orthogonal (but just now Google shows none.)

## Saturday, December 29, 2007

## Sunday, September 16, 2007

### In Diffeqs

An nth-order diffeq has the general form F(x, y, dy/dx, ... d^ny/dx^n)=0. Often it is restated with the highest order derivative term isolated on one side. Add an initial condition in the form of y(m) = k, and you've got an initial value problem.

We started with Initial Value problems for n-th order diffeq's. Generally, these consist of a stated differential equation dy/dx=f(x,y), and a specified value for y(0)= some number. We use he Theorem which states that if f and its partial derivative df/dy are continuous over a rectangle, then the problem has a unique solution function F(x) in some interval within that rectangle.

The solution to a diffeq is often an implicit solution, a relation G(x,y)=0 which when differentiated implicitly can be shown to be equivalent to the diffeq. The relation then implicitly defines one or more explicit solutions on an interval I. An explicit solution is a function F(x) that when substituted for y in the diffeq, satisfies the equation for all x in the interval. You verify this simply by substituting.

Newtons Law of Heating and Cooling

dT/dt = k(A(t)-T(t)) + H(t) + U(t),

where H(t) is a composite of heat sources and U is the HVAC system, each having similar formulas with constants of proportionality. A(t) is the temp of the exterior environment, T(t) is the temp of an object such as a cup, bottle, auto, or interior air of a building.

In the case of U(t), the formula involves a different kf (Td(t)-T(t)) where Td(t) is the setpoint for the thermostat and T(t) .

The constants of proportionality in both cases are positive, so if the interior temperature is higher than the setpoint, the HVAC system should be working to get it down and the differential - the slope corresponding to the change in temperature - should be negative. Similarly when the external air temp is high and the internal temp is lower, a building or cup should be experiencing an increasing temperature, an upward slope, and a positive differential. Both should level out as the differences get smaller and smaller. Note that sometimes an HVAC system may work with the outside temperatures, but most often against it.

We often solve these problems with the Integration Factor method, because they are first order linear equations. Sometimes they are separable too.

We also re-visited Separation of Variables as a method, most often to be applied against non-linear first order diffeqs. If the variables can be separated to different sides of the equation, do so, then integrate both sides.

The other method we looked at was that of Exact Equations. If an equation is exact, you can put it into the form of a Total Differential. First you check for exactness - it will be exact if the second-mixed-partial derivatives of each component are equivalent. That done, you read off the "M(x,y)dx" first-order-mixed-partial derivative, and integrate wrt x to get F(x,y)= something +g(y) ; solve for g(y) by taking the partial derivative wrt y, and using the fact that "N(x,y)" is also the partial dF/dy and solve for g'(y), then integrate back again to get g(y). Substitute g(y) back into the earlier integral of M to get F(x,y)=C. Specific solutions can be found by solving for C using initial conditions.

Other things we covered: direction fields; basically sketching in the dy/dx as marks representing the slope over a given rectangle on an xy grid; the method of isoclines (level curves); take the diffeq y'=f(x,y) and fix the equation to equal constants f(x,y)=(c) at fixed intervals. Then solve it for y to get a line you can sketch in along which the dy/dx is always the same (c). Draw tick marks representing the dy/dx=f(x,y) at points along those lines, then erase the lines. I sucked at this. The book doesn't explain it well, and the constant "c" is not the slope of the isocline, so it can get confusing. It is also not general: where the diffeq is not linear it can get convoluted.

We also studied Euler's method of approximation, using the first couple of terms of a Taylor's series to estimate the solution value of a diffeq at a point, when given another point a fixed distance away. y=y0+(x-x0)*f(x0,y0)... the next x value is x plus a bit of increment, the next y value is the first y value plus the product of the bit of increment along x times the evaluted diffeq at the first point. Work a little bit of slope into it. To extend it requires taking higher order n-th derivatives, and dividing by the n-th factorial, so it is analytically more complicated to get better estimates this way.

Runge-Kutta goes further, defining four composite functions k1...k4, where the next y value is the first y value plus 1/6th of the sum (k1+ 1/2(k2+k3) + k4), and the next x value is simply x plus the bit of increment. k1 is like Euler's, the increment times f(xo,y0). k2 is the increment times the f() evaluated at (xo+increment/2, y0+k1/2). k3 is the incrment times the f() evaluated at (x0+increment/2, y0+k2/2). k4 is the increment times the f() evaluated at x0+increment, y+k3). More convoluted numerically, but less so analytically than Euler's.

We started with Initial Value problems for n-th order diffeq's. Generally, these consist of a stated differential equation dy/dx=f(x,y), and a specified value for y(0)= some number. We use he Theorem which states that if f and its partial derivative df/dy are continuous over a rectangle, then the problem has a unique solution function F(x) in some interval within that rectangle.

The solution to a diffeq is often an implicit solution, a relation G(x,y)=0 which when differentiated implicitly can be shown to be equivalent to the diffeq. The relation then implicitly defines one or more explicit solutions on an interval I. An explicit solution is a function F(x) that when substituted for y in the diffeq, satisfies the equation for all x in the interval. You verify this simply by substituting.

Newtons Law of Heating and Cooling

dT/dt = k(A(t)-T(t)) + H(t) + U(t),

where H(t) is a composite of heat sources and U is the HVAC system, each having similar formulas with constants of proportionality. A(t) is the temp of the exterior environment, T(t) is the temp of an object such as a cup, bottle, auto, or interior air of a building.

In the case of U(t), the formula involves a different kf (Td(t)-T(t)) where Td(t) is the setpoint for the thermostat and T(t) .

The constants of proportionality in both cases are positive, so if the interior temperature is higher than the setpoint, the HVAC system should be working to get it down and the differential - the slope corresponding to the change in temperature - should be negative. Similarly when the external air temp is high and the internal temp is lower, a building or cup should be experiencing an increasing temperature, an upward slope, and a positive differential. Both should level out as the differences get smaller and smaller. Note that sometimes an HVAC system may work with the outside temperatures, but most often against it.

We often solve these problems with the Integration Factor method, because they are first order linear equations. Sometimes they are separable too.

We also re-visited Separation of Variables as a method, most often to be applied against non-linear first order diffeqs. If the variables can be separated to different sides of the equation, do so, then integrate both sides.

The other method we looked at was that of Exact Equations. If an equation is exact, you can put it into the form of a Total Differential. First you check for exactness - it will be exact if the second-mixed-partial derivatives of each component are equivalent. That done, you read off the "M(x,y)dx" first-order-mixed-partial derivative, and integrate wrt x to get F(x,y)= something +g(y) ; solve for g(y) by taking the partial derivative wrt y, and using the fact that "N(x,y)" is also the partial dF/dy and solve for g'(y), then integrate back again to get g(y). Substitute g(y) back into the earlier integral of M to get F(x,y)=C. Specific solutions can be found by solving for C using initial conditions.

Other things we covered: direction fields; basically sketching in the dy/dx as marks representing the slope over a given rectangle on an xy grid; the method of isoclines (level curves); take the diffeq y'=f(x,y) and fix the equation to equal constants f(x,y)=(c) at fixed intervals. Then solve it for y to get a line you can sketch in along which the dy/dx is always the same (c). Draw tick marks representing the dy/dx=f(x,y) at points along those lines, then erase the lines. I sucked at this. The book doesn't explain it well, and the constant "c" is not the slope of the isocline, so it can get confusing. It is also not general: where the diffeq is not linear it can get convoluted.

We also studied Euler's method of approximation, using the first couple of terms of a Taylor's series to estimate the solution value of a diffeq at a point, when given another point a fixed distance away. y=y0+(x-x0)*f(x0,y0)... the next x value is x plus a bit of increment, the next y value is the first y value plus the product of the bit of increment along x times the evaluted diffeq at the first point. Work a little bit of slope into it. To extend it requires taking higher order n-th derivatives, and dividing by the n-th factorial, so it is analytically more complicated to get better estimates this way.

Runge-Kutta goes further, defining four composite functions k1...k4, where the next y value is the first y value plus 1/6th of the sum (k1+ 1/2(k2+k3) + k4), and the next x value is simply x plus the bit of increment. k1 is like Euler's, the increment times f(xo,y0). k2 is the increment times the f() evaluated at (xo+increment/2, y0+k1/2). k3 is the incrment times the f() evaluated at (x0+increment/2, y0+k2/2). k4 is the increment times the f() evaluated at x0+increment, y+k3). More convoluted numerically, but less so analytically than Euler's.

### Voices

I noticed after returning to NC State, that when studying I can hear the echoes of my instructor's voices repeating some method or recommendation. It fades. Usually, it is helpful - it comes with the lecture format - but it can be detrimental if your instructor purposefully wastes class time with neurotic personal complaints, is deliberately argumentative, is obnoxiously loud with random outbursts, can't stay on topic, and to top it off, fails to cover the material.

Speaking for myself, it just causes anxiety and a desire to avoid studying. Why would I want the memory of that kind of voice in my head?

Fortunately in a college environment, there are options like dropping or section switching, not to mention a formal complaint process.

Speaking for myself, it just causes anxiety and a desire to avoid studying. Why would I want the memory of that kind of voice in my head?

Fortunately in a college environment, there are options like dropping or section switching, not to mention a formal complaint process.

### Studies for first period

So here's the lowdown on what I'm doing at NCSU. I initially took a 15 credit course load, which would have been ok except that four of the classes were upper level math. My bad. Just before the first class date, I dropped the one major paper report to open up time for studying. Unfortunately that dropped me down to 12 credits.

In retrospect, I should have held onto the course. It turned out that for a much different reason it made sense to drop one of the math electives. Lesson: when you get a gut feeling that the instructor is wrong for you, listen to it and act as soon as possible. Corollary: load up your schedule and be prepared to make drops early, not later.

What's left? Linear Algebra, Diff Eq's, and Intro to Adv. Math (proofs).

In retrospect, I should have held onto the course. It turned out that for a much different reason it made sense to drop one of the math electives. Lesson: when you get a gut feeling that the instructor is wrong for you, listen to it and act as soon as possible. Corollary: load up your schedule and be prepared to make drops early, not later.

What's left? Linear Algebra, Diff Eq's, and Intro to Adv. Math (proofs).

## Sunday, September 2, 2007

### Open Source vs Commercial

A frequent criticism of open source software is the presupposed lack of documentation. Yet one shouldn't assume that commercial math packages are actually well documented. In terms of usability, neither category of software has bragging rights. The Maple 11 documentation and TI-89 (TI-86 and TI-92) are my most recent source of frustration.

One problem is that the reference documentation is little more than a dump of interface specifications. Hint to vendors: even reference docs should relate information to tasks users are trying to perform and goals they are seeking to accomplish. There seems to be a trend to rely on spotty "tutorials" by the vendor and third parties. The giant flaw in the pedagogical approach is that it presents lots of irrelevant content while providing virtually no direction on what steps to take next.

In particular, the documentation often fails to answer "how do I _____" questions. Take the TI89 manual, for instance. A programmable calculator, the TI-89's manual dedicates all of two pages (one sheet, both sides) to the subject of writing a program.

Now, one might imagine that on-line resources would help here. Yet, one could Google for several hours and never find a well-organized, reasonably complete topical guide on programming the TI-89. There are plenty of supposed tutorials, and numerous programming libraries -- even so there are few program listings directly viewable on the Web -- but they overlook simple things. For instance, some TI Basic commands are allowed in program definitons and some within functions, but some are not allowed in certain contexts. There seems to be no well-organized guide which includes descriptions of the contexts in which commands may be written. Can't I include a "For" in a function? Why does inclusion of a "local" statement in a program cause an "Unknown variable" error -- shouldn't it be the other way around?

Similarly, with Maple 11, I found myself wanting to take advantage of the Spreadsheet interface. It was simple enough to insert a spreadsheet, but when I began inserting labels in the row I intended to use as a header, Maple gave me an evaluation error. It figured I was entering a formula. So new questions are posed. How does one set a row up as a header? How does one enter a label as text, not as an evaluated value? Is there even a difference between a header and a data row? The help page is of no help, Google searching turns up nothing obviously addressing the subject, and Maple's site offers nothing but lots of useless noise.

Don't get me wrong: I purchased Maple because I think it has a stronger set of features than the open source options such as Maxima. But trying to chase down questions such as these is akin to performing a forensic analysis on archaic pictographs to learn the grammar of a dead language. I find that I have to do this more often with commercial software programs, and less often with open source programs. In the latter case, Google more often turns up highly cohesive forum results from users with similar questions, or contributor-authored "How To" guides and solid (if work-in-progress) topical and task-oriented references.

I suppose the robustness of such resources depends a lot on the vitality of the user community, but also the organizational skills and foresight on the part of the project leaders. In the case of TI and Maplesoft at least, I think some of those skills need to be honed.

One problem is that the reference documentation is little more than a dump of interface specifications. Hint to vendors: even reference docs should relate information to tasks users are trying to perform and goals they are seeking to accomplish. There seems to be a trend to rely on spotty "tutorials" by the vendor and third parties. The giant flaw in the pedagogical approach is that it presents lots of irrelevant content while providing virtually no direction on what steps to take next.

In particular, the documentation often fails to answer "how do I _____" questions. Take the TI89 manual, for instance. A programmable calculator, the TI-89's manual dedicates all of two pages (one sheet, both sides) to the subject of writing a program.

Now, one might imagine that on-line resources would help here. Yet, one could Google for several hours and never find a well-organized, reasonably complete topical guide on programming the TI-89. There are plenty of supposed tutorials, and numerous programming libraries -- even so there are few program listings directly viewable on the Web -- but they overlook simple things. For instance, some TI Basic commands are allowed in program definitons and some within functions, but some are not allowed in certain contexts. There seems to be no well-organized guide which includes descriptions of the contexts in which commands may be written. Can't I include a "For" in a function? Why does inclusion of a "local" statement in a program cause an "Unknown variable" error -- shouldn't it be the other way around?

Similarly, with Maple 11, I found myself wanting to take advantage of the Spreadsheet interface. It was simple enough to insert a spreadsheet, but when I began inserting labels in the row I intended to use as a header, Maple gave me an evaluation error. It figured I was entering a formula. So new questions are posed. How does one set a row up as a header? How does one enter a label as text, not as an evaluated value? Is there even a difference between a header and a data row? The help page is of no help, Google searching turns up nothing obviously addressing the subject, and Maple's site offers nothing but lots of useless noise.

Don't get me wrong: I purchased Maple because I think it has a stronger set of features than the open source options such as Maxima. But trying to chase down questions such as these is akin to performing a forensic analysis on archaic pictographs to learn the grammar of a dead language. I find that I have to do this more often with commercial software programs, and less often with open source programs. In the latter case, Google more often turns up highly cohesive forum results from users with similar questions, or contributor-authored "How To" guides and solid (if work-in-progress) topical and task-oriented references.

I suppose the robustness of such resources depends a lot on the vitality of the user community, but also the organizational skills and foresight on the part of the project leaders. In the case of TI and Maplesoft at least, I think some of those skills need to be honed.

## Saturday, August 18, 2007

It was very tough for him, especially so the first couple of days. It was tough on us too, seeing and hearing him go through it, but he recovered quickly from the initial surgery. We hope and expect that the xrays will show good bone growth, and that healthy walking and exercise habits will help keep him straight.

ps. Special thanks to Miss S. - you know who you are - who had a repeat procedure just after my son (and by the same team) to correct kyphosis. Miss S., we appreciated your encouragement and that you shared your experience with us.

### On the title

The title of this blog comes from R. Buckminster Fuller. The full quote:

"Unity is plural, and at a minimum, two."

I studied RBF's writings as a kid after doing an elementary school report on geodesic domes. He idealized himself in his writings, but was not very forthright in giving Kenneth Snelson due credit for his seminal contributions to tension-wire structures ("tensegrities").

## Thursday, August 16, 2007

### Opening day

I decided to start blogging after my 25th high school reunion. (via Classmates.)

I actually started keeping an electronic work-related journal around '96, using scripts to make log entries, but the files are mostly gone - a victim of forgetfulness during a move. I still have some entries in a locally hosted Wiki from a later period, that I'll re-post publicly from time to time.

This Web log will contain personal news and things about which I am curious, which includes a number of topics. I'm not so much interested in ranting about issues, than inquiring and knowing.

I actually started keeping an electronic work-related journal around '96, using scripts to make log entries, but the files are mostly gone - a victim of forgetfulness during a move. I still have some entries in a locally hosted Wiki from a later period, that I'll re-post publicly from time to time.

This Web log will contain personal news and things about which I am curious, which includes a number of topics. I'm not so much interested in ranting about issues, than inquiring and knowing.

Subscribe to:
Posts (Atom)