csharpfftfsharpintegrationinterpolationlinear-algebramathdifferentiationmatrixnumericsrandomregressionstatisticsmathnet
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
264 lines
20 KiB
264 lines
20 KiB
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<title>IF# Notebook
|
|
</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
|
<meta name="description" content="Math.NET Numerics, providing methods and algorithms for numerical computations in science, engineering and every day use. .Net 4, .Net 3.5, SL5, Win8, WP8, PCL 47 and 136, Mono, Xamarin Android/iOS."/>
|
|
<meta name="author" content="Christoph Ruegg, Marcus Cuda, Jurgen Van Gael"/>
|
|
|
|
<script src="https://code.jquery.com/jquery-1.8.0.js"></script>
|
|
<script src="https://code.jquery.com/ui/1.8.23/jquery-ui.js"></script>
|
|
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script>
|
|
<link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet"/>
|
|
|
|
<link type="text/css" rel="stylesheet" href="https://numerics.mathdotnet.com/content/style.css" />
|
|
<style>
|
|
#main table:not(.pre) {
|
|
border: 1px solid #dddddd;
|
|
max-width: 100%;
|
|
border-style: solid;
|
|
border-width: 1px;
|
|
border-color: gray;
|
|
border-collapse: collapse;
|
|
border-right-width: 1px;
|
|
border-bottom-width: 1px;
|
|
margin-top: 15px;
|
|
margin-bottom: 25px;
|
|
}
|
|
#main table:not(.pre) th, #main table:not(.pre) td {
|
|
border: 1px solid #dddddd;
|
|
padding: 6px;
|
|
}
|
|
#main table:not(.pre) th p, #main table:not(.pre) td p {
|
|
margin-bottom: 5px;
|
|
}
|
|
</style>
|
|
<script type="text/javascript" src="https://numerics.mathdotnet.com/content/tips.js"></script>
|
|
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
|
|
<!--[if lt IE 9]>
|
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
|
<![endif]-->
|
|
|
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="masthead">
|
|
<ul class="nav nav-pills pull-right">
|
|
<li><a href="https://www.mathdotnet.com">Math.NET Project</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com">Math.NET Numerics</a></li>
|
|
<li><a href="https://github.com/mathnet/mathnet-numerics">GitHub</a></li>
|
|
</ul>
|
|
<h3 class="muted">Math.NET Numerics</h3>
|
|
</div>
|
|
<hr />
|
|
<div class="row">
|
|
<div class="span9" id="main">
|
|
|
|
<h1><a name="IF-Notebook" class="anchor" href="#IF-Notebook">IF# Notebook</a></h1>
|
|
<p><a href="https://ipython.org/">iPython</a> provides a rich browser-based interactive notebook with support for code, text, mathematical expressions,
|
|
inline plots and other rich media. <a href="https://github.com/BayardRock/IfSharp">IfSharp</a>, developed by Bayard Rock, is an F# profile
|
|
for iPython with IntelliSense and embedded FSharp.Charting. Thanks to its NuGet support it can load other packages like Math.NET Numerics on demand.</p>
|
|
<p><img src="img/IfSharp-GenerateIS.png" alt="Screenshot" /></p>
|
|
<h2><a name="Installing-IF-Notebook" class="anchor" href="#Installing-IF-Notebook">Installing IF# Notebook</a></h2>
|
|
<p>Follow the instructions at <a href="https://bayardrock.github.io/IfSharp/installation.html">IfSharp/Installation</a>.</p>
|
|
<p>Essentially:</p>
|
|
<ol>
|
|
<li><p>Install <a href="https://continuum.io/downloads">Anaconda</a></p></li>
|
|
<li>
|
|
<p>In a shell, run</p>
|
|
<p>conda update conda
|
|
conda update ipython</p>
|
|
</li>
|
|
<li><p>Install <a href="https://github.com/BayardRock/IfSharp/releases">IfSharp</a>.</p></li>
|
|
</ol>
|
|
<h2><a name="Display-Printers-for-Matrices-and-Vectors" class="anchor" href="#Display-Printers-for-Matrices-and-Vectors">Display Printers for Matrices and Vectors</a></h2>
|
|
<p>By itself IfSharp does not know how to display matrices and vectors in a nice way, but we can tell it how to do so by providing our own display printers for them.
|
|
Since v3.3 the Math.NET Numerics F# package includes a script <code>MathNet.Numerics.IfSharp.fsx</code> to do so.
|
|
Unfortunately loading this script requires the exact version in the path - if you know a way to avoid this please let us know.</p>
|
|
<p><img src="img/IfSharp-MatrixVector.png" alt="Screenshot" /></p>
|
|
<p>Alternatively you can also use the code below and adapt it to your needs, e.g. if you want it to show more rows.</p>
|
|
<table class="pre"><tr><td class="lines"><pre class="fssnip"><span class="l"> 1: </span>
|
|
<span class="l"> 2: </span>
|
|
<span class="l"> 3: </span>
|
|
<span class="l"> 4: </span>
|
|
<span class="l"> 5: </span>
|
|
<span class="l"> 6: </span>
|
|
<span class="l"> 7: </span>
|
|
<span class="l"> 8: </span>
|
|
<span class="l"> 9: </span>
|
|
<span class="l">10: </span>
|
|
<span class="l">11: </span>
|
|
<span class="l">12: </span>
|
|
<span class="l">13: </span>
|
|
<span class="l">14: </span>
|
|
<span class="l">15: </span>
|
|
<span class="l">16: </span>
|
|
<span class="l">17: </span>
|
|
<span class="l">18: </span>
|
|
<span class="l">19: </span>
|
|
<span class="l">20: </span>
|
|
<span class="l">21: </span>
|
|
<span class="l">22: </span>
|
|
<span class="l">23: </span>
|
|
<span class="l">24: </span>
|
|
<span class="l">25: </span>
|
|
<span class="l">26: </span>
|
|
<span class="l">27: </span>
|
|
<span class="l">28: </span>
|
|
<span class="l">29: </span>
|
|
<span class="l">30: </span>
|
|
<span class="l">31: </span>
|
|
<span class="l">32: </span>
|
|
<span class="l">33: </span>
|
|
<span class="l">34: </span>
|
|
<span class="l">35: </span>
|
|
<span class="l">36: </span>
|
|
<span class="l">37: </span>
|
|
<span class="l">38: </span>
|
|
<span class="l">39: </span>
|
|
<span class="l">40: </span>
|
|
<span class="l">41: </span>
|
|
<span class="l">42: </span>
|
|
<span class="l">43: </span>
|
|
<span class="l">44: </span>
|
|
<span class="l">45: </span>
|
|
<span class="l">46: </span>
|
|
</pre></td>
|
|
<td class="snippet"><pre class="fssnip highlighted"><code lang="fsharp"><span class="k">open</span> <span class="i">MathNet</span><span class="o">.</span><span class="i">Numerics</span><span class="o">.</span><span class="i">LinearAlgebra</span>
|
|
|
|
<span class="k">let</span> <span class="k">inline</span> (|<span class="i">Float</span>|_|) (<span class="i">v</span><span class="o">:</span><span class="i">obj</span>) <span class="o">=</span>
|
|
<span class="k">if</span> <span class="i">v</span> <span class="o">:?</span> <span class="i">float</span> <span class="k">then</span> <span class="i">Some</span>(<span class="i">v</span> <span class="o">:?></span> <span class="i">float</span>) <span class="k">else</span> <span class="i">None</span>
|
|
<span class="k">let</span> <span class="k">inline</span> (|<span class="i">Float32</span>|_|) (<span class="i">v</span><span class="o">:</span><span class="i">obj</span>) <span class="o">=</span>
|
|
<span class="k">if</span> <span class="i">v</span> <span class="o">:?</span> <span class="i">float32</span> <span class="k">then</span> <span class="i">Some</span>(<span class="i">v</span> <span class="o">:?></span> <span class="i">float32</span>) <span class="k">else</span> <span class="i">None</span>
|
|
<span class="k">let</span> <span class="k">inline</span> (|<span class="i">PositiveInfinity</span>|_|) (<span class="i">v</span><span class="o">:</span> <span class="o">^</span><span class="i">T</span>) <span class="o">=</span>
|
|
<span class="k">if</span> (<span class="o">^</span><span class="i">T</span> <span class="o">:</span> (<span class="k">static</span> <span class="k">member</span> <span class="i">IsPositiveInfinity</span><span class="o">:</span> <span class="o">'</span><span class="i">T</span> <span class="k">-></span> <span class="i">bool</span>) (<span class="i">v</span>))
|
|
<span class="k">then</span> <span class="i">Some</span> <span class="i">PositiveInfinity</span> <span class="k">else</span> <span class="i">None</span>
|
|
<span class="k">let</span> <span class="k">inline</span> (|<span class="i">NegativeInfinity</span>|_|) (<span class="i">v</span><span class="o">:</span> <span class="o">^</span><span class="i">T</span>) <span class="o">=</span>
|
|
<span class="k">if</span> (<span class="o">^</span><span class="i">T</span> <span class="o">:</span> (<span class="k">static</span> <span class="k">member</span> <span class="i">IsNegativeInfinity</span><span class="o">:</span> <span class="o">'</span><span class="i">T</span> <span class="k">-></span> <span class="i">bool</span>) (<span class="i">v</span>))
|
|
<span class="k">then</span> <span class="i">Some</span> <span class="i">NegativeInfinity</span> <span class="k">else</span> <span class="i">None</span>
|
|
<span class="k">let</span> <span class="k">inline</span> (|<span class="i">NaN</span>|_|) (<span class="i">v</span><span class="o">:</span> <span class="o">^</span><span class="i">T</span>) <span class="o">=</span>
|
|
<span class="k">if</span> (<span class="o">^</span><span class="i">T</span> <span class="o">:</span> (<span class="k">static</span> <span class="k">member</span> <span class="i">IsNaN</span><span class="o">:</span> <span class="o">'</span><span class="i">T</span> <span class="k">-></span> <span class="i">bool</span>) (<span class="i">v</span>))
|
|
<span class="k">then</span> <span class="i">Some</span> <span class="i">NaN</span> <span class="k">else</span> <span class="i">None</span>
|
|
|
|
<span class="k">let</span> <span class="k">inline</span> <span class="i">formatMathValue</span> (<span class="i">floatFormat</span><span class="o">:</span><span class="i">string</span>) <span class="o">=</span> <span class="k">function</span>
|
|
| <span class="i">PositiveInfinity</span> <span class="k">-></span> <span class="s">"\\infty"</span>
|
|
| <span class="i">NegativeInfinity</span> <span class="k">-></span> <span class="s">"-\\infty"</span>
|
|
| <span class="i">NaN</span> <span class="k">-></span> <span class="s">"\\times"</span>
|
|
| <span class="i">Float</span> <span class="i">v</span> <span class="k">-></span> <span class="i">v</span><span class="o">.</span><span class="i">ToString</span>(<span class="i">floatFormat</span>)
|
|
| <span class="i">Float32</span> <span class="i">v</span> <span class="k">-></span> <span class="i">v</span><span class="o">.</span><span class="i">ToString</span>(<span class="i">floatFormat</span>)
|
|
| <span class="i">v</span> <span class="k">-></span> <span class="i">v</span><span class="o">.</span><span class="i">ToString</span>()
|
|
|
|
<span class="k">let</span> <span class="k">inline</span> <span class="i">formatMatrix</span> (<span class="i">matrix</span><span class="o">:</span> <span class="i">Matrix</span><span class="o"><</span><span class="o">'</span><span class="i">T</span><span class="o">></span>) <span class="o">=</span>
|
|
<span class="i">String</span><span class="o">.</span><span class="i">concat</span> <span class="i">Environment</span><span class="o">.</span><span class="i">NewLine</span>
|
|
[ <span class="s">"\\begin{bmatrix}"</span>
|
|
<span class="i">matrix</span><span class="o">.</span><span class="i">ToMatrixString</span>(<span class="n">10</span>,<span class="n">4</span>,<span class="n">7</span>,<span class="n">2</span>,<span class="s">"\\cdots"</span>,<span class="s">"\\vdots"</span>,<span class="s">"\\ddots"</span>,
|
|
<span class="s">" & "</span>, <span class="s">"\\\\ "</span> <span class="o">+</span> <span class="i">Environment</span><span class="o">.</span><span class="i">NewLine</span>, (<span class="k">fun</span> <span class="i">x</span> <span class="k">-></span> <span class="i">formatMathValue</span> <span class="s">"G4"</span> <span class="i">x</span>))
|
|
<span class="s">"\\end{bmatrix}"</span> ]
|
|
|
|
<span class="k">let</span> <span class="k">inline</span> <span class="i">formatVector</span> (<span class="i">vector</span><span class="o">:</span> <span class="i">Vector</span><span class="o"><</span><span class="o">'</span><span class="i">T</span><span class="o">></span>) <span class="o">=</span>
|
|
<span class="i">String</span><span class="o">.</span><span class="i">concat</span> <span class="i">Environment</span><span class="o">.</span><span class="i">NewLine</span>
|
|
[ <span class="s">"\\begin{bmatrix}"</span>
|
|
<span class="i">vector</span><span class="o">.</span><span class="i">ToVectorString</span>(<span class="n">12</span>, <span class="n">80</span>, <span class="s">"\\vdots"</span>, <span class="s">" & "</span>, <span class="s">"\\\\ "</span> <span class="o">+</span> <span class="i">Environment</span><span class="o">.</span><span class="i">NewLine</span>,
|
|
(<span class="k">fun</span> <span class="i">x</span> <span class="k">-></span> <span class="i">formatMathValue</span> <span class="s">"G4"</span> <span class="i">x</span>))
|
|
<span class="s">"\\end{bmatrix}"</span> ]
|
|
|
|
<span class="i">App</span><span class="o">.</span><span class="i">AddDisplayPrinter</span> (<span class="k">fun</span> (<span class="i">x</span><span class="o">:</span><span class="i">Matrix</span><span class="o"><</span><span class="i">float</span><span class="o">></span>) <span class="k">-></span>
|
|
{ <span class="i">ContentType</span> <span class="o">=</span> <span class="s">"text/latex"</span>; <span class="i">Data</span> <span class="o">=</span> <span class="i">formatMatrix</span> <span class="i">x</span> })
|
|
<span class="i">App</span><span class="o">.</span><span class="i">AddDisplayPrinter</span> (<span class="k">fun</span> (<span class="i">x</span><span class="o">:</span><span class="i">Matrix</span><span class="o"><</span><span class="i">float32</span><span class="o">></span>) <span class="k">-></span>
|
|
{ <span class="i">ContentType</span> <span class="o">=</span> <span class="s">"text/latex"</span>; <span class="i">Data</span> <span class="o">=</span> <span class="i">formatMatrix</span> <span class="i">x</span> })
|
|
<span class="i">App</span><span class="o">.</span><span class="i">AddDisplayPrinter</span> (<span class="k">fun</span> (<span class="i">x</span><span class="o">:</span><span class="i">Vector</span><span class="o"><</span><span class="i">float</span><span class="o">></span>) <span class="k">-></span>
|
|
{ <span class="i">ContentType</span> <span class="o">=</span> <span class="s">"text/latex"</span>; <span class="i">Data</span> <span class="o">=</span> <span class="i">formatVector</span> <span class="i">x</span> })
|
|
<span class="i">App</span><span class="o">.</span><span class="i">AddDisplayPrinter</span> (<span class="k">fun</span> (<span class="i">x</span><span class="o">:</span><span class="i">Vector</span><span class="o"><</span><span class="i">float32</span><span class="o">></span>) <span class="k">-></span>
|
|
{ <span class="i">ContentType</span> <span class="o">=</span> <span class="s">"text/latex"</span>; <span class="i">Data</span> <span class="o">=</span> <span class="i">formatVector</span> <span class="i">x</span> })
|
|
</code></pre></td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
</div>
|
|
<div class="span3">
|
|
<ul class="nav nav-list" id="menu">
|
|
|
|
<li class="nav-header">Math.NET Numerics</li>
|
|
<li><a href="https://numerics.mathdotnet.com/Packages.html">NuGet & Binaries</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/ReleaseNotes.html">Release Notes</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/License.html">MIT/X11 License</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/Compatibility.html">Platform Support</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/api/">Class Reference</a></li>
|
|
<li><a href="https://github.com/mathnet/mathnet-numerics/issues">Issues & Bugs</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/Users.html">Who is using Math.NET?</a></li>
|
|
|
|
<li class="nav-header">Contributing</li>
|
|
<li><a href="https://numerics.mathdotnet.com/Contributors.html">Contributors</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/Contributing.html">Contributing</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/Build.html">Build & Tools</a></li>
|
|
<li><a href="http://feedback.mathdotnet.com/forums/2060-math-net-numerics">Your Ideas</a></li>
|
|
|
|
<li class="nav-header">Getting Help</li>
|
|
<li><a href="https://discuss.mathdotnet.com/c/numerics">Discuss</a></li>
|
|
<li><a href="https://stackoverflow.com/questions/tagged/mathdotnet">Stack Overflow</a></li>
|
|
|
|
<li class="nav-header">Getting Started</li>
|
|
<li><a href="https://numerics.mathdotnet.com/">Getting started</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/Constants.html">Constants</a></li>
|
|
<li>Floating-Point Numbers</li>
|
|
<li>Arbitrary Precision Numbers</li>
|
|
<li>Complex Numbers</li>
|
|
<li><a href="https://numerics.mathdotnet.com/Matrix.html">Matrices and Vectors</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/Euclid.html">Euclid & Number Theory</a></li>
|
|
<li>Combinatorics</li>
|
|
|
|
<li class="nav-header">Evaluation</li>
|
|
<li><a href="https://numerics.mathdotnet.com/Functions.html">Special Functions</a></li>
|
|
<li>Differentiation</li>
|
|
<li><a href="https://numerics.mathdotnet.com/Integration.html">Integration</a></li>
|
|
|
|
<li class="nav-header">Statistics/Probability</li>
|
|
<li><a href="https://numerics.mathdotnet.com/DescriptiveStatistics.html">Descriptive Statistics</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/Probability.html">Probability Distributions</a></li>
|
|
|
|
<li class="nav-header">Generation</li>
|
|
<li><a href="https://numerics.mathdotnet.com/Generate.html">Generating Data</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/Random.html">Random Numbers</a></li>
|
|
|
|
<li class="nav-header">Transformation</li>
|
|
<li>Fourier Transform (FFT)</li>
|
|
<li>Filtering & DSP</li>
|
|
<li>Window Functions</li>
|
|
|
|
<li class="nav-header">Solving Equations</li>
|
|
<li><a href="https://numerics.mathdotnet.com/LinearEquations.html">Linear Equation Systems</a></li>
|
|
<li>Nonlinear Root Finding</li>
|
|
|
|
<li class="nav-header">Optimization</li>
|
|
<li>Linear Least Squares</li>
|
|
<li>Nonlinear Optimization</li>
|
|
<li><a href="https://numerics.mathdotnet.com/Distance.html">Distance Metrics</a></li>
|
|
|
|
<li class="nav-header">Curve Fitting</li>
|
|
<li><a href="https://numerics.mathdotnet.com/Regression.html">Regression</a></li>
|
|
<li>Interpolation</li>
|
|
<li>Fourier Approximation</li>
|
|
|
|
<li class="nav-header">Native Providers</li>
|
|
<li><a href="https://numerics.mathdotnet.com/MKL.html">Intel MKL</a></li>
|
|
|
|
<li class="nav-header">Working Together</li>
|
|
<li><a href="https://numerics.mathdotnet.com/CSV.html">Delimited Text Files (CSV)</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/MatrixMarket.html">NIST MatrixMarket</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/MatlabFiles.html">MATLAB</a></li>
|
|
<li><a href="https://numerics.mathdotnet.com/IFSharpNotebook.html">IF# Notebook</a></li>
|
|
<li>FsLab & Deedle</li>
|
|
<li>Microsoft Excel</li>
|
|
<li>numl.net machine learning</li>
|
|
<li>R-project</li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|