May 14th, 2010
We have just created a group to discuss applications of quantum phenomena for engineering applications and how to address related challenges in modelling, simulating, designing and controlling quantum devices on linked in: Quantum Engineering. This is related to our overall aim of turning quantum physics into quantum technology. Join us, if you are interested.
While the rich physics of quantum phenomena continues to provide amble opportunity for physics research, quantum effects, once considered strange, have moved into the realm of engineering as novel means to find innovative solutions to current problems. However, there are many challenges that must be overcome to make such technologies a reality, including building tools to model, design, simulate and control such devices. A further challenge that remains is to find novel quantum device designs and integrate them with current technology, and to find novel approaches to utilise quantum effects. This requires an interdisciplinary effort and presents an opportunity for many engineering disciplines such as nano-engineering, material science, electronic engineering and control systems engineering, to work together with computer science, physics, mathematics. It may sound like fantasy to create devices that are faster and smaller while requiring less energy, are easy to recycle and are made from ubiquitously available materials, but quantum engineering may well solve at least some of these problems.
Categories: Research |
Tags: quantum engineering, quantum physics | No Comments
April 5th, 2010
Code to test the performance of matlab code and benchmark algorithms is now available here: perf. It uses the internal matlab walltime (tic/toc) and cputime functions as well as the PerformanceApplication Programming Interface (PAPI) using hardware counters for floating point operations, instructions, cycles and the PAPI real-time timer. It also counts m and builtin matlab function calls using matlab’s profiler. It’s mainly aimed at iterative algorithms.
See perf_test.m for some usage examples to collect the information and plot the results. Collecting information is done via perf_profile for the function call counters and perf_timing for the timers and PAPI counters. Use perf_profile_plot to plot and perf_timing_plot to plot the results. Iterative code needs to call perf_record_iteration(v) after each iteration to collect counters and timing information per iteration, where v is the value (vector) result for the current iteration.
The whole package still needs some detailed documentation and will be integrated with the Qyber package, mainly to test algorithms related to quantum engineering. For now this is an initial test version.
Categories: Research, Software |
Tags: benchmark, matlab, performance | No Comments
December 24th, 2008
The idea of a semantic web or just in general providing semantics is essentially to augment data with additional data providing more information about what the original data is about (and standardise this to enable communication/interfacing). This is supposed to enable algorithms to process the original data better and in some sense understand that data. Calling this meta data seems to be justified in as far as that the additional data is actually not directly used or useful to humans, but it is intended for the algorithms. Humans can go quite far with interpreting data without this additional information, as far as their knowledge, experience and intelligence actually allows them to.
However, in the semantic web context, it seems that this means the data provider also has to provide all useful semantic information and that appears impossible. The data provider can provide this information for the data in the original context, but the data itself may have a far wider use. This would be missed by any algorithm as it does not reinterpret the data in a new, unknown context, but only use the original interpretation(s). More generally it seems to suggest a purely extrinsic notion of understanding independent of the observer. While semantics information may be useful in a very narrowly defined, specific context, a single project or precisely defined subject area, in a wider context it seems hardly achievable or useful.
Instead, a system which builds models (of any sort, not just statistically, even if statistical models seem to be important, especially for human interpretation) based on the data available seems to enable reinterpretation of the data and enable using it in different contexts. The resulting models derived from the data may then still be augmented with semantics information to make them accessible. This would base semantics on actual data in combination with an interpretation instead of trying to make the data fit a particular view. But this is not always necessary or needed, depending simply on the use of the resulting models. Of course a certain bias can still be present depending on the type of models used. It also makes semantics more intrinsic, depending on the observer and how it/she/he builds the model. Many different models may even be build to explore concepts and these models may not be easily translatable into each other, if at all. Of course the question now becomes how to (reasonably quickly) build such models.
This is not just related to the semantic web, but also, say, to interpreting geometric models in the sense of describing it in terms that are meaningful to someone wishing to process (create, edit, analyse, etc.) the model. A fixed description of a model’s design intent in this context via history, geometric constraints, regularities, etc. seems to be restricting in a similar way than providing rather universal semantics to data on the web and does not allow for reinterpretation and with that reuse.
Categories: Research |
Tags: DesignIntent, Semantics | No Comments
December 24th, 2008
Let
be a closed, non-self-intersecting, piecewise linear curve given by the points
, which lie on a continuous surface. We seek, in a simplified sense here, a closed, non-self-intersecting piecewise linear curve
given by the points
, which still lie on the surface
(and
is within a small distance from the surface) such that
‘s distance to
on the outside of the region bounded by
is at most
and to the inside at most
.
should be in some sense smoother or fairer than
. One approach to compute
is to first identify non-smooth segments of
which can then be improved by some algorithm. Also see http://www.langbein.org/research/curves/smoothing/boundary-smoothing/.
In general a smooth or fair curve can be characterised by having a minimal number of segments with monotonic curvature (in our case geodesic curvature), i.e. minimise inflection points. Furthermore, the curve should overall have rather low curvature, i.e. minimise the curvature energy
, as far as this can be achieved under the constraints (see Euler’s elastica where the curve is only constrained by its end-points).
For a piecewise-linear curve a discrete curvature can be defined via the turning angles at its vertices. The turning angle values, however, depend on the sampling density as they are effectively the integrals over the curvature (
). Using Taylor expansion of the curve the curvature at a vertex can be approximated by
, which is optimal for three-point approximations in the linear terms and converges of fourth order for elastica if all edges have equal length (Langer et al, 2005, http://tinyurl.com/a25thy).
Using the above approximation we can determine inflection points as sign changes and using a maximum (absolute) curvature limit can furthermore label curve vertices as non-smooth if they exceed the limit. However, this alone does not identify non-smoothness of a curve on a larger scale than the local sampling distance. Moreover, the sampling distance should be reasonably uniform, which may or may not be the case for
. If
is noisy it may also result in rather noisy local curvature estimates, which can over- and under-estimate the curvature behaviour on a larger scale.
One way of identifying non-smooth curve segments on a larger scale is to ask how far the curve can be smoothed within the tolerance zone set by
and
in terms of how much
can be minimised within the tolerance zone. An efficient way to do this without actually solving the optimisation problem may be to estimate how far
can be minimised by moving the three
within the tolerance zone. Obviously one can then always minimise this to 0 by arranging the points along a (very short) line segment, so further restrictions are needed. One can restrict to move only
along the curve to a maximum distance and find the minimal curvature to estimate the improvement possible by taking the difference between the minimum and the actual local estimate. Or move the points “orthogonal” to the curve in the tolerance zone again to find the best improvement. Or possibly find the (approximately) longest line segment through
lying inside the tolerance zone to set the scale along which
can be moved along the curve to estimate the curvature improvement.
In general estimating the variation of curvature possible over a certain length range seems to indicate quite well how much the curve may be smoothed locally under the constraints and hence either label vertices with high potential for smoothing as non-smooth or even derive a smoothing priority for the vertices. See the figures below where the curve is plotted in black, the maximal improvement of the absolute curvature in magenta and curve vertices which can be improved by more than a certain amount are marked blue. Underneath the estimated vertex curvature is plotted in red, the maximal and minimal curvature achieved by moving the two adjacent points along the curve a certain maximal distance are plotted in green and the mean curvature is plotted in blue. The range the points could be moved is about four times as big in the first figure compared to the second figure.

Discrete Curvature Plot and Non-Smooth Points at Large Range.

Discrete Curvature Plot and Non-Smooth Points at Shorter Range.
For completeness, here are the matlab files to generate the above plots, etc:
Categories: Research |
Tags: BoundaryCurveSmoothing | No Comments