Main Page: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
mNo edit summary
No edit summary
 
(450 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
{{about|the numerical integration method|the neurological examination maneuver|Romberg's test}}
This is a preview for the new '''MathML rendering mode''' (with SVG fallback), which is availble in production for registered users.


In [[numerical analysis]], '''Romberg's method''' {{Harv|Romberg|1955}} is used to estimate the [[Integral|definite integral]]
If you would like use the '''MathML''' rendering mode, you need a wikipedia user account that can be registered here [[https://en.wikipedia.org/wiki/Special:UserLogin/signup]]
* Only registered users will be able to execute this rendering mode.
* Note: you need not enter a email address (nor any other private information). Please do not use a password that you use elsewhere.


:<math> \int_a^b f(x) \, dx </math>
Registered users will be able to choose between the following three rendering modes:  


by applying [[Richardson extrapolation]] {{Harv|Richardson|1910}} repeatedly on the [[trapezium rule]] or the [[rectangle rule]] (midpoint rule). The estimates generate a triangular array.  Romberg's method is a [[Newton–Cotes formulas|Newton–Cotes formula]] – it evaluates the integrand at equally-spaced points.
'''MathML'''
The integrand must have continuous derivatives, though fairly good results
:<math forcemathmode="mathml">E=mc^2</math>
may be obtained if only a few derivatives exist.
If it is possible to evaluate the integrand at unequally-spaced points, then other methods such as [[Gaussian quadrature]] and [[Clenshaw–Curtis quadrature]] are generally more accurate.


The method is named after [[Werner Romberg]] (1909–2003), who published the method in 1955.
<!--'''PNG'''  (currently default in production)
:<math forcemathmode="png">E=mc^2</math>


== Method ==
'''source'''
:<math forcemathmode="source">E=mc^2</math> -->


The method can be defined inductively
<span style="color: red">Follow this [https://en.wikipedia.org/wiki/Special:Preferences#mw-prefsection-rendering link] to change your Math rendering settings.</span> You can also add a [https://en.wikipedia.org/wiki/Special:Preferences#mw-prefsection-rendering-skin Custom CSS] to force the MathML/SVG rendering or select different font families. See [https://www.mediawiki.org/wiki/Extension:Math#CSS_for_the_MathML_with_SVG_fallback_mode these examples].


:<math>R(0,0) = \frac{1}{2} (b-a) (f(a) + f(b))</math>
==Demos==


:<math>R(n,0) = \frac{1}{2} R(n-1,0) + h_n \sum_{k=1}^{2^{n-1}} f(a + (2k-1)h_n)</math>
Here are some [https://commons.wikimedia.org/w/index.php?title=Special:ListFiles/Frederic.wang demos]:


:<math>R(n,m) = R(n,m-1) + \frac{1}{4^m-1} (R(n,m-1) - R(n-1,m-1))</math>


or
* accessibility:
** Safari + VoiceOver: [https://commons.wikimedia.org/wiki/File:VoiceOver-Mac-Safari.ogv video only], [[File:Voiceover-mathml-example-1.wav|thumb|Voiceover-mathml-example-1]], [[File:Voiceover-mathml-example-2.wav|thumb|Voiceover-mathml-example-2]], [[File:Voiceover-mathml-example-3.wav|thumb|Voiceover-mathml-example-3]], [[File:Voiceover-mathml-example-4.wav|thumb|Voiceover-mathml-example-4]], [[File:Voiceover-mathml-example-5.wav|thumb|Voiceover-mathml-example-5]], [[File:Voiceover-mathml-example-6.wav|thumb|Voiceover-mathml-example-6]], [[File:Voiceover-mathml-example-7.wav|thumb|Voiceover-mathml-example-7]]
** [https://commons.wikimedia.org/wiki/File:MathPlayer-Audio-Windows7-InternetExplorer.ogg Internet Explorer + MathPlayer (audio)]
** [https://commons.wikimedia.org/wiki/File:MathPlayer-SynchronizedHighlighting-WIndows7-InternetExplorer.png Internet Explorer + MathPlayer (synchronized highlighting)]
** [https://commons.wikimedia.org/wiki/File:MathPlayer-Braille-Windows7-InternetExplorer.png Internet Explorer + MathPlayer (braille)]
** NVDA+MathPlayer: [[File:Nvda-mathml-example-1.wav|thumb|Nvda-mathml-example-1]], [[File:Nvda-mathml-example-2.wav|thumb|Nvda-mathml-example-2]], [[File:Nvda-mathml-example-3.wav|thumb|Nvda-mathml-example-3]], [[File:Nvda-mathml-example-4.wav|thumb|Nvda-mathml-example-4]], [[File:Nvda-mathml-example-5.wav|thumb|Nvda-mathml-example-5]], [[File:Nvda-mathml-example-6.wav|thumb|Nvda-mathml-example-6]], [[File:Nvda-mathml-example-7.wav|thumb|Nvda-mathml-example-7]].
** Orca: There is ongoing work, but no support at all at the moment [[File:Orca-mathml-example-1.wav|thumb|Orca-mathml-example-1]], [[File:Orca-mathml-example-2.wav|thumb|Orca-mathml-example-2]], [[File:Orca-mathml-example-3.wav|thumb|Orca-mathml-example-3]], [[File:Orca-mathml-example-4.wav|thumb|Orca-mathml-example-4]], [[File:Orca-mathml-example-5.wav|thumb|Orca-mathml-example-5]], [[File:Orca-mathml-example-6.wav|thumb|Orca-mathml-example-6]], [[File:Orca-mathml-example-7.wav|thumb|Orca-mathml-example-7]].
** From our testing, ChromeVox and JAWS are not able to read the formulas generated by the MathML mode.


:<math>R(n,m) = \frac{1}{4^m-1} ( 4^m R(n,m-1) - R(n-1,m-1))</math>
==Test pages ==


where
To test the '''MathML''', '''PNG''', and '''source''' rendering modes, please go to one of the following test pages:
*[[Displaystyle]]
*[[MathAxisAlignment]]
*[[Styling]]
*[[Linebreaking]]
*[[Unique Ids]]
*[[Help:Formula]]


:<math> n \ge 1 \, </math>
*[[Inputtypes|Inputtypes (private Wikis only)]]
 
*[[Url2Image|Url2Image (private Wikis only)]]
:<math> m \ge 1 \, </math>
==Bug reporting==
 
If you find any bugs, please report them at [https://bugzilla.wikimedia.org/enter_bug.cgi?product=MediaWiki%20extensions&component=Math&version=master&short_desc=Math-preview%20rendering%20problem Bugzilla], or write an email to math_bugs (at) ckurs (dot) de .
:<math> h_n = \frac{b-a}{2^n}. </math>
 
In [[big O notation]], the error for ''R''(''n'',&nbsp;''m'') is {{Harv|Mysovskikh|2002}}:
 
:<math> O\left(h_n^{2m+2}\right). \, </math>
 
The zeroeth extrapolation, ''R''(''n'',&nbsp;0), is equivalent to the [[trapezoidal rule]] with 2<sup>''n''</sup>&nbsp;+&nbsp;1 points; the first extrapolation, ''R''(''n'',&nbsp;1), is equivalent to [[Simpson's rule]] with 2<sup>''n''</sup>&nbsp;+&nbsp;1 points. The second extrapolation, ''R''(''n'',&nbsp;2), is equivalent to [[Boole's rule]] with 2<sup>''n''</sup>&nbsp;+&nbsp;1 points. Further extrapolations differ from Newton Cote's Formulas. In particular further Romberg extrapolations expand on Boole's rule in very slight ways, modifying weights into ratios similar as in Boole's rule. In contrast, further Newton Cotes methods produce increasingly  differing weights, eventually leading to large positive and negative weights. This is indicative of how large degree interpolating polynomial Newton Cotes methods fail to converge for many integrals, while Romberg integration is more stable.
 
When function evaluations are expensive, it may be preferable to replace the polynomial interpolation of Richardson with the rational interpolation proposed by {{Harvtxt|Bulirsch|Stoer|1967}}.
 
== A geometric example ==
To estimate the area under a curve the trapezoid rule is applied first to one-piece, then two, then four, and so on.
 
[[File:Freeform_curve.gif|thumb|One-piece (click to enlarge)]] [[File:2 piece.gif|thumb|Two-piece]] [[File:4 piece.gif|thumb|Four-piece]] [[File:8 piece.gif|thumb|Eight-piece]]
 
After trapezoid rule estimates are obtained Richardson's Extrapolation is applied
 
*For the first iteration the two piece and one piece estimates are used in the formula (4 X (more accurate) - (less accurate))/3 The same formula is then used to compare the four piece and the two piece estimate, and likewise for the higher estimates
 
*For the second iteration the values of the first iteration are used in the formula (16(more accurate)-less accurate)/15
 
*The third iteration uses the next power of 4:  (64 (More accurate) - less accurate)/63 on the values derived by the second iteration.  
 
*The pattern is continued until there is one estimate.
 
{| class="wikitable"
|-
|'''Number of pieces'''||'''Trapezoid estimates'''|| '''First iteration'''||'''second iteration||'''third iteration'''
|-
|                      ||                        ||'''(4MA-LA)/3'''*  || '''(16MA-LA)/15'''|| '''(64MA-LA)/63'''
|- 
|1||0  ||  (4*480-0)/3 = 640||  (16*880-640)/15 =896 ||  (64*1015.11-896)/63 = 1017.002
|-
|2||480 ||  (4*780-480)/3 = 880 || (16*1006.67-880)/15 = 1015.11.. ||
|-
|4||780 ||  (4*950-780)/3 =1006.666..  ||  ||
|-
|8||950 ||  ||  ||
|-
|-
|}
*MA stands for more accurate, LA stands for less accurate
 
== Example ==
 
As an example, the [[Gaussian function]] is integrated from 0 to 1, i.e. the [[error function]] erf(1)&nbsp;≈&nbsp;0.842700792949715.  The triangular array is calculated row by row and calculation is terminated if the two last entries in the last row differ less than 10<sup>&minus;8</sup>.
 
<pre><nowiki>
0.77174333
0.82526296  0.84310283
0.83836778  0.84273605  0.84271160
0.84161922  0.84270304  0.84270083  0.84270066
0.84243051  0.84270093  0.84270079  0.84270079  0.84270079
</nowiki></pre>
 
The result in the lower right corner of the triangular array is accurate to the digits shown.
It is remarkable that this result is derived from the less accurate approximations
obtained by the trapezium rule in the first column of the triangular array.
 
== Implementation ==
Here is an example of a computer implementation of the Romberg method (in the [[C programming language]]). It needs one vector and one variable, as well as a sub-routine trapeze:
 
<source lang=c>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 6
 
int main()
{
    double s[MAX];
    int i,k;
    double var ;
    for (i = 1; i< MAX; i++)
        s[i] = 1;
    for (k=1; k< MAX; k++)
    {
        for (i=1; i <=k; i++)
        {
            if (i==1)
            {
                var = s[i];
                s[i] = Trap(0, 1, pow(2, k-1));    // sub-routine trapeze
            }                                      // integrated from 0 and 1
                                                    /* pow() is the number of subdivisions*/
            else
            {
                s[k]= ( pow(4 , i-1)*s[i-1]-var )/(pow(4, i-1) - 1);
                                                               
                var = s[i];
                s[i]= s[k]; 
            }
        }
 
        for (i=1; i <=k; i++)
            printf ("  %f  ", s[i]);
 
        printf ("\n");
    }
 
    return 0;
}
</source>
 
== References ==
* {{citation|last1=Richardson|first1=L. F.|title=The Approximate Arithmetical Solution by Finite Differences of Physical Problems Involving Differential Equations, with an Application to the Stresses in a Masonry Dam|journal= Philosophical Transactions of the Royal Society of London. Series A<!--, Containing Papers of a Mathematical or Physical Character--> |volume=210|issue=459-470|year=1911|pages=307–357|doi=10.1098/rsta.1911.0009|jstor=90994}}
* {{citation|last1=Romberg|first1=W.|title=Vereinfachte numerische Integration|journal=Det Kongelige Norske Videnskabers Selskab Forhandlinger|volume=28|year=1955|location=Trondheim|pages=30–36|issue=7}}
* {{citation|last=Thacher, Jr.|first=Henry C.|title=Remark on Algorithm 60: Romberg integration|journal=Communications of the ACM|volume=7|pages =420–421|month=July|year=1964|url=http://portal.acm.org/citation.cfm?id=364520.364542|doi=10.1145/364520.364542|issue=7}}
* {{citation|last1=Bauer|first1=F.L.|last2=Rutishauser|last3=Stiefel|first3=E.|title=New aspects in numerical quadrature|editor-last=Metropolis|editor-first=N. C., et al.|journal=Experimental Arithmetic, high-speed computing and mathematics, Proceedings of Symposia in Applied Mathematics|publisher=[[American Mathematical Society|AMS]]|year=1963|pages=199–218|first2=H.|issue=15}}
* {{citation|last1=Bulirsch|first1=Roland|last2=Stoer|first2=Josef|title= Handbook Series Numerical Integration. Numerical quadrature by extrapolation|journal=Numerische Mathematik|volume=9|year=1967|pages=271–278 |url=http://www-gdz.sub.uni-goettingen.de/cgi-bin/digbib.cgi?PPN362160546_0009}}
* {{citation|last=Mysovskikh|first=I.P.|contribution=Romberg method|editor-last=Hazewinkel|editor-first=Michiel|title=Encyclopaedia of Mathematics|publisher=[[Springer-Verlag]]|year=2002|isbn=1-4020-0609-8|url=http://eom.springer.de/r/r082570.htm}}
* {{Citation |last1=Press|first1=WH|last2=Teukolsky|first2=SA|last3=Vetterling|first3=WT|last4=Flannery|first4=BP|year=2007|title=Numerical Recipes: The Art of Scientific Computing|edition=3rd|publisher=Cambridge University Press| publication-place=New York|isbn=978-0-521-88068-8|chapter=Section 4.3. Romberg Integration|chapter-url=http://apps.nrbook.com/empanel/index.html?pg=166}}
 
== External links ==
* [http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=34&objectType=file ROMBINT] – code for [[MATLAB]] (author: Martin Kacenak)
*[http://math.fullerton.edu/mathews/n2003/RombergMod.html Module for Romberg integration]
*[http://www.hvks.com/Numerical/webintegration.html Free online integration tool using Romberg, Fox–Romberg, Gauss–Legendre and other numerical methods]
 
[[Category:Numerical integration (quadrature)]]
[[Category:Articles with example C code]]
 
[[ca:Mètode de Romberg]]
[[de:Romberg-Integration]]
[[es:Método de Romberg]]
[[fr:Méthode de Romberg]]
[[hu:Romberg módszer]]
[[nl:Methode van Romberg]]
[[pl:Metoda Romberga]]
[[sr:Ромбергова интеграција]]

Latest revision as of 23:52, 15 September 2019

This is a preview for the new MathML rendering mode (with SVG fallback), which is availble in production for registered users.

If you would like use the MathML rendering mode, you need a wikipedia user account that can be registered here [[1]]

  • Only registered users will be able to execute this rendering mode.
  • Note: you need not enter a email address (nor any other private information). Please do not use a password that you use elsewhere.

Registered users will be able to choose between the following three rendering modes:

MathML


Follow this link to change your Math rendering settings. You can also add a Custom CSS to force the MathML/SVG rendering or select different font families. See these examples.

Demos

Here are some demos:


Test pages

To test the MathML, PNG, and source rendering modes, please go to one of the following test pages:

Bug reporting

If you find any bugs, please report them at Bugzilla, or write an email to math_bugs (at) ckurs (dot) de .