MaplePrimes Posts

MaplePrimes Posts are for sharing your experiences, techniques and opinions about Maple, MapleSim and related products, as well as general interests in math and computing.

Latest Post
  • Latest Posts Feed
  • MapleNet 18 is now available.  MapleNet 18 provides increased mobile support and eliminates the need for a Java plug-in when interacting with Maple documents in a web browser. See What’s New in MapleNet 18 for more information.

     

    eithne

    Hi, we recently put together a web video on how memes spread on the internet using several visualizations generated from Maple 18:

    http://youtu.be/vEhAkEPwESI

    Found the new ability to specify a background image for plots to be very helpful.

    Reporting from Amsterdam, it's a pleasure to report on day one of the 2014 Maple T.A. User Summit. Being our first Maple T.A. User Summit, we wanted to ensure attendees were not only given the opportunity to sit-in on key note presentations from various university or college professors, high school teachers and Maplesoft staff, but to also engage in active discussions with each other on how they have implemented Maple T.A. at their institution.

    We started things off by hearing an encouraging talk by Maplesoft’s president and CEO Jim Cooper. Jim started things off with a question to get everyone thinking; “How will someone born today be educated in the 2030s?” From there, we heard about Maplesoft’s vision on education, learning, and questions we have to ask ourselves today to be prepared for the future.

    Up next was Louise Krmpotic, Director of Business Development. Louise discussed content and Maple T.A. This included an overview of our content team operations, what content is currently available today, and how users can engage themselves in the Maple T.A. community and get involved in sharing their own content with other users.

    We then heard our first keynote presentation by Professor Steve Furino and Rachael Vanbruggen of the University of Waterloo.  We were provided with a brief history of the University of Waterloo and mathematics as well as their ever expanding initiative in brining math courses into an online environment both at the university level and high school level. We then heard in detail of how Maplesoft technologies have been implemented in various math courses and the successes and challenges of creating their own content.

    I (Jonny Zivku, Product Manager of Maple T.A.) then delivered a presentation on all the new features in Maple T.A. 10. I won’t get into detail about the new features in this post, but if you’d like to read more about it, check out my previous post from a few weeks ago.

    Meta Keijzer-de Ruijter of TU Delft University then took the floor and delivered our second keynote presentation. She discussed the history of Delft as well as the new initiative, the Delft Extension School. She then went on to discuss Delft’s experiences with implementing Maple T.A. at their campus and maintaining it since 2007 as well as how they’ve managed to maintain their academic integrity while using online tools. We also had the opportunity of seeing several examples of some of their excellent questions they’ve created which included adaptive, math apps, algorithms, maple-graded and more.

    After a delicious lunch break, Paul DeMarco from Maplesoft, Director of Maple and Maple T.A. Development, talked about the future of testing and assessment. Paul went over various topics and how we envision them changing which included partial marks, skills assessment, learning, feedback, and content.

    Jonathan Kress from the University of New South Wales was up next and discussed their experiences with implementing Maple T.A. into their mathematics and statistics courses at a first year, second year, and higher level of learning. He then discussed the various scenarios for how Maple T.A. is deployed which included both formative and summative testing. Moving on, we then were briefed on Maple T.A. use from a student's perspective and an overview of various pieces of content.

    We then moved on to an engaging panel discussion which featured Grahame Smart, math and e-learning consultant, Professor Marina Marchisio of the University of Turin and Dr. Alice Barana also from the University of Turin. Grahame first started things off by discussing how he doubled the pass rates in his prevoius high school using investigative and interactive learning with Maple T.A. Marina and Dr. Barana then gave us a brief overview of Maple T.A. at the University of Turin and their exciting PP&S project. The panel then answered various questions from the audience

    William Rybolt of Babson College then closed off the presentations with a discussion about how his school has been a long time user of EDU, Maple T.A.’s predecessor.  Going from ungraded web pages, web forms, and Excel, we heard about Babson’s attempts at converting paper-based assignments into an online format until 2003 when they decided to adopt EDU.

    To end the day, we enjoyed a nice cruise on the canals of Amsterdam while enjoying a delicious three course meal. Not a bad way to end the day!

    Jonny
    Maplesoft Product Manager, Maple T.A.

    We have just released a new version of MapleSim.

    MapleSim 7 makes it substantially easier to explore and validate designs, create and manage libraries of custom components, and use your MapleSim models with other tools. It includes:

    • Easy model investigation. A new Results Manager gives you greater flexibility when it comes to investigating your simulation results, including the ability to compare simulation runs on the same axes, instantly plot both probed and unprobed variables, and easily create custom plots.
    • Convenient library creation. With MapleSim 7, it is significantly easier to create, manage, and share libraries of custom components.
    • Improved Modelica support. MapleSim 7 expands the support of the Modelica language so that more Modelica definitions can be used directly inside MapleSim.

    We have also updated and expanded the MapleSim 7 family of add-on products:

    • The new MapleSim Battery Library, which is available as a separate add-on, allows you to incorporate physics-based predictive models of battery cells into your system models so you can take battery behavior into account early in the design process. 
    • The MapleSim Connector for FMI, which allows engineers to share very efficient, high-fidelity models created in MapleSim with other modeling tools, has been expanded to support more export formats for co-simulation and model exchange.

    See What’s New in MapleSim 7 for more information about these and other improvements in MapleSim.

     

    eithne

    Last week the Physics package was presented in a talk at the Perimeter Institute for Theoretical Physics and in a combined Applied Mathematics and Physics Seminar at the University of Waterloo. The presentation at the Perimeter Institute got recorded. It was a nice opportunity to surprise people with the recent advances in the package. It follows the presentation with sections closed, and at the end there is a link to a pdf with the sections open and to the related worksheet, used to run the computations in real time during the presentation.

    COMPUTER ALGEBRA FOR THEORETICAL PHYSICS

     

      

    Generally speaking, physicists still experience that computing with paper and pencil is in most cases simpler than computing on a Computer Algebra worksheet. On the other hand, recent developments in the Maple system implemented most of the mathematical objects and mathematics used in theoretical physics computations, and dramatically approximated the notation used in the computer to the one used in paper and pencil, diminishing the learning gap and computer-syntax distraction to a strict minimum. In connection, in this talk the Physics project at Maplesoft is presented and the resulting Physics package illustrated tackling problems in classical and quantum mechanics, general relativity and field theory. In addition to the 10 a.m lecture, there will be a hands-on workshop at 1pm in the Alice Room.

     

    ... Why computers?

     

     

    We can concentrate more on the ideas instead of on the algebraic manipulations

     

    We can extend results with ease

     

    We can explore the mathematics surrounding a problem

     

    We can share results in a reproducible way

     

    Representation issues that were preventing the use of computer algebra in Physics

     

     

    Notation and related mathematical methods that were missing:


    coordinate free representations for vectors and vectorial differential operators,

    covariant tensors distinguished from contravariant tensors,

    functional differentiation, relativity differential operators and sum rule for tensor contracted (repeated) indices

    Bras, Kets, projectors and all related to Dirac's notation in Quantum Mechanics

     

    Inert representations of operations, mathematical functions, and related typesetting were missing:

     

    inert versus active representations for mathematical operations

    ability to move from inert to active representations of computations and viceversa as necessary

    hand-like style for entering computations and texbook-like notation for displaying results

     

    Key elements of the computational domain of theoretical physics were missing:

     

    ability to handle products and derivatives involving commutative, anticommutative and noncommutative variables and functions

    ability to perform computations taking into account custom-defined algebra rules of different kinds

    (problem related commutator, anticommutator, bracket, etc. rules)

    Vector and tensor notation in mechanics, electrodynamics and relativity

       

    Dirac's notation in quantum mechanics

       

     

    • 

    Computer algebra systems were not originally designed to work with this compact notation, having attached so dense mathematical contents, active and inert representations of operations, not commutative and customizable algebraic computational domain, and the related mathematical methods, all this typically present in computations in theoretical physics.

    • 

    This situation has changed. The notation and related mathematical methods are now implemented.

     

    Tackling examples with the Physics package

     

    Classical Mechanics

     

    Inertia tensor for a triatomic molecule

     

     

    Problem: Determine the Inertia tensor of a triatomic molecule that has the form of an isosceles triangle with two masses m[1] in the extremes of the base and mass m[2] in the third vertex. The distance between the two masses m[1] is equal to a, and the height of the triangle is equal to h.

    Solution

       

    Quantum mechanics

     

    Quantization of the energy of a particle in a magnetic field

     


    Show that the energy of a particle in a constant magnetic field oriented along the z axis can be written as

    H = `ℏ`*`ω__c`*(`#msup(mi("a",mathcolor = "olive"),mo("†"))`*a+1/2)

    where `#msup(mi("a",mathcolor = "olive"),mo("†"))`and a are creation and anihilation operators.

    Solution

       

    The quantum operator components of `#mover(mi("L",mathcolor = "olive"),mo("→",fontstyle = "italic"))` satisfy "[L[j],L[k]][-]=i `ε`[j,k,m] L[m]"

       

    Unitary Operators in Quantum Mechanics

     

    (with Pascal Szriftgiser, from Laboratoire PhLAM, Université Lille 1, France)

    A linear operator U is unitary if 1/U = `#msup(mi("U"),mo("†"))`, in which case, U*`#msup(mi("U"),mo("†"))` = U*`#msup(mi("U"),mo("†"))` and U*`#msup(mi("U"),mo("†"))` = 1.Unitary operators are used to change the basis inside an Hilbert space, which physically means changing the point of view of the considered problem, but not the underlying physics. Examples: translations, rotations and the parity operator.

    1) Eigenvalues of an unitary operator and exponential of Hermitian operators

       

    2) Properties of unitary operators

       

    3) Schrödinger equation and unitary transform

       

    4) Translation operators

       

    Classical Field Theory

     

    The field equations for a quantum system of identical particles

     

     

    Problem: derive the field equation describing the ground state of a quantum system of identical particles (bosons), that is, the Gross-Pitaevskii equation (GPE). This equation is particularly useful to describe Bose-Einstein condensates (BEC).

    Solution

       

    The field equations for the lambda*Phi^4 model

       

    Maxwell equations departing from the 4-dimensional Action for Electrodynamics

       

    General Relativity

     

    Given the spacetime metric,

    g[mu, nu] = (Matrix(4, 4, {(1, 1) = -exp(lambda(r)), (1, 2) = 0, (1, 3) = 0, (1, 4) = 0, (2, 1) = 0, (2, 2) = -r^2, (2, 3) = 0, (2, 4) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = -r^2*sin(theta)^2, (3, 4) = 0, (4, 1) = 0, (4, 2) = 0, (4, 3) = 0, (4, 4) = exp(nu(r))}))

    a) Compute the trace of

    "Z[alpha]^(beta)=Phi R[alpha]^(beta)+`𝒟`[alpha]`𝒟`[]^(beta) Phi+T[alpha]^(beta)"

    where `≡`(Phi, Phi(r)) is some function of the radial coordinate, R[alpha, `~beta`] is the Ricci tensor, `𝒟`[alpha] is the covariant derivative operator and T[alpha, `~beta`] is the stress-energy tensor

    T[alpha, beta] = (Matrix(4, 4, {(1, 1) = 8*exp(lambda(r))*Pi, (1, 2) = 0, (1, 3) = 0, (1, 4) = 0, (2, 1) = 0, (2, 2) = 8*r^2*Pi, (2, 3) = 0, (2, 4) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = 8*r^2*sin(theta)^2*Pi, (3, 4) = 0, (4, 1) = 0, (4, 2) = 0, (4, 3) = 0, (4, 4) = 8*exp(nu(r))*Pi*epsilon}))

    b) Compute the components of "W[alpha]^(beta)"" ≡"the traceless part of  "Z[alpha]^(beta)" of item a)

    c) Compute an exact solution to the nonlinear system of differential equations conformed by the components of  "W[alpha]^(beta)" obtained in b)

    Background: paper from February/2013, "Withholding Potentials, Absence of Ghosts and Relationship between Minimal Dilatonic Gravity and f(R) Theories", by P. Fiziev.

    a) The trace of "  Z[alpha]^(beta)=Phi R[alpha]^(beta)+`𝒟`[alpha]`𝒟`[]^(beta) Phi+T[alpha]^(beta)"

       

    b) The components of "W[alpha]^(beta)"" ≡"the traceless part of " Z[alpha]^(beta)"

       

    c) An exact solution for the nonlinear system of differential equations conformed by the components of  "W[alpha]^(beta)"

       

    The Physics Project

     

     

    "Physics" is a software project at Maplesoft that started in 2006. The idea is to develop a computational symbolic/numeric environment specifically for Physics, targeting educational and research needs in equal footing, and resembling as much as possible the flexible style of computations used with paper and pencil. The main reference for the project is the Landau and Lifshitz Course of Theoretical Physics.

     

    A first version of "Physics" with basic functionality appeared in 2007. Since then the package has been growing every year, including now, among other things, a searcheable database of solutions to Einstein equations and a new dedicated programming language for Physics.

     

    Since August/2013, weekly updates of the Physics package are distributed on the web, including the new developments related to our plan as well as related to people's feedback.

     

     

    Presentation_at_PI_and_UW.pdf     Presentation_at_PI_and_UW.mw

     

    Edgardo S. Cheb-Terrab
    Physics, Differential Equations and Mathematical Functions, Maplesoft

    As previously announced, Maplesoft will be hosting  the 2014 Maple T.A. User Summit this October 22 – 24 in Amsterdam, The Netherlands. You might have heard about the launch of Maple T.A. 10. The User Summit in Amsterdam is a perfect opportunity to get to know more, see the new features in action, and meet Maple T.A. users from around the world.

    We are happy to announce that the schedule has been finalized! The event will feature keynote and user presentations by prominent educators from around the world, first-hand discussions by Maplesoft representatives, exciting social events, and training sessions.

    As you can see, this event has shaped up to be a very exciting summit for Maple T.A. users. After seeing this schedule you may be wondering why you didn’t sign-up – don’t worry, it’s not too late! To register, please visit our website: https://webstore.maplesoft.com/taconference/register.aspx

    I hope to see you there!

    Jonny
    Maplesoft Product Manager, Maple T.A.

    The Embedded Components are containers that currently use industries for modeling complex systems to find viable solutions in real time and thus avoid huge wait times and overload our computer; by this paper should show you how to implement a dynamic worksheet through Embedded Components in Maple; it goes from finding solutions to ordinary differential equations partial; which interact with the researcher using different parameters.
    Using graphical programming will find immediate solutions to selected problems in science and engineering criteria of variability and boundary conditions evolving development with buttons on multiple actions.

     

    cimac_2014.pdf

    (in spanish)

    Solutions_of_Differential_Equations_with_Embedded_Components.mw

     

    Lenin Araujo Castillo

    Physics Pure

    Computer Science

     

    Someone asked on math.stackexchange.com about plotting x*y*z=1 and, while it's easy enough to handle it with implicitplot3d it raised the question of how to get nice constained axes in the case that the x- or y-range is much less than the z-range.

    Here's what WolframAlpha gives. (Mathematica handles it straight an an plot of the explict z=1/(x*y), which is interesting although I'm more interested here in axes scaling than in discontinuous 3D plots)

    Here is the result of a call to implicitplot3d with default scaling=unconstrained. The axes appear like in a cube, each of equal "length".

     

    Here is the same plot, with scaling=constrained. This is not pretty, because the x- and y-range are much smalled than the z-range.

     

    How can we control the axes scaling? Resizing the inlined plot window with the mouse just affects the window. The plot itself remains  rendered in a cube. Using right-click menus to rescale just makes all axes grow or shrink together.

    One unattractive approach it to force a small z-view on a plot of a much larger z-range, for a piecewise or procedure that is undefined outisde a specific range.

    plots:-implicitplot3d(proc(x,y,z)
                            if abs(z)>200 then undefined;
                            else x*y*z-1; end if;
                          end proc,
                          -1..1, -1..1, -200..200, view=[-1..1,-1..1,-400..400],
                          style=surfacecontour, grid=[30,30,30]);
    

    Another approach is to scale the x and y variables, scale their ranges, and then force scaled tickmark values. Here is a rough procedure to automate such a thing. The basic idea is for it to accept the same kinds of arguments are implicitplot3d does, with two extra options for scaling the axis x-relative-to-z, and axis y-relative-to-z.

    implplot3d:=proc( expr,
                      rng1::name=range(numeric),
                      rng2::name=range(numeric),
                      rng3::name=range(numeric),
                      {scalex::numeric:=1, scaley::numeric:=1} )
       local d1, d2, dz, n1, n2, r1, r2, rngs, scx, scy;
       uses plotfn=plots:-implicitplot3d;
       (n1,n2) := lhs(rng1), lhs(rng2);
       dz := rhs(rhs(rng3))-lhs(rhs(rng3));
       (scx,scy) := scalex*dz/(rhs(rhs(rng1))-lhs(rhs(rng1))),
                    scaley*dz/(rhs(rhs(rng2))-lhs(rhs(rng2)));
       (r1,r2) := map(`*`,rhs(rng1),scx), map(`*`,rhs(rng2),scy);
       (d1,d2) := rhs(r1)-lhs(r1), rhs(r1)-lhs(r1);
       plotfn( subs([n1=n1/scx, n2=n2/scy], expr),
               n1=r1, n2=r2, rng3, _rest[],
               ':-axis[1]'=[':-tickmarks'=[seq(i=evalf[3](i/scx),i=r1,d1/4)]],
               ':-axis[2]'=[':-tickmarks'=[seq(i=evalf[3](i/scy),i=r2,d2/4)]],
               ':-scaling'=':-constrained');
    end proc:
    

    The above could be better. It could also detect user-supplied custom x- or y-tickmarks and then scale those instead of forming new ones.

    Here is an example of using it,

    implplot3d( x*y*z=1, x=-1..1, y=-1..1, z=-200..200, grid=[30,30,30],
                style=surfacecontour, shading=xy, orientation=[-60,60,0],
                scalex=1.618, scaley=1.618 );
    

    Here is another example

    implplot3d( x*y*z=1, x=-5..13, y=-11..5, z=-200..200, grid=[30,30,30],
                style=surfacecontour, orientation=[-50,55,0],
                scaley=0.5 );
    

    Ideally I would like to see the GUI handle all this, with say (two or three) additional (scalar) axis scaling properties in a PLOT3D structure. Barring that, one might ask whether a post-processing routine could use plots:-transform (or friend) and also force the tickmarks. For that I believe that picking off the effective x-, y-, and z-ranges is needed. That's not too hard for the result of a single call to the plot3d command. Where it could get difficult is in handling the result of plots:-display when fed a mix of several spacecurves, 3D implicit plots, and surfaces.

    Have I overlooked something much easier?

    acer

    Presented at the National University of Trujillo - CUICITI 2014.

    IT Solutions for the Next Generation of Engineers

     

     

     

    Descarga aqui los Slides de la presentación/mw CUICITI-2014

    CUICITI_09102014.pdf

    Soluciones_Informáticas_para_la_siguiente_generación_de_Ingenieros.mw

    Lenin Araujo Castillo

    Physics Pure

    Computer Science

     

    Maplesoft regularly hosts live webinars on a variety of topics. Below you will find details on some upcoming webinars we think may be of interest to the MaplePrimes community.  For the complete list of upcoming webinars, visit our website.

    Maplesoft Solutions for Math Education

    This webinar will demonstrate how Maplesoft’s solutions for mathematics education help teachers bring complex problems to life, allow students to focus on concepts rather than the mechanics of solutions, and offer students the necessary practice to master the concepts being taught.

    Key takeaways include:

    • How to quickly and painlessly place incoming students in the correct math courses

    • How you can use hundreds of intuitive Clickable Math tools to demonstrate and explore up to advanced-level problems and algorithms in the classroom

    • How to automate your testing and assessment needs, specifically for math courses

    • How to bring your STEM courses to life in an online environment

    To join us for the live presentation, please click here to register.

    Introduction to Maple T.A. Placement Test Suite 10

    This webinar will provide an overview and demonstration of the latest release of the Maple T.A. MAA Placement Test Suite. A result of the ongoing partnership between the Mathematical Association of America (MAA) and Maplesoft, this product gives you the ability to provide the renowned MAA placement tests in an online testing environment. Learn how the Maple T.A. MAA Placement Test Suite can greatly simplify your placement process and explore the latest additions, including a streamlined interface and new tests to determine your students’ readiness for Precalculus and Algebra courses.

    To join us for the live presentation, please click here to register.

    There is also a recording available from another live webinar we did earlier this month: Introduction to Maple T.A. 10.

    After lots of hard work, vast amounts of testing, and enormous anticipation, Maple T.A. 10 is now available! Maple T.A. 10 is by far our biggest release to date - and we’re not just saying that. When we compare the list of new features and improvements in Maple T.A. 10 with that of previous releases, it’s clear that Maple T.A. 10 has the largest feature set and improvements to date.

    This application calculates the number of photons reaching a camera sensor for a given exposure. A blackbody model of the sun is generated. The "Sunny 16" rule for exposure is demonstrated. Calculations are done using units.Photon_Exposure_Array.mw

    Photon ExposureNULLNULL

    Blackbody Model of the Sun

        h := Units:-Standard:-`*`(Units:-Standard:-`*`(0.6626069e-33, Units:-Standard:-`^`(Unit('m'), 2)), Units:-Standard:-`*`(Unit('kg'), Units:-Standard:-`/`(Unit('s')))): 

    Plank Constant       

      kb := Units:-Standard:-`*`(Units:-Standard:-`*`(0.1380650e-22, Units:-Standard:-`*`(Units:-Standard:-`^`(Unit('m'), 2), Units:-Standard:-`/`(Units:-Standard:-`^`(Unit('s'), 2)))), Units:-Standard:-`*`(Unit('kg'), Units:-Standard:-`/`(Unit('K')))): 

    Boltzman Constant  

    c := Units:-Standard:-`*`(0.2997925e9, Units:-Standard:-`*`(Unit('m'), Units:-Standard:-`/`(Unit('s')))):  ``

    Light Speed

    Rsun := Units:-Standard:-`*`(Units:-Standard:-`*`(6.955, Units:-Standard:-`^`(10, 8)), Unit('m')): ``

    Sun Radius  

    Re_orb := Units:-Standard:-`*`(Units:-Standard:-`*`(1.496, Units:-Standard:-`^`(10, 11)), Unit('m')): ``

    Earth Orbit

    Tsun := Units:-Standard:-`*`(5800, Unit('K')): ``

    Sun Color Temperature     

     tf_atm := .718: 

    Transmission Factor  

     

    Sun: Spectral Radiant Exitance to Earth: Spectral Irradiance                   

      "M(lambda):=(2*Pi*h*c^(2))/((lambda)^(5))*1/((e)^((h*c)/(lambda*kb*Tsun))-1)*(Rsun/(Re_orb))^(2)*tf_atm:" NULL

    evalf(M(Units:-Standard:-`*`(555, Unit('nm')))) = 1277414308.*Units:-Unit(('kg')/(('m')*('s')^3))"(->)"1.277414308*Units:-Unit(('W')/(('nm')*('m')^2))NULL

    Photopic Relative Response VP vs λ

     

    csvFile := FileTools[Filename]("/VPhotopic.csv")NULL = "VPhotopic.csv"NULL

    VPdata := ImportMatrix(csvFile) = Vector(4, {(1) = ` 471 x 2 `*Matrix, (2) = `Data Type: `*float[8], (3) = `Storage: `*rectangular, (4) = `Order: `*Fortran_order})NULLNULL

     

    `λP` := [seq(1 .. 4000)]:

    VP := ArrayInterpolation(VPdata, `λP`):             (ArrayInterpolation for x,y data VPdata returns y' for new x data lambdaP)

    NULLVParray := [`$`([`λP`[n], VP[n]], n = 1 .. 4000)]:                     

    Mearth := [`$`([n, Units:-Standard:-`*`(Units:-Standard:-`*`(M(Units:-Standard:-`*`(n, Unit('nm'))), Unit('nm')), Units:-Standard:-`*`(Units:-Standard:-`^`(Unit('s'), 3), Units:-Standard:-`/`(Unit('kg'))))], n = 1 .. 4000)]:````

    ``

    dualaxisplot(plot([Mearth], lambda = 300 .. 900, style = line, color = [blue], labels = ["λ (nm)", "M (W/nm m^2)"], title = "Spectral Radiant Exitance of the Sun", titlefont = ["ARIAL", 15], legend = [Exitance], size = [800, 300]), plot([VParray], style = line, color = [green], labels = ["λ (nm)", "Relative Response"], legend = [Units:-Standard:-`*`(Units:-Standard:-`*`(Photopic, Relative), Response)]))

     

    ``

     

     

     

    Illuminance in Radiometric and Photometric Units:

    E__r := sum(Units:-Standard:-`*`(M(Units:-Standard:-`*`(lambda, Unit('nm'))), Unit('nm')), lambda = 200 .. 4000) = 984.7275549*Units:-Unit(('kg')/('s')^3)"(->)"984.7275549*Units:-Unit(('W')/('m')^2)NULL

    NULL

    E__po := Units:-Standard:-`*`(Units:-Standard:-`*`(683.002, Units:-Standard:-`*`(Unit('lm'), Units:-Standard:-`/`(Unit('W')))), sum(Units:-Standard:-`*`(Units:-Standard:-`*`(VP[lambda], M(Units:-Standard:-`*`(lambda, Unit('nm')))), Unit('nm')), lambda = 200 .. 4000)) = HFloat(91873.47376063903)*Units:-Unit('lx')NULL

    Translation from Illuminance to Luminance for Reflected Light;

     

    Object Reflectance          R__o:      

    Object Luminance           L__po := proc (R__o) options operator, arrow; R__o*E__po/(Pi*Unit('sr')) end proc:                evalf(L__po(1)) = HFloat(29244.234968360346)*Units:-Unit(('cd')/('m')^2) 

     

    Illuminance of a Camera Sensor  Eps applied for time texp determines Luminous Exposure Hp;

    Ideal Illuminance is determined by the exposure time texp, effective f-number N and to a less extent the angle to the optical axis θ;

     

    • 

    H       Luminous Exposure

    • 

    Eps     Illuminance to the Camera

    • 

    N                                               Effective F-Number

    • 

    texp             Exposure Time

    • 

    θ        Angle to the Optical Axis    

     

    E__ps_ideal = Units:-Standard:-`*`(Units:-Standard:-`*`(Units:-Standard:-`*`(Pi, Units:-Standard:-`/`(4)), L__po), Units:-Standard:-`*`(Units:-Standard:-`^`(cos(theta), 4), Units:-Standard:-`/`(Units:-Standard:-`^`(N, 2)))):

    H__p_ideal = Units:-Standard:-`*`(E__ps_ideal, t__exp):

     

    The camera meter determines the exposure time texp to balance the object luminance, reflectance and effective f-number. It does this based on an internal constant k and the camera ISO s.

    • 

    s        ISO Gain (Based on saturation at 3 stops above the average scene luminance)

    • 

    k       Reflected Light Meter Calibration Constant      k__m := Units:-Standard:-`*`(Units:-Standard:-`*`(12.5, Unit('lx')), Unit('s')):  

                                                                                                      for Nikon, Canon and Sekonic

    • 

    c        Incident Light Meter Calibration Constant       c__m := Units:-Standard:-`*`(Units:-Standard:-`*`(250, Unit('lx')), Unit('s')):        

                                                                                                      for Sekonic with flat domeNULL

    N^2/t__exp = `#mrow(mi("\`E__po\`"),mo("⋅"),mi("s"))`/c__m                        (Incident Light Meter)  NULL 

    Units:-Standard:-`*`(Units:-Standard:-`^`(N, 2), Units:-Standard:-`/`(t__exp)) = Units:-Standard:-`*`(`#mrow(mi("\`L__po\`"),mo("⋅"),mi("s"))`, Units:-Standard:-`/`(k__m)):                        (Reflected Light Meter)

    NULL

    Solve for H in terms of the Camera Meter Constant k and s

     

    Es = Units:-Standard:-`*`(Units:-Standard:-`*`(Units:-Standard:-`*`(Pi, Units:-Standard:-`/`(4)), Lo), Units:-Standard:-`*`(Units:-Standard:-`^`(cos(theta), 4), Units:-Standard:-`/`(Units:-Standard:-`^`(N, 2)))): NULL

    t = Units:-Standard:-`*`(Units:-Standard:-`*`(km, Units:-Standard:-`^`(N, 2)), Units:-Standard:-`/`(Units:-Standard:-`*`(Lo, s))):NULL

    NULL

    NULL

    H = Es*t

    H = Units:-Standard:-`*`(Units:-Standard:-`*`(Units:-Standard:-`*`(Units:-Standard:-`*`(Pi, Units:-Standard:-`/`(4)), Lo), Units:-Standard:-`*`(Units:-Standard:-`^`(cos(theta), 4), Units:-Standard:-`/`(Units:-Standard:-`^`(N, 2)))), Units:-Standard:-`*`(Units:-Standard:-`*`(km, Units:-Standard:-`^`(N, 2)), Units:-Standard:-`/`(Units:-Standard:-`*`(Lo, s))))"(=)"H = (1/4)*Pi*cos(theta)^4*km/sNULLNULL

     t = H/Es

    t = Units:-Standard:-`*`(Units:-Standard:-`*`(Units:-Standard:-`*`(Pi, Units:-Standard:-`/`(4)), Units:-Standard:-`*`(Units:-Standard:-`*`(Units:-Standard:-`^`(cos(theta), 4), km), Units:-Standard:-`/`(s))), Units:-Standard:-`/`(Units:-Standard:-`*`(Units:-Standard:-`*`(Units:-Standard:-`*`(Pi, Units:-Standard:-`/`(4)), Lo), Units:-Standard:-`*`(Units:-Standard:-`^`(cos(theta), 4), Units:-Standard:-`/`(Units:-Standard:-`^`(N, 2))))))"(=)"t = km*N^2/(Lo*s)NULLNULL

    H__p := proc (s, theta) options operator, arrow; (1/4)*Pi*k__m*cos(theta)^4/s end proc:                                              

      evalf(H__p(100, 0)) = 0.9817477044e-1*Units:-Unit(('cd')*('s')/('m')('radius')^2)"(->)"0.9817477044e-1*Units:-Unit(('lx')*('s'))NULL

     

    Note:  Meters are typically set for a scene reflectance 3 stops below 100% or 12.5%.

               

      E__ps := proc (N, R__o, theta) options operator, arrow; (1/4)*Pi*Unit('sr')*R__o*E__po*cos(theta)^4/(Pi*Unit('sr')*N^2) end proc:               

     evalf(E__ps(16, Units:-Standard:-`/`(Units:-Standard:-`^`(2, 3)), 0)) = HFloat(11.215023652421756)*Units:-Unit('lx')                                                                                                   

    t__exp_ideal := proc (N, s, R__o) options operator, arrow; H__p(s, theta)/E__ps(N, R__o, theta) end proc:                                     

      evalf(t__exp_ideal(16, 100, Units:-Standard:-`/`(Units:-Standard:-`^`(2, 3)))) = HFloat(0.008753862094289947)*Units:-Unit('s') NULL NULL

     

     

    Actual exposure time includes typical lens losses;

     m := Units:-Standard:-`/`(80):``

    Magnification  

      T := .9:``

    Lens Transmittance

     F := 1.03:``

    Lens Flare

    V := 1: ``

    Vignetting

     

                                                      ``

    Total Lens Efficiency

    q := Units:-Standard:-`*`(Units:-Standard:-`*`(Units:-Standard:-`*`(T, F), V), Units:-Standard:-`^`(Units:-Standard:-`+`(1, Units:-Standard:-`-`(m)), 2)):                                      evalf(q) = .9039698438NULL

     

    Replacing Eps with q*Eps we get the "Sunny 16" relation between exposure time and ISO;  NULL

    t__exp := proc (N, s, R__o) options operator, arrow; H__p(s, theta)/(q*E__ps(N, R__o, theta)) end proc:NULL               evalf(t__exp(16, 100, Units:-Standard:-`/`(Units:-Standard:-`^`(2, 3)))) = HFloat(0.009683798806264942)*Units:-Unit('s')NULL

    t__exp_alt := proc (N, s, R__o) options operator, arrow; k__m*N^2*Pi/(s*q*R__o*E__po) end proc:                  evalf(t__exp_alt(16, 100, Units:-Standard:-`/`(Units:-Standard:-`^`(2, 3)))) = HFloat(0.00968379880412244)*Units:-Unit('s') 

    • 

    The Number of Photons NP Reaching the Sensor Area A;

    • 

    Circle of confusion for 24x36mm "Full Frame" for 1 arcminute view at twice the diagonal:

                              A__cc := Units:-Standard:-`*`(Units:-Standard:-`*`(Pi, Units:-Standard:-`^`(Units:-Standard:-`*`(12.6, Unit('`μm`')), 2)), Units:-Standard:-`/`(4)):    

         

    • 

      Sensor Bandwidth                                          Photopic Response VP

    • 

      Exposure Time for Zone 5: Rscene=12.5% , Saturation in Zone 8 Rscene=100%

    • 

      Camera ISO differs from Saturation ISO. Typical Saturation ISO is 2300 when the camera is set to 3200. See DxoMark.

     

    NULL

    The average number of photons for exposure time based on Reflectance of the scene  relative to the metered value:    

    Zone 5;   R__meter := R__scene: 

    NP := proc (s, R__o, theta) options operator, arrow; (1/4)*t__exp(N, s, R__meter)*A__cc*q*R__scene*cos(theta)^4*(sum(VP[lambda]*M(lambda*Unit('nm'))*Unit('nm')*lambda*Unit('nm')/(h*c), lambda = 200 .. 4000))/N^2 end proc: 

                                                                                   evalf(NP(2300, 1, Units:-Standard:-`*`(0, Unit('deg')))) = HFloat(2191.5645712603696)  NULL

    Zone 8;       R__meter := Units:-Standard:-`*`(R__scene, Units:-Standard:-`/`(Units:-Standard:-`^`(2, 3))):   NULL

    NP__sat := proc (s, theta) options operator, arrow; (1/4)*t__exp(N, s, R__meter)*A__cc*q*R__scene*cos(theta)^4*(sum(VP[lambda]*M(lambda*Unit('nm'))*Unit('nm')*lambda*Unit('nm')/(h*c), lambda = 200 .. 4000))/N^2 end proc:  NULL

                                                                                  evalf(NP__sat(2300, Units:-Standard:-`*`(0, Unit('deg')))) = HFloat(17532.516570082957)NULL

    NULL

     

    Approximate Formula

     

    H__sat := proc (s__sat) options operator, arrow; H__p(s__sat, 0)*E__ps(N, 1, 0)/E__ps(N, 1/8, 0) end proc:      

                                                                                           evalf(H__sat(s__sat)) = HFloat(78.53981635)*Units:-Unit(('cd')*('s')/('m')('radius')^2)/s__satNULLNULL

    Average Visible Photon Energy

    P__e_ave := Units:-Standard:-`*`(Units:-Standard:-`/`(Units:-Standard:-`+`(850, -350)), sum(Units:-Standard:-`*`(Units:-Standard:-`*`(h, c), Units:-Standard:-`/`(Units:-Standard:-`*`(lambda, Unit('nm')))), lambda = 350 .. 850)):                    evalf(P__e_ave) = 0.3533174192e-18*Units:-Unit('J') 

    NPtyp := proc (s__sat) options operator, arrow; H__sat(s__sat)*A__cc/(683.002*(Unit('lm')/Unit('W'))*P__e_ave) end proc: 

                                   evalf(NPtyp(2300)) = HFloat(17644.363333654386)"(->)"HFloat(17644.363333654386)NULL

    NULL

     

    Download Photon_Exposure_Array.mw

    I would like to announce a new unofficial record computation of the MRB constant that was finished on Sun 21 Sep 2014 18:35:06.

    I really would like to see someone beat it with Maple!

    It took 1 month 27 days 2 hours 45 minutes 15 seconds. I computed 3,014,991 digits of the MRB constant, (confirming my previous 2,00,000 or more digit computation was actually accurate to 2,009,993 digits), with Mathematica 10.0. I Used my version of Richard Crandall's code:

     

    ____________________________________________________________________________

    (*Fastest (at MRB's end) as of 25 Jul 2014.*)

    DateString[]

    prec = 3000000;(*Number of required decimals.*)ClearSystemCache[];

    T0 = SessionTime[];

    expM[pre_] := 

      Module[{a, d, s, k, bb, c, n, end, iprec, xvals, x, pc, cores = 12, 

        tsize = 2^7, chunksize, start = 1, ll, ctab, 

        pr = Floor[1.005 pre]}, chunksize = cores*tsize;

       n = Floor[1.32 pr];

       end = Ceiling[n/chunksize];

       Print["Iterations required: ", n];

       Print["end ", end];

       Print[end*chunksize]; d = ChebyshevT[n, 3];

       {b, c, s} = {SetPrecision[-1, 1.1*n], -d, 0};

       iprec = Ceiling[pr/27];

       Do[xvals = Flatten[ParallelTable[Table[ll = start + j*tsize + l;

            x = N[E^(Log[ll]/(ll)), iprec];

            pc = iprec;

            While[pc < pr, pc = Min[3 pc, pr];

             x = SetPrecision[x, pc];

             y = x^ll - ll;

             x = x (1 - 2 y/((ll + 1) y + 2 ll ll));];(*N[Exp[Log[ll]/ll],

            pr]*)x, {l, 0, tsize - 1}], {j, 0, cores - 1}, 

           Method -> "EvaluationsPerKernel" -> 4]];

        ctab = ParallelTable[Table[c = b - c;

           ll = start + l - 2;

           b *= 2 (ll + n) (ll - n)/((ll + 1) (2 ll + 1));

           c, {l, chunksize}], Method -> "EvaluationsPerKernel" -> 2];

        s += ctab.(xvals - 1);

        start += chunksize;

        Print["done iter ", k*chunksize, " ", SessionTime[] - T0];, {k, 0,

          end - 1}];

       N[-s/d, pr]];

    t2 = Timing[MRBtest2 = expM[prec];]; DateString[]

    Print[MRBtest2]

    MRBtest2 - MRBtest2M

    _________________________________________________________________________.

     

    I used a six core Intel(R) Core(TM) i7-3930K CPU @ 3.20 GHz 3.20 GHz with 64 GB of RAM of which only 16 GB was used.

    t2 From the computation was {1.961004112059*10^6, Null}.

     

     

     

    This is an application of vector position to better understand the vector speed and acceleration is a well defined vector space. Fully developed with embedded components for proper use.

     

        Vector_Posición.mw                   (in spanish)

     

    L. Araujo C.

    Physics Pure

    Computer Science

    Obsolete

    See my Camera Profiler application instead.

     

    This application creates DNG matrices by optimizing Delta E from a raw photo of x-rites color checker. The color temperature for the photograph is also estimated.  Inputs are raw data from RawDigger and generic camera color response from DXO Mark.

    Initialization

       

    NULL

    NULL

    NULL

    NULL

    NULL

    XYZoptical to RGB to XYZdata

     

     

    Sr,g,b is the relative spectral transmittance of the filter array not selectivity for XY or Z of a given color.

    Pulling Sr,g,b out of the integral assumes they are scalars. For example Sr attenuates X, Y and Z by the same amount.

    Raw Balance is not White Point Adaptation.

    The transmission loss of Red and Blue pixels relative to green is compensated by D=inverse(S). The relation to incident chromaticity, xy is unchanged as S.D=1.

    (See Bruce Lindbloom; "Spectrum to XYZ" and "RGB/XYZ Matrices" also, Marcel Patek; "Transformation of RGB Primaries")

     

     

    X = (Int(I*xbar*S, lambda))/N:

    Y = (Int(I*ybar*S, lambda))/N:

    Z = (Int(I*zbar*S, lambda))/N:

    N = Int(I*ybar, lambda):

    • 

    XYZ to RGB

    (Vector(3, {(1) = R_Tbb, (2) = G_Tbb, (3) = B_Tbb})) = (Matrix(3, 3, {(1, 1) = XR*Sr, (1, 2) = YR*Sr, (1, 3) = ZR*Sr, (2, 1) = XG*Sg, (2, 2) = YG*Sg, (2, 3) = ZG*Sg, (3, 1) = XB*Sb, (3, 2) = YB*Sb, (3, 3) = ZB*Sb})).(Vector(3, {(1) = X_Tbb, (2) = Y_Tbb, (3) = Z_Tbb}))

    NULL

    (Vector(3, {(1) = R_Tbb, (2) = G_Tbb, (3) = B_Tbb})) = (Matrix(3, 3, {(1, 1) = Sr, (1, 2) = 0, (1, 3) = 0, (2, 1) = 0, (2, 2) = Sg, (2, 3) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = Sb})).(Matrix(3, 3, {(1, 1) = XR, (1, 2) = YR, (1, 3) = ZR, (2, 1) = XG, (2, 2) = YG, (2, 3) = ZG, (3, 1) = XB, (3, 2) = YB, (3, 3) = ZB})).(Vector(3, {(1) = X_Tbb, (2) = Y_Tbb, (3) = Z_Tbb}))

     

    Camera_Neutral = (Matrix(3, 3, {(1, 1) = Sr, (1, 2) = 0, (1, 3) = 0, (2, 1) = 0, (2, 2) = Sg, (2, 3) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = Sb})).(Matrix(3, 3, {(1, 1) = XR, (1, 2) = YR, (1, 3) = ZR, (2, 1) = XG, (2, 2) = YG, (2, 3) = ZG, (3, 1) = XB, (3, 2) = YB, (3, 3) = ZB})).(Vector(3, {(1) = X_wht, (2) = Y_wht, (3) = Z_wht}))

    NULL

    NULL

    NULL

    • 

    RGB to XYZ (The extra step of adaptation to D50 is included below)

     

    (Vector(3, {(1) = X_D50, (2) = Y_D50, (3) = Z_D50})) = (Matrix(3, 3, {(1, 1) = XTbbtoXD50, (1, 2) = YTbbtoXD50, (1, 3) = ZTbbtoXD50, (2, 1) = XTbbtoYD50, (2, 2) = YTbbtoYD50, (2, 3) = ZTbbtoYD50, (3, 1) = XTbbtoZD50, (3, 2) = YTbbtoZD50, (3, 3) = ZTbbtoZD50})).(Matrix(3, 3, {(1, 1) = RX*Dr, (1, 2) = GX*Dg, (1, 3) = BX*Db, (2, 1) = RY*Dr, (2, 2) = GY*Dg, (2, 3) = BY*Db, (3, 1) = RZ*Dr, (3, 2) = GZ*Dg, (3, 3) = BZ*Db})).(Vector(3, {(1) = R_Tbb, (2) = G_Tbb, (3) = B_Tbb})) NULL

    NULL

    (Vector(3, {(1) = X_D50, (2) = Y_D50, (3) = Z_D50})) = (Matrix(3, 3, {(1, 1) = XTbbtoXD50, (1, 2) = YTbbtoXD50, (1, 3) = ZTbbtoXD50, (2, 1) = XTbbtoYD50, (2, 2) = YTbbtoYD50, (2, 3) = ZTbbtoYD50, (3, 1) = XTbbtoZD50, (3, 2) = YTbbtoZD50, (3, 3) = ZTbbtoZD50})).(Matrix(3, 3, {(1, 1) = RX, (1, 2) = GX, (1, 3) = BX, (2, 1) = RY, (2, 2) = GY, (2, 3) = BY, (3, 1) = RZ, (3, 2) = GZ, (3, 3) = BZ})).(Matrix(3, 3, {(1, 1) = Dr, (1, 2) = 0, (1, 3) = 0, (2, 1) = 0, (2, 2) = Dg, (2, 3) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = Db})).(Vector(3, {(1) = R_Tbb, (2) = G_Tbb, (3) = B_Tbb}))

    NULL

    (Vector(3, {(1) = X_D50, (2) = Y_D50, (3) = Z_D50})) = (Matrix(3, 3, {(1, 1) = RX_D50, (1, 2) = GX_D50, (1, 3) = BX_D50, (2, 1) = RY_D50, (2, 2) = GY_D50, (2, 3) = BY_D50, (3, 1) = RZ_D50, (3, 2) = GZ_D50, (3, 3) = BZ_D50})).(Matrix(3, 3, {(1, 1) = Dr, (1, 2) = 0, (1, 3) = 0, (2, 1) = 0, (2, 2) = Dg, (2, 3) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = Db})).(Vector(3, {(1) = R_Tbb, (2) = G_Tbb, (3) = B_Tbb}))

    NULL

    (Vector(3, {(1) = X_D50wht, (2) = Y_D50wht, (3) = Z_D50wht})) = (Matrix(3, 3, {(1, 1) = RX_D50, (1, 2) = GX_D50, (1, 3) = BX_D50, (2, 1) = RY_D50, (2, 2) = GY_D50, (2, 3) = BY_D50, (3, 1) = RZ_D50, (3, 2) = GZ_D50, (3, 3) = BZ_D50})).(Matrix(3, 3, {(1, 1) = Dr, (1, 2) = 0, (1, 3) = 0, (2, 1) = 0, (2, 2) = Dg, (2, 3) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = Db})).Camera_Neutral

    NULL

    Functions

       

    NULL

    Input Data

       

    NULL

    Solve for Camera to XYZ D50 and T

       

    NULL

     

     

    First 73 74 75 76 77 78 79 Last Page 75 of 297