<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="https://community.wolfram.com">
    <title>Community RSS Feed</title>
    <link>https://community.wolfram.com</link>
    <description>RSS Feed for Wolfram Community showing questions tagged with Mathematics with no replies sorted by most likes.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/908332" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1184139" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/55094" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1729183" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1382879" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2251422" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2096163" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1819304" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1382967" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1382823" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1140640" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/935721" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/832567" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/602402" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/471839" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/323630" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3106777" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2949003" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2862059" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2717455" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/908332">
    <title>[WSSA16] Natural language compression Huffman Method</title>
    <link>https://community.wolfram.com/groups/-/m/t/908332</link>
    <description>**Abstract** &#xD;
&#xD;
   The goal of this project is to implement the Huffman lossless data compression algorithm which is a compression algorithm based on the frequency of data. The trick is that the words which are more commonly used must be shorter than the words which are less common. The English language already uses this approach, for example, the word &amp;#034;the&amp;#034; is frequently used and short but the word &amp;#034;approximation&amp;#034;, which is much less frequent is longer.&#xD;
&#xD;
 - Introduction to Huffman coding&#xD;
 - Word frequency data &#xD;
 - Huffman algorithm code in Mathematica and a few examples &#xD;
 - Correlation between words and Huffman codes&#xD;
&#xD;
**Introduction to Huffman coding**&#xD;
&#xD;
   Huffman coding is a statistical technique, which attempts to reduce the amount of bits required to represent a string or a symbol. The concept of Huffman algorithm is that the shorter binary codes are assigned to the most frequently used symbols and longer codes to the symbols which appear less frequently. The Huffman code for an alphabet (set of symbols or words) may be generated by constructing a binary tree with nodes containing the symbols to be encoded and their probabilities of occurrence (that&amp;#039;s where the statistical part comes in). This means that you must know all of the symbols that will be encoded and their probabilities prior to constructing a tree. In computer science and information theory, a Huffman code is a particular type of optimal prefix code that is commonly used for lossless data compression. The algorithm was originally developed by David A. Huffman.&#xD;
&#xD;
&#xD;
**Word frequency data:**&#xD;
&#xD;
As an input for the Huffman coding algorithm, we use the 5000 most frequently used words in English. See the database &#xD;
[Here][1].&#xD;
The following is the  visualization of most commonly used words,&#xD;
&#xD;
 $\qquad \qquad \qquad \qquad \qquad \qquad $![enter image description here][2]&#xD;
&#xD;
&#xD;
 **Examples of Huffman codes**&#xD;
&#xD;
&#xD;
    merge[k_] := &#xD;
      Replace[k, {{a_, aC_}, {b_, bC_}, rest___} :&amp;gt; {{{a, b}, aC + bC}, &#xD;
         rest}];&#xD;
    &#xD;
    mergeSort[d_List] := FixedPoint[merge @ SortBy[#, Last] &amp;amp;, d][[1, 1]];&#xD;
    &#xD;
    findPosition[l_List, k_List] := Map[&#xD;
        (# -&amp;gt; Flatten[Position[k, #] - 1]) &amp;amp;,&#xD;
        DeleteDuplicates[l]&#xD;
    ];&#xD;
    &#xD;
    huffman[l_List] := Module[{sortList, code, words},&#xD;
      words = l[[All, 1]];&#xD;
      sortList = mergeSort[l];&#xD;
      code = findPosition[words, sortList];&#xD;
      {Flatten[l /. code], code};&#xD;
      code&#xD;
    ]&#xD;
&#xD;
These are a few examples of encoded words using Huffman algorithm &#xD;
&#xD;
 $\qquad \qquad \qquad \qquad \qquad \qquad $![enter image description here][3]&#xD;
&#xD;
&#xD;
 **Correlation between words and Huffman codes**&#xD;
&#xD;
The following is the correlation plot of the numbers of letters in a word and number of bits produced by Huffman algorithm.&#xD;
As you can see from the plot the most commonly used words in English tend to be shorter and the overall the trend in English and in Huffman code is the same.&#xD;
&#xD;
&#xD;
 $\qquad \qquad \qquad \qquad \qquad \qquad $![enter image description here][4]&#xD;
&#xD;
The following plot represents the number of bits of English words and the number of bits of Huffman codes. The number of bits per English word was computed using a conversion factor of $\log_2(26) ~ 4.7$ bits per word, where 26 is the number of letters in the English alphabet.&#xD;
&#xD;
&#xD;
 $\qquad \qquad \qquad \qquad \qquad \qquad $![enter image description here][5]&#xD;
&#xD;
The blue line is a scatter plot of the number of bits in English versus the number of bits in the Huffman code. The red line is $y=x$. .As you can see the Huffman coding is much more  efficient and the slope of the curve tells us that the Huffman coding uses three times less space than the English language.&#xD;
&#xD;
  [1]: https://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/PG/2006/04/1-10000&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=wordcloud.png&amp;amp;userId=900670&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Matrix.PNG&amp;amp;userId=900670&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=corr.png&amp;amp;userId=900670&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=5310corr.png&amp;amp;userId=900670</description>
    <dc:creator>Vahagn Hayrapetyan</dc:creator>
    <dc:date>2016-08-19T12:34:09Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1184139">
    <title>Re-mesh, downsample &amp;amp; upsample a DiscretizeRegion object?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1184139</link>
    <description>Why this question affects my choice of finite element solver&#xD;
------------------------------------------------------------&#xD;
&#xD;
In my project, I am importing a complex geometry from an STL file into Mathematica as a `MeshRegion`. I would like to edit this mesh significantly: For instance, drastically reduce or increase the number of elements (for finite element analysis) or make boolean operations. But I am not sure if Mathematica can re-mesh a `MeshRegion` that is obtained from discrete data. This question is of personal importance for me because it will help decide if I can go ahead with using `NDSolve` for the finite element analysis of my project: If re-meshing is very problematic in Mathematica, it may be wiser to import volume meshes from external software, or do all of the finite element analysis in a dedicated solver like Comsol. &#xD;
&#xD;
Re-meshing an already discretized `MeshRegion`&#xD;
--------------------------------------------&#xD;
&#xD;
Let me illustrate. When I work with an `ImplicitRegion`, I seem to have full control, I can make a mesh with very many or few elements, and apply boolean operations too:&#xD;
&#xD;
    IR = ImplicitRegion[&#xD;
       x^6 - 5 x^4 y + 3 x^4 y^2 + 10 x^2 y^3 + 3 x^2 y^4 - y^5 + y^6 + &#xD;
         z^2 &amp;lt;= 1, {x, y, z}];&#xD;
    &amp;lt;&amp;lt; NDSolve`FEM`&#xD;
    ToElementMesh[IR, MaxCellMeasure -&amp;gt; Infinity, &#xD;
      AccuracyGoal -&amp;gt; 0][&amp;#034;Wireframe&amp;#034;]&#xD;
    ToElementMesh[RegionDifference[IR, Cuboid[]], &#xD;
      MaxCellMeasure -&amp;gt; 0.001][&amp;#034;Wireframe&amp;#034;]&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Next, I create a `MeshRegion` by applying `DiscretizeRegion`. This leaves me in basically the same situation as importing some STL mesh into Mathematica as `MeshRegion`:&#xD;
&#xD;
    MR = DiscretizeRegion[IR]; (* same as MR = Import[&amp;#034;filename.stl&amp;#034;, &amp;#034;MeshRegion&amp;#034;] *)&#xD;
&#xD;
Now I can no longer downsample:&#xD;
&#xD;
    ToElementMesh[MR, MaxCellMeasure -&amp;gt; Infinity, AccuracyGoal -&amp;gt; 0]&#xD;
    ToElementMesh[MR]&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
Same thing! No downsampling appears to have happened. Possibly no re-meshing whatsoever. Mathematica returns basically the same number of elements (`TetrahedronElement[&amp;#034;&amp;lt;&amp;#034; 16793 &amp;#034;&amp;gt;&amp;#034;]` vs `TetrahedronElement[&amp;#034;&amp;lt;&amp;#034; 16841 &amp;#034;&amp;gt;&amp;#034;]`, respectively).&#xD;
&#xD;
Also I can no longer apply boolean operations:&#xD;
&#xD;
    RegionDifference[MR, Cuboid[]] // DiscretizeRegion&#xD;
&#xD;
returns an error&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
Is there some way I could gain control of the `DiscretizeRegion` in the same way as `ImplicitRegion`? In practice, I am presented with discrete data (STL file) and I would like to be able to re-mesh it, do boolean operations, and run FEM in full control of my mesh. Is that possible?&#xD;
&#xD;
Bad brute force solution&#xD;
-----&#xD;
&#xD;
You can brute force Mathematica to re-mesh using this hack:&#xD;
&#xD;
        MR2 = DiscretizeGraphics[&#xD;
          RegionPlot3D[&#xD;
           RegionMember[MR, {x, y, z}] == True &amp;amp;&amp;amp; &#xD;
            RegionMember[Cuboid[], {x, y, z}] == False, {x, -2, 2}, {y, -2, &#xD;
            2}, {z, -2, 2}, PlotPoints -&amp;gt; 20]]&#xD;
    ToElementMesh[MR2, MaxCellMeasure -&amp;gt; Infinity, AccuracyGoal -&amp;gt; 0]&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
However, converting the `MeshRegion` (picture above, left) with `ToElementMesh` hopelessly overmeshes things (picture above, right). I get about 500k tetrahedral elements. Once again I don&amp;#039;t know how to control my mesh for finite element analysis.&#xD;
&#xD;
Disclaimer&#xD;
-----&#xD;
I have posted this question to Mathematica Stackexchange [here][5], where it has gone unanswered for several days. Because of the importance of this question for my modeling work (I need to decide if I can go ahead with Mathematica for the finite element analysis part of my project), I decided to post it to the Wolfram Community to hopefully get some developer feedback. I am happy to summarise the insights of this this discussion for the Stackexchange community once we have (hopefully) reached some conclusions. &#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=1.png&amp;amp;userId=1184102&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2.png&amp;amp;userId=1184102&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=3.png&amp;amp;userId=1184102&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=4.png&amp;amp;userId=1184102&#xD;
  [5]: https://mathematica.stackexchange.com/questions/155484/is-it-possible-to-re-mesh-downsample-upsample-a-discretizeregion-object</description>
    <dc:creator>Alexander Erlich</dc:creator>
    <dc:date>2017-09-13T17:30:32Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/55094">
    <title>Bisecting the perimeter of a triangle</title>
    <link>https://community.wolfram.com/groups/-/m/t/55094</link>
    <description>In the process of developing [url=http://demonstrations.wolfram.com/author.html?author=Jaime%20Rangel-Mondragon]some demonstrations I published recently[/url] about bisecting the perimeter of triangles I came across the following result. Consider the arc AB of a circle, the segment AB not necesarily being a diameter of the circle. If M is the apex in the middle of the arc and we join it to the center N of AB, then clearly AN = BN. In other words, if we join the middle M of  arc AB with the middle N of  segment AB, segments MN and AB are perpendicular and AN = BN. Perhaps the following manipulate would clarify the idea.[mcode] Manipulate[&#xD;
 Block[{r}, r = Sqrt[1 + h^2];&#xD;
  {c1, c2} = If[h &amp;lt; 0, {6, 5}, {5, 6}];&#xD;
  Graphics[{{EdgeForm[Thick], ColorData[2, c1], Disk[{0, -h}, r], &#xD;
     ColorData[2, c2], &#xD;
     Disk[{0, -h}, r, {ArcTan @@ {1, h}, ArcTan @@ {-1, h}}]}, &#xD;
    ColorData[2, c1], Rectangle[{-1, -h}, {1, 0}], Black, &#xD;
    Line[{{-1, 0}, {1, 0}}], Line[{{0, -h + r}, {0, 0}}], &#xD;
    Style[{Text[&amp;#034;A&amp;#034;, {-1, -.1}], Text[&amp;#034;B&amp;#034;, {1, -.1}], &#xD;
      Text[&amp;#034;M&amp;#034;, {0, -h + r + .1}], Text[&amp;#034;N&amp;#034;, {0, -.1}]}, 20, Bold]}, &#xD;
   PlotRange -&amp;gt; 1.2]],&#xD;
 &#xD;
 {{h, 0, &amp;#034;circle&amp;#034;}, -1, 2, Slider}]&#xD;
[/mcode]&#xD;
[img=width: 411px; height: 455px;]/c/portal/getImageAttachment?filename=pic1.png&amp;amp;userId=48389[/img]&#xD;
&#xD;
Now for the interesting part. Suppose that there is a point C on the arc AB and instead of defining N as the perpendicular from M to AB, we take N as the perpendicular from M  to AC and now relabel as D the middle point of segment AB (if point C is at the left of M we take N to be the perpendicular from M to BC). The following manipulate illustrates this.&#xD;
[mcode] Manipulate[&#xD;
 r = Sqrt[1 + h^2];&#xD;
 al = If[h == 0, Pi/2, ArcTan[1/h]];&#xD;
 a = If[h &amp;gt; 0, {al - Pi/2, &#xD;
    3 Pi/2 - al}, {Pi/2 - al, Pi/2 + al}];&#xD;
 ac = cc Last[a] + (1 - cc) First[a];&#xD;
 c = {0, h} + r {Cos[ac], Sin[ac]};&#xD;
 n = If[First[c] &amp;gt; 0, {-1, 0} + &#xD;
    Projection[{1, h + r}, c + {1, 0}], {1, 0} + &#xD;
    Projection[{-1, h + r}, c - {1, 0}]];&#xD;
 Graphics[{EdgeForm[Thick],&#xD;
   Circle[{0, h}, r, a], Black, Line[{{-1, 0}, c, {1, 0}, {-1, 0}}], &#xD;
   Line[{{0, h + r}, n}], &#xD;
   Style[{Text[&amp;#034;A&amp;#034;, {-1, -.1}], Text[&amp;#034;B&amp;#034;, {1, -.1}], &#xD;
     Text[&amp;#034;M&amp;#034;, {0, h + r + .1}], Text[&amp;#034;D&amp;#034;, {0, -.1}], Text[&amp;#034;C&amp;#034;, c], &#xD;
     Text[&amp;#034;N&amp;#034;, n]}, 20, Bold]}, &#xD;
  PlotRange -&amp;gt; {{-1.5, 1.5}, {-.2, 2.5}}],&#xD;
 &#xD;
 {{h, 0, &amp;#034;circle&amp;#034;}, -3, .9, Slider},&#xD;
 {{cc, .3, &amp;#034;point C&amp;#034;}, 0, 1, Slider}]&#xD;
[/mcode]&#xD;
[img=width: 411px; height: 447px;]/c/portal/getImageAttachment?filename=pic2.png&amp;amp;userId=48389[/img]&#xD;
&#xD;
Surprisingly, considering lengths, AN = NC + CB (or BN=NC+AC if C is to the left of M). Perhaps some reader can come up with a proof of this result?. What has this to do with bisecting perimeters of triangles and what is the importance of point D to even having received a label? Well, it turns out that the segment DN bisects the perimeter of triangle ABC.&#xD;
&#xD;
In seeking for an algebraic proof of this result, we set a = (1, 0), b = (-1, 0), d=(0,0) and the center of the circle at (0, h) with variable h. The radius of the circle is then r = Sqrt[1 + h^2]. Thus m = (0, h + r) and c = (0, h) + r (cos (t), sin (t)) for some value of t not exceeding pi/2 (the other bound will be mentioned later). &#xD;
       The point n is then obtained as[mcode]{a, b} = {{-1, 0}, {1, 0}};&#xD;
r = Sqrt[1 + h^2];&#xD;
m = {0, h + r};&#xD;
c = {0, h} + r {Cos[t], Sin[t]};&#xD;
n = FullSimplify[a + (m - a).(c - a) (c - a)/((c - a).(c - a))]&#xD;
[/mcode][mcode] {1/2 (-1 + (h + Sqrt[1 + h^2]) Cos[t] + Sin[t]), 1/2 (-Cos[t] + (h + Sqrt[1 + h^2]) (1 + Sin[t]))}&#xD;
[/mcode]&#xD;
With these values, the expression we want to verify  being  equal to zero is tested as:[mcode] FullSimplify[Norm[n - a] - Norm[n - c] - Norm[c - b] /. Abs[xx_]^2 -&amp;gt; xx^2, t &amp;lt; Pi/2]&#xD;
[/mcode][mcode] -Sqrt[(-1 + h (-h + Sqrt[1 + h^2])) (-1 + Sin[t])] + Sqrt[(1 + &#xD;
    h (h + Sqrt[1 + h^2])) (1 + Sin[t])] - &#xD;
 Sqrt[2] Sqrt[1 + h^2 + Sqrt[1 + h^2] (-Cos[t] + h Sin[t])]&#xD;
[/mcode]So, we are left with the following (probably) true theorem&#xD;
&#xD;
[img=width: 692px; height: 96px;]/c/portal/getImageAttachment?filename=pic3.png&amp;amp;userId=48389[/img]&#xD;
&#xD;
but this takes us further away  from the proof we want.</description>
    <dc:creator>Jaime Rangel-Mondragon</dc:creator>
    <dc:date>2013-07-02T22:05:08Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1729183">
    <title>[WSS19] Time Series Summarization and Application In Weather Data</title>
    <link>https://community.wolfram.com/groups/-/m/t/1729183</link>
    <description># Introduction&#xD;
&#xD;
Suppose one wants to know the average temperature throughout a time series. With the existing resources, the only option is to calculate the average of every single data point for the entire time interval. This option, however, is extremely inefficient as every point is needed in order to generate the average. To solve this problem, we examine how we may divide the time series into years, months, weeks, dates, and hours so that when the average is calculated, we can simply extract the temperature values for the years, months, etc. and reduce the number of objects that is needed for the average to be calculated. &#xD;
I will start by extracting the complete years that occur during this time series. By doing so, we created objects that will represent all the data points for that year. We may then continue this process and extract the complete months from the time that does not assemble a complete year. Then, we continue this process by grouping the dates that are left into combinations of six - day weeks and days. &#xD;
&#xD;
# Time Series Summarization&#xD;
&#xD;
I have decided that I will write out the time series as a combination of years, months, weeks, days, and hours. The logic that I will use to break down a time series will be the following: &#xD;
&#xD;
![Logic Flow Of Time Series Summarization][1]&#xD;
&#xD;
Notice that one unique feature of my optimization model considers six-day weeks instead of the traditional seven-day format. I have decided to do so for several reasons: &#xD;
&#xD;
- It is actually more efficient to write out time series combinations when the weeks are six days long. I wrote the program that will determine for week length of n days how many week/day objects will be needed to assemble a time series of m days for all m that is less than the max number of days in a month (Thus, 1 &amp;lt;= m &amp;lt;= 30). When I sum of all the number of objects needed across all m values for each of the n values, I realized that n=6 actually has the lowest total, which means that n = 6 will be the most efficient. Also, it takes less objects to assemble periods of 30, 31 days when n=6 because 6 divides these values almost evenly.&#xD;
- This will eliminate any potential for the need to reconsider the optimization strategy for the beginning and the ending of the time series: If the traditional seven-day week format is used, then the optimizing strategy will take one extra step because if we consider the time series [June 1st, July 5th], then grouping this time series into 5 weeks instead of the month of June plus 5 days will mean that less objects is needed when we calculate the average. Using the six-day week format will eliminate such concerns. Once we extracted the weeks and dates, we will create the most efficient combination for this time series.&#xD;
&#xD;
Based on the tree diagram, I can go ahead and assemble the most efficient combination. I will construct the TimeSeriesCombination to obtain the most optimal time series combination.The following is a combination of years (expressed as yyyy, where yyyy stands for the year), months (yyyymm), weeks (yyyymmddW), dates (yyyymmdd), hours (yyyymmddhh), expressed in chronological order. &#xD;
&#xD;
    TimeSeriesCombination[DateObject[{2019, 6, 2, 1}], &#xD;
     DateObject[{2019, 7, 5, 0}]]&#xD;
&#xD;
    {&amp;#034;2019060201&amp;#034;, &amp;#034;2019060202&amp;#034;, &amp;#034;2019060203&amp;#034;, &amp;#034;2019060204&amp;#034;, &#xD;
    &amp;#034;2019060205&amp;#034;, &amp;#034;2019060206&amp;#034;, &amp;#034;2019060207&amp;#034;, &amp;#034;2019060208&amp;#034;, &amp;#034;2019060209&amp;#034;, &#xD;
    &amp;#034;2019060210&amp;#034;, &amp;#034;2019060211&amp;#034;, &amp;#034;2019060212&amp;#034;, &amp;#034;2019060213&amp;#034;, &amp;#034;2019060214&amp;#034;, &#xD;
    &amp;#034;2019060215&amp;#034;, &amp;#034;2019060216&amp;#034;, &amp;#034;2019060217&amp;#034;, &amp;#034;2019060218&amp;#034;, &amp;#034;2019060219&amp;#034;, &#xD;
    &amp;#034;2019060220&amp;#034;, &amp;#034;2019060221&amp;#034;, &amp;#034;2019060222&amp;#034;, &amp;#034;2019060223&amp;#034;, &amp;#034;20190603W&amp;#034;, &#xD;
    &amp;#034;20190609W&amp;#034;, &amp;#034;20190615W&amp;#034;, &amp;#034;20190621W&amp;#034;, &amp;#034;20190627W&amp;#034;, &amp;#034;20190703&amp;#034;, &#xD;
    &amp;#034;20190704&amp;#034;, &amp;#034;2019070500&amp;#034;}&#xD;
&#xD;
To make this time series more readable, we can go ahead and group it by the type of object. In this case, all consecutive hours will be grouped together, than days, weeks, etc. &#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
#Evaluation: In Application To Weather Data&#xD;
&#xD;
Using this optimized time series summarization, I can find the maximum, minimum, and the mean air temperature for a time series. For now, the functions only apply to Waltham, MA. An extra parameter will be needed to allow users to select their locations. The temperature interval can be determined by looking at the objects generate by the TimeSeriesCombination function and using these as keys to search up generated weather temperature data (I have created a  data file producing process that is intended to improve the Wolfram Knowledge Base) and using the weather temperature data to calculate the overall maximum, minimum, and mean value during this time interval. &#xD;
&#xD;
    MaxTemperatureInterval[DateObject[{2016, 8, 13, 0}], &#xD;
     DateObject[{2018, 2, 23, 23}]]&#xD;
 &#xD;
    Quantity[81.788, &amp;#034;DegreesFahrenheit&amp;#034;]&#xD;
&#xD;
    MinTemperatureInterval[DateObject[{2016, 8, 13, 0}], &#xD;
     DateObject[{2018, 2, 23, 23}]]&#xD;
&#xD;
    Quantity[0.710001, &amp;#034;DegreesFahrenheit&amp;#034;]&#xD;
&#xD;
    MeanTemperatureInterval[DateObject[{2016, 8, 13, 0}], &#xD;
     DateObject[{2018, 2, 23, 23}]]&#xD;
&#xD;
    Quantity[48.5953, &amp;#034;DegreesFahrenheit&amp;#034;]&#xD;
&#xD;
#Evaluation: How Efficient Is This Function? &#xD;
&#xD;
We decided to conduct a test to see how much the generated function improves the overall efficiency of finding data of that time series. We determine how time, in seconds, it takes for the algorithm we determined, and also the existing algorithm, to determine the mean temperature throughout 300 time series, each ending at 2018/12/31 but have lengths of 1 day, 2 days, ...  We find that initially the existing method is more efficient. However, as the number of days increase my method starts to prevail. &#xD;
![Comparison Of The Run Of The Two Functions][3]&#xD;
&#xD;
Based on the plot, we can see that past 90 days my function will be significantly more efficient than the existing method. I anticipate that as the number of days increase, my method will become more and more efficient compared to the existing method. &#xD;
&#xD;
# Why This Function Is Actually More Important Than Just The Efficiency  &#xD;
To double check that my code makes sense, I go back to check the calculated value against the value that is calculated using the existing method. When I look at the values, there seems to be some differences.&#xD;
![enter image description here][4]&#xD;
The difference is even bigger when we are looking at smaller time intervals.&#xD;
![enter image description here][5]&#xD;
While I wonder what is causing this difference, I remembered my initial experiment on time series and remembered that the number of data points for each day is not equal:  &#xD;
![enter image description here][6]&#xD;
Using the data files that I have, I calculated and confirmed that the existing system simply takes all the data points during that time interval and averages it out. What this means is that the mechanism will favor some mechanisms over the others. In the case between 2018/11/13 to 2018/11/15, the temperature is larger because the date, whose temperature is 46.5 F (higher than the other two dates) is favored during the calculation. Thus, my method of calculation will provide a more calculation of the mean because every day will have the same weight during the calculation. &#xD;
Note that my mechanism is not perfect. This comes from the fact that the daily temperatures are calculated with the same method that caused the inaccuracies in the existing mechanism, and the unequal representation of hours is a glaring issue in calculating daily temperatures: &#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
In this case, the temperature during 2:00 and 10:00 is not even calculated! When calculating averages, 18:00-24:00 will be heavily favored and the mean temperature for the date will be a lot close to the 70 F mark as a result. Thus, daily temperatures should eventually be calculated by averaging the values for all the hours. &#xD;
&#xD;
# Future Work&#xD;
&#xD;
I can examine whether inserting other time intervals (quarters, decades, centuries, minutes, seconds) will allow for an even more efficient processing, and implement these intervals if it is indeed more efficient to do so. I can also use  the time series summation to look at other data (Dow Jones index, etc.) to generate relevant statistical analysis such as forecasting. &#xD;
&#xD;
&#xD;
#Further Exploration&#xD;
GitHub link: [https://github.com/altan4377/WSS-2019][8]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=TreeDiagram.jpg&amp;amp;userId=1726252&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ResultsColumnForm.jpg&amp;amp;userId=1726252&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ComparisonOfMethods-MineVSExisting.jpg&amp;amp;userId=1726252&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Inaccuracy-1.jpg&amp;amp;userId=1726252&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Inaccuracy-2.jpg&amp;amp;userId=1726252&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Inaccuracy-3.jpg&amp;amp;userId=1726252&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Inaccuracy-3-WithTitle.jpg&amp;amp;userId=1726252&#xD;
  [8]: https://github.com/altan4377/WSS-2019</description>
    <dc:creator>Yun-chi Tang</dc:creator>
    <dc:date>2019-07-10T18:47:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1382879">
    <title>[WSC18] Formulating the Optimal Graphic for Data Using Machine Learning</title>
    <link>https://community.wolfram.com/groups/-/m/t/1382879</link>
    <description>## Introduction &#xD;
It is often said that a picture is worth a thousand words, and its true that a graphic can equal a thousand data points. Graphics can reveal to us trends that we wouldnt have seen otherwise and show us information in a new light. Yet, making the right representation can be a struggle, especially when given data without context. &#xD;
&#xD;
## Purpose&#xD;
The goal of this project was to create a function that finds the best possible graphical representation for numerical data. The function analyzes whether the data should be either a bar chart, a line plot, a scatter plot, a pie chart, points on a map, a histogram, a bubble plot, or a waterfall chart. &#xD;
&#xD;
![The eight types of graphics used in this project][1]&#xD;
&#xD;
## Process&#xD;
&#xD;
The first step was gathering sample data for each type of graphic. To accomplish this step, the most commonly used and easy to identify types of charts were determined. As mentioned before, these types of graphics were determined to be bar charts, waterfall charts, pie charts, scatter plots, line plots, bubble charts, histograms, and geo charts.  &#xD;
&#xD;
Bar charts are used for comparative purposes, and can encompass multiple variables. The input for this type of graphic can vary greatly, but must be contained either in a single list or in a series of nested lists. &#xD;
&#xD;
![enter image description here][2]   ![enter image description here][3]&#xD;
&#xD;
&#xD;
Line plots are also used for comparative purposes, but are either used as a comparison across time or to show a relationship between two variables. The data for line plots often comes in pairs. Since line plots sometimes deal with dates and times, the data was split into two variables, LinePlotExamples and TimeLinePlotExamples. &#xD;
&#xD;
![enter image description here][4]  ![enter image description here][5]&#xD;
&#xD;
&#xD;
Pie charts are often used when dealing with percents or parts of a whole. Therefore, the sum of the data used in pie charts usually either sums to 1 or 100. &#xD;
&#xD;
![enter image description here][6]  ![enter image description here][7]&#xD;
&#xD;
&#xD;
Waterfall charts are often used by businesses to show change in respect to a previous event. The first bar represents the initial value. Each bar from that point shows either a rise  or a drop in value. The last bar represents the final value after the series of rises and drops. Due to the nature of the chart, the data for waterfall charts often includes alternation between positive and negative numbers. &#xD;
&#xD;
![enter image description here][8]  ![enter image description here][9]&#xD;
&#xD;
&#xD;
Scatter plots are often used to show correlation between two variables. Unlike line plots, scatter plots can still be created when the data is out of order. &#xD;
&#xD;
![enter image description here][10]  ![enter image description here][11]&#xD;
&#xD;
&#xD;
Bubble charts are similar to scatter plots except that they show correlation across three variables. One variable is represented by position on the x-axis, another by position on the y-axis, and the last by the radius of the bubble. The data for bubble charts always comes in triplets. &#xD;
&#xD;
![enter image description here][12]  ![enter image description here][13]&#xD;
&#xD;
&#xD;
Histograms are used to show distribution and often have a bell shape to them. &#xD;
&#xD;
![enter image description here][14] ![enter image description here][15]&#xD;
&#xD;
&#xD;
Finally, geo charts are used for the purpose of pointing out different parts of the world. As a result, the data for geo charts resembles longitude and latitude coordinates. &#xD;
&#xD;
![enter image description here][16] ![enter image description here][17]&#xD;
&#xD;
&#xD;
After all the training data had been determined, the function DataClassify[] was created by using the built-in function Classify[]. &#xD;
&#xD;
    DataClassify = Classify[Flatten[{barChartexamples, waterfallExamples, pieChartExamples, LinePlotExamples, TimeLinePlotExamples, BubbleChartExamples, HistogramExamples, ScatterPlotExamples, GeoExamples }]]&#xD;
    &#xD;
&#xD;
The function DataClassify[] identifies which type of chart would be most appropriate. &#xD;
&#xD;
Next, the function Visualize[] was created. This function graphs the data in the format specified by DataClassify[]. &#xD;
&#xD;
    Visualize[x_List] := ToExpression[DataClassify[ToString[x]]][x]&#xD;
&#xD;
&#xD;
Finally, a microsite was created to display the function. &#xD;
&#xD;
    URLShorten[CloudDeploy[FormPage[&amp;#034;data&amp;#034; -&amp;gt; &amp;lt;| &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;Expression&amp;#034;, &amp;#034;Label&amp;#034; :&amp;gt; &amp;#034;Enter the data as a list&amp;#034; |&amp;gt;, CloudEvaluate[Visualize[#data]] &amp;amp;]]]&#xD;
&#xD;
The microsite can be found at [https://wolfr.am/w5hrqZM8][18].&#xD;
&#xD;
## Code &#xD;
All the code is included below. &#xD;
&#xD;
    DataClassify = Classify[Flatten[{barChartexamples, waterfallExamples, pieChartExamples, LinePlotExamples, TimeLinePlotExamples, BubbleChartExamples, HistogramExamples, ScatterPlotExamples, GeoExamples }]]&#xD;
&#xD;
    Visualize[x_List] := ToExpression[DataClassify[ToString[x]]][x]&#xD;
&#xD;
    URLShorten[CloudDeploy[FormPage[&amp;#034;data&amp;#034; -&amp;gt; &amp;lt;| &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;Expression&amp;#034;, &amp;#034;Label&amp;#034; :&amp;gt; &amp;#034;Enter the data as a list&amp;#034; |&amp;gt;, CloudEvaluate[Visualize[#data]] &amp;amp;]]]&#xD;
&#xD;
##Examples &#xD;
Some examples of the function Visualize[] at work are below. &#xD;
&#xD;
    Visualize /@ {&#xD;
      {{8.5, 6.7, 8.8, 7}, {9, 7.2, 6.4, 7.3}, {9.5, 8, 7.4, 7.8}, {9.5, 7.5, 6, 8.4}},&#xD;
      {{1, 4}, {5, 6}, {9, 16}, {16, 19}, {17, 30}},&#xD;
      {1100, 250, 50, -250, 275, 250, -250, -25, 50},&#xD;
      {{&amp;#034;1970&amp;#034;, 20}, {&amp;#034;1975&amp;#034;, 50}, {&amp;#034;1980&amp;#034;, 90}, {&amp;#034;1985&amp;#034;, 110}, {&amp;#034;1990&amp;#034;, 280}}, &#xD;
      {.61, .12, .15, .11, .2, .3, .2, .5}, {{40, 6, 541}, {35, 11, 390}, {15, 4, 825}, {7, 6, 503}, {12, 16, 403}, {45, 5, 375}, {5, 8, 657}, {35, 17, 787}, {30, 4, 44}, {25, 15, 354}},&#xD;
      RandomVariate[WeibullDistribution[3, 1], 1000], &#xD;
      {{-40.30294, 167.57691}, {-27.99694, 152.31741}, {-12.00480, 60.45049}, {-24.75070, 169.87108}, {19.59415, 75.12872}}, &#xD;
      {{1, 5}, {5, 8}, {2, 9}, {9, 2}, {11, 19}, {5, 16}, {4, 3}, {6, 17}, {1, 1.5}, {3, 2.9}, {2, 1.7}, {5, 5.3}, {11, 10.69}, {4, 3.94}, {9, 8.80}, {6, 5.7}, {8, 7.6}, {9.9, 8.8}}&#xD;
      }&#xD;
&#xD;
{![enter image description here][19], ![enter image description here][20], ![enter image description here][21], ![enter image description here][22], ![enter image description here][23], ![enter image description here][24], ![enter image description here][25], ![enter image description here][26], ![enter image description here][27]} &#xD;
&#xD;
##Improvements&#xD;
While the project did accomplish all of its goals, improvements can still be made. One way to improve this project is to continue to feed it more training data. The data for this project was gathered by finding as many of that type of chart as possible and decoding the chart into the data. As can be imagined, this approach is limited, and the training data is limited. A better approach would be to funnel multitudes of sorted data into the training sets. &#xD;
&#xD;
This project could further be improved by distinguishing variations in each type of graphic. For example, when dealing with a bar chart of multiple categories, either a stacked bar chart or a grouped one can be used. The two charts below both show the same data in different formats.  &#xD;
&#xD;
    Table[BarChart[RandomReal[1, {3, 3}], ChartLayout -&amp;gt; l], {l, {&amp;#034;Stacked&amp;#034;, &amp;#034;Grouped&amp;#034;}}]&#xD;
&#xD;
![enter image description here][28], ![enter image description here][29]&#xD;
&#xD;
Similarly, with scatter plots, the decision of whether or not to include a line of best fit could be considered. In the two examples below, a line of best fit would be more appropriate for the chart on the right as opposed to the one on the left. &#xD;
&#xD;
![enter image description here][30]  ![enter image description here][31]&#xD;
&#xD;
The initial planning for this project did include more detailed options, which can be seen in the flowchart below. Expanding on the initial flowchart could improve this project. &#xD;
&#xD;
![enter image description here][32]&#xD;
&#xD;
Further improvements for this project would be including more types of graphics. Additional graphics that could be included are Gantt charts, gauge charts, Pareto Charts, area graphs, line histograms, polar area charts, Spie charts, and circular area charts. &#xD;
&#xD;
For more information on these types of charts, the links in section labelled &amp;#034;Background Info Links/References&amp;#034; can be studied. The following pages of early planning notes may also be helpful. &#xD;
&#xD;
![enter image description here][33]&#xD;
![enter image description here][34]&#xD;
![enter image description here][35]&#xD;
![enter image description here][36]&#xD;
&#xD;
&#xD;
##Background Info Links/References &#xD;
[https://www.mymarketresearchmethods.com/types-of-charts-choose/][37] &#xD;
&#xD;
[https://eazybi.com/blog/data_visualization_and_chart_types/][38]&#xD;
&#xD;
[http://blog.visme.co/types-of-graphs/][39]&#xD;
&#xD;
Special thanks to Dariia Porechna and Katie Orenstein for their help. &#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=collage.jpg&amp;amp;userId=1371956&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=bargraph1.jpg&amp;amp;userId=1371956&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=bargraph2.jpg&amp;amp;userId=1371956&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=linegraph1.jpg&amp;amp;userId=1371956&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=linegraph2.jpg&amp;amp;userId=1371956&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=piechart1.jpg&amp;amp;userId=1371956&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=piechart2.jpg&amp;amp;userId=1371956&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=waterfallgraph1.jpg&amp;amp;userId=1371956&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=waterfallgraph2.jpg&amp;amp;userId=1371956&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=scatterplot1.jpg&amp;amp;userId=1371956&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=scatterplot2.jpg&amp;amp;userId=1371956&#xD;
  [12]: http://community.wolfram.com//c/portal/getImageAttachment?filename=bubblechart1.jpg&amp;amp;userId=1371956&#xD;
  [13]: http://community.wolfram.com//c/portal/getImageAttachment?filename=bubblechart2.jpg&amp;amp;userId=1371956&#xD;
  [14]: http://community.wolfram.com//c/portal/getImageAttachment?filename=histogram1.jpg&amp;amp;userId=1371956&#xD;
  [15]: http://community.wolfram.com//c/portal/getImageAttachment?filename=histogram2.jpg&amp;amp;userId=1371956&#xD;
  [16]: http://community.wolfram.com//c/portal/getImageAttachment?filename=geochart1.jpg&amp;amp;userId=1371956&#xD;
  [17]: http://community.wolfram.com//c/portal/getImageAttachment?filename=geochart2.jpg&amp;amp;userId=1371956&#xD;
  [18]: https://wolfr.am/w5hrqZM8&#xD;
  [19]: http://community.wolfram.com//c/portal/getImageAttachment?filename=bargraph1.jpg&amp;amp;userId=1371956&#xD;
  [20]: http://community.wolfram.com//c/portal/getImageAttachment?filename=linegraph1.jpg&amp;amp;userId=1371956&#xD;
  [21]: http://community.wolfram.com//c/portal/getImageAttachment?filename=waterfallgraph1.jpg&amp;amp;userId=1371956&#xD;
  [22]: http://community.wolfram.com//c/portal/getImageAttachment?filename=linegraph2.jpg&amp;amp;userId=1371956&#xD;
  [23]: http://community.wolfram.com//c/portal/getImageAttachment?filename=piechart1.jpg&amp;amp;userId=1371956&#xD;
  [24]: http://community.wolfram.com//c/portal/getImageAttachment?filename=bubblechart1.jpg&amp;amp;userId=1371956&#xD;
  [25]: http://community.wolfram.com//c/portal/getImageAttachment?filename=histogram1.jpg&amp;amp;userId=1371956&#xD;
  [26]: http://community.wolfram.com//c/portal/getImageAttachment?filename=geochart1.jpg&amp;amp;userId=1371956&#xD;
  [27]: http://community.wolfram.com//c/portal/getImageAttachment?filename=scatterplot1.jpg&amp;amp;userId=1371956&#xD;
  [28]: http://community.wolfram.com//c/portal/getImageAttachment?filename=stackedbar.jpg&amp;amp;userId=1371956&#xD;
  [29]: http://community.wolfram.com//c/portal/getImageAttachment?filename=groupedbar.jpg&amp;amp;userId=1371956&#xD;
  [30]: http://community.wolfram.com//c/portal/getImageAttachment?filename=scatterplot1.jpg&amp;amp;userId=1371956&#xD;
  [31]: http://community.wolfram.com//c/portal/getImageAttachment?filename=scatterplot2.jpg&amp;amp;userId=1371956&#xD;
  [32]: http://community.wolfram.com//c/portal/getImageAttachment?filename=functionplanning-1.png&amp;amp;userId=1371956&#xD;
  [33]: http://community.wolfram.com//c/portal/getImageAttachment?filename=page1.jpg&amp;amp;userId=1371956&#xD;
  [34]: http://community.wolfram.com//c/portal/getImageAttachment?filename=page2.jpg&amp;amp;userId=1371956&#xD;
  [35]: http://community.wolfram.com//c/portal/getImageAttachment?filename=page3.jpg&amp;amp;userId=1371956&#xD;
  [36]: http://community.wolfram.com//c/portal/getImageAttachment?filename=page4.jpg&amp;amp;userId=1371956&#xD;
  [37]: https://www.mymarketresearchmethods.com/types-of-charts-choose/&#xD;
  [38]: https://eazybi.com/blog/data_visualization_and_chart_types/&#xD;
  [39]: http://blog.visme.co/types-of-graphs/</description>
    <dc:creator>Aparna Kumar</dc:creator>
    <dc:date>2018-07-13T19:34:29Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2251422">
    <title>How can we create a 3D fractal flower in Mathematica?</title>
    <link>https://community.wolfram.com/groups/-/m/t/2251422</link>
    <description>In a 2D space, we can use simple affine equations to create fractal shapes that resemble [Barnsley&amp;#039;s Fern][1]. Now, there is something interesting about these shapes that is discussed in [a MathOverflow post][2]. It says:&#xD;
&#xD;
&amp;gt; If you allow for a larger class of functions (stochastic, 3-dimentional real maps, and introduce a log-density plot and color each point according to orbit history, the possibilities are endless (image created by Silvia Cordedda):&amp;lt;br/&amp;gt;![Fractal Flower][3]&#xD;
&#xD;
Now the problem is, recreating such images needs much more details that I am not aware of. Obviously, one cannot simply extend the generating equations of Barnsley&amp;#039;s Fern to 3D and hope that something magical like this pops out. So I need some guidance from the experts on this site about this. Have you ever done something like this in Mathematica?&#xD;
&#xD;
(I have also asked this question on [Mathematica SE][4] which didn&amp;#039;t attract any answers. So I decided to give it another try in here. Thanks in advance).&#xD;
&#xD;
&#xD;
  [1]: https://en.wikipedia.org/wiki/Barnsley_fern&#xD;
  [2]: https://mathoverflow.net/a/178471/93602&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=c.jpg&amp;amp;userId=2022885&#xD;
  [4]: https://mathematica.stackexchange.com/q/244957/37848</description>
    <dc:creator>polfosol baltazar</dc:creator>
    <dc:date>2021-04-23T11:42:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2096163">
    <title>Deriving the Schwarzschild Metric</title>
    <link>https://community.wolfram.com/groups/-/m/t/2096163</link>
    <description>I wanted to see if covariant and contravariant coordinates could be represented in Mathematica and settled on using underscripts and overscripts, since superscripts are exponents.  I&amp;#039;m posting the notebook as images and also attaching it.  You may have to magnify the page in your browser to be able to read the code in the images.&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=3375schwarzschild1.jpg&amp;amp;userId=29126&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=schwarzschild2.jpg&amp;amp;userId=29126&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=schwarzschild3.jpg&amp;amp;userId=29126</description>
    <dc:creator>Frank Kampas</dc:creator>
    <dc:date>2020-10-16T20:18:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1819304">
    <title>Counting one billion digits of a number and new compiled type?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1819304</link>
    <description># Introduction:&#xD;
&#xD;
(**My questions are at the end of the post**).&#xD;
&#xD;
To work with lists of 1 billion significant digits of a number, one option is to use [NumericArray\[\]][1], specifically with the option *UnsignedInteger8*, so that each digit will occupy only **1 Byte** instead of 8 Bytes, ie the consumption memory will be reduced by a factor of 8.&#xD;
&#xD;
Below is exemplified the use of NumericArray[] (new and experimental - v.12), both digits are generated with RealDigits[] and the number of Bytes are counted:&#xD;
&#xD;
    ByteCount@RealDigits[Pi, 10, 1000][[1]]&#xD;
&#xD;
![im1][2]&#xD;
&#xD;
    ByteCount@&#xD;
     NumericArray[RealDigits[Pi, 10, 1000][[1]], &amp;#034;UnsignedInteger8&amp;#034;]&#xD;
&#xD;
![im2][3]&#xD;
&#xD;
# Examples with one billion digits:&#xD;
&#xD;
Below are some examples with mathematical constants with one billion digits, in the case of Pi the time required to evaluate on my machine was about 35 minutes, but for other constants the time was varied, for: E, GoldenRatio, Sqrt2 the time was shorter, in descending order, while for EulerGamma I aborted the operation after about 5 hours. Note that the size of the operation is 10^9 Bytes, or 1 Gigabyte, but if not done this way, with NumericArray, would probably crash the system (+8Gb), at least on my machine.&#xD;
&#xD;
- Pi:&#xD;
&#xD;
        EvaluationData[n = 1000000000;&#xD;
         {num = NumericArray[RealDigits[Pi, 10, n][[1]], &amp;#034;UnsignedInteger8&amp;#034;], &#xD;
          ByteCount@num}]&#xD;
&#xD;
![im3][4]&#xD;
&#xD;
Counting the digits for each type, not in appearance order but in numerical order, I used Table[] and Lookup[] in Counts[]:&#xD;
&#xD;
    counts = Table[{i, Lookup[Counts@(num // Normal), i]}, {i, 0, 9}]&#xD;
&#xD;
![im4][5]&#xD;
&#xD;
Testing the result with Part[]:&#xD;
&#xD;
    num[[;; 10]] // Normal&#xD;
&#xD;
![im5][6]&#xD;
&#xD;
    num[[857897882 ;; 857897899]] // Normal&#xD;
&#xD;
![im6][7]&#xD;
&#xD;
    num[[1000000000]]&#xD;
&#xD;
![im7][8]&#xD;
&#xD;
Note that above the significant billionth digit (taking into account the &amp;#034;3&amp;#034; on the left) of Pi is &amp;#034;1&amp;#034; and is different from the billionth digit of Pi, which is &amp;#034;9&amp;#034;. All values can be checked by downloading some constants with billion digits from this [site][9], and can be by torrent (about 10 Gigabytes). Below are the result of some more numbers with one billion digits:&#xD;
&#xD;
- E:&#xD;
&#xD;
![im8][10]&#xD;
&#xD;
- GoldenRatio:&#xD;
&#xD;
![im9][11]&#xD;
&#xD;
- Sqrt2:&#xD;
&#xD;
![im10][12]&#xD;
&#xD;
# List and graph of results:&#xD;
&#xD;
- List:&#xD;
&#xD;
        cPi = {{0, 99993942}, {1, 99997334}, {2, 100002410}, {3, &#xD;
            99986912}, {4, 100011958}, {5, 99998885}, {6, 100010387}, {7, &#xD;
            99996061}, {8, 100001839}, {9, 100000272}};&#xD;
        &#xD;
        cE = {{0, 100004425}, {1, 99982925}, {2, 99999169}, {3, &#xD;
            100002498}, {4, 100018922}, {5, 100003884}, {6, 99987241}, {7, &#xD;
            99997536}, {8, 100005348}, {9, 99998052}};&#xD;
        &#xD;
        cGolden = {{0, 100007840}, {1, 99999865}, {2, 100002106}, {3, &#xD;
            99979351}, {4, 99995481}, {5, 99999934}, {6, 100004208}, {7, &#xD;
            100018237}, {8, 99995223}, {9, 99997755}};&#xD;
        &#xD;
        cSqrt2 = {{0, 100010228}, {1, 99998382}, {2, 99995644}, {3, &#xD;
            99995415}, {4, 100012725}, {5, 100002636}, {6, 100012683}, {7, &#xD;
            99980315}, {8, 99995120}, {9, 99996852}};&#xD;
&#xD;
- Graph (%/100):&#xD;
&#xD;
        c1 = Table[N[cPi[[i, 2]]/10^9], {i, 1, 10}]; c2 = &#xD;
         Table[N[cE[[i, 2]]/10^9], {i, 1, 10}]; c3 = &#xD;
         Table[N[cGolden[[i, 2]]/10^9], {i, 1, 10}]; c4 = &#xD;
         Table[N[cSqrt2[[i, 2]]/10^9], {i, 1, 10}];&#xD;
        ListLinePlot[{c1, c2, c3, c4}, &#xD;
         PlotLegends -&amp;gt; {&amp;#034;Pi&amp;#034;, &amp;#034;E&amp;#034;, &amp;#034;Golden&amp;#034;, &amp;#034;Sqrt2&amp;#034;}, ImageSize -&amp;gt; Large]&#xD;
        Do[Print[Map[&#xD;
            PieChart[#, SectorOrigin -&amp;gt; {Automatic, 1}, &#xD;
              LabelingFunction -&amp;gt; &amp;#034;RadialOutside&amp;#034;, &#xD;
              ChartLegends -&amp;gt; {&amp;#034;0&amp;#034;, &amp;#034;1&amp;#034;, &amp;#034;2&amp;#034;, &amp;#034;3&amp;#034;, &amp;#034;4&amp;#034;, &amp;#034;5&amp;#034;, &amp;#034;6&amp;#034;, &amp;#034;7&amp;#034;, &amp;#034;8&amp;#034;, &#xD;
                &amp;#034;9&amp;#034;}, ChartStyle -&amp;gt; &amp;#034;Pastel&amp;#034;, &#xD;
              PlotLabel -&amp;gt; s /. {1 -&amp;gt; Text[Style[&amp;#034;Pi&amp;#034;, Large, Bold]], &#xD;
                2 -&amp;gt; Text[Style[&amp;#034;E&amp;#034;, Large, Bold]], &#xD;
                3 -&amp;gt; Text[Style[&amp;#034;GoldenRatio&amp;#034;, Large, Bold]], &#xD;
                4 -&amp;gt; Text[Style[&amp;#034;Sqrt2&amp;#034;, Large, Bold]]}] &amp;amp;, {c1, c2, c3, &#xD;
             c4}][[s]]], {s, 1, 4}]&#xD;
&#xD;
![im11][13]&#xD;
&#xD;
![im12][14]&#xD;
&#xD;
# Questions for the community:&#xD;
&#xD;
- **Question 1**):&#xD;
&#xD;
Does Mathematica already use the fastest method to calculate EulerGamma digits (I aborted after more than 5 hours)?&#xD;
&#xD;
- **Question 2**):&#xD;
&#xD;
Compiling NumericArray[] ([compiled type][15]) is set to new in V.12. **Below is my attempt**, did I do it right? How do I get the most out of this feature (my attempt got the same time and byte performance as NumericArray in the normal way)? How does it work?&#xD;
&#xD;
    cf = FunctionCompile[&#xD;
      Function[Typed[arg, &#xD;
        TypeSpecifier[&amp;#034;NumericArray&amp;#034;][&amp;#034;UnsignedInteger8&amp;#034;, 1]], arg]]&#xD;
&#xD;
![im13][16]&#xD;
&#xD;
    EvaluationData[n = 1000000000;&#xD;
     {z = cf[NumericArray[RealDigits[Pi, 10, n][[1]], &#xD;
         &amp;#034;UnsignedInteger8&amp;#034;]], ByteCount@z}]&#xD;
&#xD;
![im14][17]&#xD;
&#xD;
Does anyone in the community know to answer any of the above questions to help me?&#xD;
&#xD;
Thanks.&#xD;
&#xD;
&#xD;
&#xD;
  [1]: https://reference.wolfram.com/language/ref/NumericArray.html&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=i0a.png&amp;amp;userId=1316061&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=i0b.png&amp;amp;userId=1316061&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=10998i1.png&amp;amp;userId=1316061&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=5541i2.png&amp;amp;userId=1316061&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=2040i3.png&amp;amp;userId=1316061&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=7463i4.png&amp;amp;userId=1316061&#xD;
  [8]: https://community.wolfram.com//c/portal/getImageAttachment?filename=4903i5.png&amp;amp;userId=1316061&#xD;
  [9]: https://archive.org/details/Math_Constants&#xD;
  [10]: https://community.wolfram.com//c/portal/getImageAttachment?filename=2464i6.png&amp;amp;userId=1316061&#xD;
  [11]: https://community.wolfram.com//c/portal/getImageAttachment?filename=6612i7.png&amp;amp;userId=1316061&#xD;
  [12]: https://community.wolfram.com//c/portal/getImageAttachment?filename=7960i8.png&amp;amp;userId=1316061&#xD;
  [13]: https://community.wolfram.com//c/portal/getImageAttachment?filename=i8aa.png&amp;amp;userId=1316061&#xD;
  [14]: https://community.wolfram.com//c/portal/getImageAttachment?filename=i8a.png&amp;amp;userId=1316061&#xD;
  [15]: https://reference.wolfram.com/language/ref/compiledtype/NumericArray.html&#xD;
  [16]: https://community.wolfram.com//c/portal/getImageAttachment?filename=4787i9.png&amp;amp;userId=1316061&#xD;
  [17]: https://community.wolfram.com//c/portal/getImageAttachment?filename=4196i10.png&amp;amp;userId=1316061</description>
    <dc:creator>Claudio Chaib</dc:creator>
    <dc:date>2019-11-04T18:41:44Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1382967">
    <title>[WSC18] Sorting Networks</title>
    <link>https://community.wolfram.com/groups/-/m/t/1382967</link>
    <description>I was assigned by Stephen Wolfram to create a sorting a network that could sort a specific list. To do this, I started by analyzing the optimal sorting network for a list of 16 items, which is in fact, the largest solution that humanity has found so far.&#xD;
&#xD;
![This is 16][1]&#xD;
&#xD;
in the image above, there are two boxes, I noticed the pattern in the smallest of the two first, which in every optimal sort I checked, was used off the bat to group up sets of 4.&#xD;
&#xD;
![this is 7][2]&#xD;
&#xD;
Next, by analyzing 14,15 and 16, 14, and 15 shown below. &#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
I derived a pattern for what was happening in the larger boxes, namely, there are beams of length 2^n or of the form {1+c,2^n+c} where c mod(2^(n+1)) &amp;lt;2^n. After this, I was prompted to create an algorithm that could automatically create a list of list of pairs that specified these connections. Essentially, I was looking for something of the form {{1,2},{3,4},{5,6},{7,8},{1,3},{2,4},{5,7},{6,8},{1,5},{2,6},{3,7},{4,8}}. The code to do this was complicated, though through perseverance I successfully did it. The code is shown below:&#xD;
&#xD;
    function1[distanceBetweenEle_, list_, finalList_] :=&#xD;
     (Module[{arc, apair, apairamid, pairs},&#xD;
       Partition[list, distanceBetweenEle, distanceBetweenEle];&#xD;
       apair = &#xD;
        Part[Partition[list, distanceBetweenEle, distanceBetweenEle], &#xD;
         Span[1, -1, 2]];&#xD;
       Map[{#, # + distanceBetweenEle} &amp;amp;, Flatten[apair]];&#xD;
       apairamid = Map[&#xD;
         Function[&#xD;
          {itemInList},&#xD;
          {itemInList, itemInList + distanceBetweenEle}&#xD;
          ],&#xD;
         Flatten[apair]&#xD;
         ];&#xD;
       pairs = Select[&#xD;
         apairamid,&#xD;
         Function[&#xD;
          {item},&#xD;
          Not[Part[item, 2] &amp;gt; Length@list]&#xD;
          ]&#xD;
         ];&#xD;
       arc = Join[finalList, pairs];&#xD;
       If [(Length[list] + 1 &amp;gt; distanceBetweenEle*2), &#xD;
        function1[distanceBetweenEle*2, list, arc], Return[arc];&#xD;
        ]]) &#xD;
&#xD;
This was a great start. Though we now had to figure out what to do for the second half of the list. So let us take a look at the ends of the optimal algorithm for 14th 15 and 16 elements.&#xD;
![This is the ends of 14-16][4]&#xD;
&#xD;
The first thing that most people should notice is that the connections follow no clear pattern. Despite this, there is one portion we will be able to exploit. If you look at the images above, you will notice that all new connections originated from the new segments. We can exploit this and proceed to only check connections from the old segment. The code for how I did this is below.&#xD;
&#xD;
    ClearAll[thingsToCheck]&#xD;
    thingsToCheck[L_, list_List, nope_] :=&#xD;
    Insert[list, {L, nope}, {#}] &amp;amp; /@ &#xD;
    Prepend[(First /@ Position[list, L | 1] + 1), 1]&#xD;
    ClearAll[mainFunction]&#xD;
    mainFunction[L_, list_List] := &#xD;
    Select[Flatten[thingsToCheck[#, list, L] &amp;amp; /@ Range[1, L - 1], 1] // &#xD;
    DeleteDuplicates, Length[#] === Length[Split[#]] &amp;amp;]&#xD;
&#xD;
Finally, I needed to implement a checker to check if the list could be sorted. No exploits were used for this segment, though in the future, presorting the first half could simplify the checker and would allow for greater number of checked permutations. The code is shown below.&#xD;
&#xD;
    ClearAll[swap]&#xD;
    swap[list_, {n_, m_}] :=&#xD;
     If[list[[n]] &amp;gt; list[[m]],&#xD;
      ReplacePart[&#xD;
       list,&#xD;
       {n -&amp;gt; Part[list, m],&#xD;
        m -&amp;gt; Part[list, n]}&#xD;
       ],&#xD;
      list&#xD;
      ]&#xD;
    &#xD;
    ClearAll[allSwapInstructions]&#xD;
    allSwapInstructions[swapInstruc_, id_] :=&#xD;
     Fold[swap, id, swapInstruc]&#xD;
    &#xD;
    ClearAll[checker]&#xD;
    checker[swapInstruc_, L_, id_] :=&#xD;
     Range[L] === allSwapInstructions[swapInstruc, id]&#xD;
&#xD;
Finally, we devised a final code snippet that connected all previous codes segments together:&#xD;
&#xD;
    ClearAll[theOnesThatWork]&#xD;
    theOnesThatWork[list_List, len_, id_, firstHalf_] :=&#xD;
     SelectFirst[Join[firstHalf, #] &amp;amp; /@ list,&#xD;
      checker[#, len, id] &amp;amp;]&#xD;
&#xD;
And we were done. Some testing is shown below:&#xD;
&#xD;
id = {5, 2, 4, 1, 3};&#xD;
step1 = mainFunction[5, {{2, 3}}]&#xD;
theOnesThatWork[step1, 5, id, function1[1, Range@5, {}]]&#xD;
step2 = Flatten[mainFunction[5, #] &amp;amp; /@ step1, 1];&#xD;
theOnesThatWork[step2, 5, Reverse[Range[5]], &#xD;
function1[1, Range@5, {}]]&#xD;
&#xD;
Special thanks to http://demonstrations.wolfram.com/SortingNetworks/&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ihasuhthzzzz.png&amp;amp;userId=1372143&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=7.png&amp;amp;userId=1372143&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=14and15.png&amp;amp;userId=1372143&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Endsof456.png&amp;amp;userId=1372143</description>
    <dc:creator>Sasha Kucher</dc:creator>
    <dc:date>2018-07-13T19:59:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1382823">
    <title>[WSC18] Using Multilevel NAND trees to Create XOR Expressions</title>
    <link>https://community.wolfram.com/groups/-/m/t/1382823</link>
    <description>The goal of this project has been to explore NAND expressions and look for expressions equivalent to XOR. The Wolfram Language can already simplify XOR expressions with NANDs by using the following function but it only simplifies to a two level tree. By using more than two levels there is a possibility of finding a simpler version of three or four input XOR expressions. The reason that I chose to use NAND gates is that they are universal gates (any expression can be represented with a combination of NAND gates). Other universal gates like NOR would work but it seemed simplest to just stick with NAND to keep things consistent.&#xD;
&#xD;
    `BooleanMinimize[Xor[a, b, c], &amp;#034;NAND&amp;#034;] // TreeForm`&#xD;
![NAND simplification for XOR[a,b,c] in Tree Form][1]&#xD;
&#xD;
## Two Input Trees ##&#xD;
The first thing I implemented was a recursive function that creates all of the different NAND trees possible with a given amount of NAND gates. It works by assuming that each NAND gate only has two inputs. From this it runs through the possibilities for the NAND gate configurations on each input.&#xD;
&#xD;
![Nand Tree Logic][2]&#xD;
&#xD;
The code starts by defining the first case of the recursive function and then on the next gates it runs through the different combinations with tuples to generate all of the outcomes. It also creates NAND trees with half of the amount of NAND implemented and it doesn&amp;#039;t know what to do with an odd amount of gates so &amp;#034;nandTreeCreate&amp;#034; was implemented to fix that by multiplying the input by two. Additionally it uses a new NAND function that get&amp;#039;s rid of trivial cases that aren&amp;#039;t worth computing (Ex. Xor[a, !a]).&#xD;
&#xD;
    nand[a_, a_] := Null;&#xD;
    nand[a_, ! a_] := Null;&#xD;
    nand[! a_, a_] := Null;&#xD;
    nand[a_, b_] /; OrderedQ[{a, b}] := Sow@Nand[a, b];&#xD;
    nand[a_, b_] := Null;&#xD;
&#xD;
    nandTreeGenerate[0] := {a, b, c, ! a, ! b, ! c}&#xD;
        &#xD;
    nandTuples[list1_, list2_] := &#xD;
     Replace[Reap[&#xD;
       Do[nand[a, b], {a, list1}, {b, list2}]], {{_, {x_}} :&amp;gt; x, _ :&amp;gt; {}}]&#xD;
    &#xD;
    nandTreeGenerate[&#xD;
       0] := {a,b,c,!a,!b,!c};&#xD;
    &#xD;
    nandTreeGenerate[nGates_] := &#xD;
     nandTreeGenerate[nGates] = &#xD;
      Module[{subtrees = nandTreeGenerate /@ Range[0, nGates - 1]},&#xD;
       Join @@ &#xD;
        Table[nandTuples[subtrees[[i]], subtrees[[nGates - i]]], {i, 1, &#xD;
          nGates - 1}]&#xD;
       ]&#xD;
    &#xD;
    nandTreeCreate[nGates_] := nandTreeGenerate[nGates*2]&#xD;
&#xD;
This turned out to be an effective set of functions but it wasn&amp;#039;t very useful since it only generates two input NAND trees and no simpler forms of XOR were found by running tests with this function. The following function was used to compare it to XOR.&#xD;
&#xD;
    Select[nandTreeCreate[5], &#xD;
     TautologyQ[Equivalent[Xor[a, b, c], #]] &amp;amp;]&#xD;
&#xD;
##Multi-Input Tree Generation ##&#xD;
By inputting the amount of leaves into the recursive function, I was able to expand it in order to account for more than two input NAND gates. This uses the same general structure as the two input NAND generate function except it is based on integer partitions to find all of the different combinations.&#xD;
&#xD;
    nand[arg_] := Nand[arg];&#xD;
    nand[args___] /; Equivalent[args] := Null;&#xD;
    nand[args___] /; OrderedQ[{args}] := Nand[args];&#xD;
    nand[args___] := Null;&#xD;
    &#xD;
    nandTuples[l_] := (nand @@ #) &amp;amp; /@ Tuples[l]&#xD;
    &#xD;
    nandTreeGenerate[1] := {a,b,c]};&#xD;
    &#xD;
    nandTreeGenerate[nLeaves_] := nandTreeGenerate[nLeaves]&#xD;
        DeleteCases[Module[{subtrees =  nandTreeGenerate /@ Range[1, nLeaves - 1]},&#xD;
             Join @@ ((nandTuples[subtrees[[#]] &amp;amp; /@ #] &amp;amp; /@ (IntegerPartitions[nLeaves - 1]))&#xD;
        ], Null]&#xD;
This works super well but it&amp;#039;s still computationally intensive and I figured out later that some of the logic must be wrong since it misses a couple of cases every once and awhile. It&amp;#039;s still good for getting a basic idea of the different cases that come from different leaf counts though.&#xD;
## Random Generation ##&#xD;
It seems that the best way to generate expressions computationally comes from random generation. This is because it can be stopped and started within a time limit even though it doesn&amp;#039;t get every possible expression. In order to implement this I used a function that inserts either a NAND gate or a variable at a random spot within the expression.&#xD;
&#xD;
    varlist = {\[FormalA], \[FormalB], \[FormalC]};&#xD;
    &#xD;
    addSomething[ex_] := Module[{positions},&#xD;
      positions = Position[ex, _myNand, {0, Infinity}];&#xD;
      Insert[ex, &#xD;
       RandomChoice[{.2, .7, .7, .7} -&amp;gt; Join[{myNand[]}, varlist]], &#xD;
       Append[RandomChoice[positions], 1]]&#xD;
      ]&#xD;
    &#xD;
    makeTree[nLeaves_] := (&#xD;
       (Last@NestList[addSomething, myNand[], nLeaves - 1]) /. &#xD;
        myNand[] :&amp;gt; RandomChoice[varlist]) /. myNand -&amp;gt; Nor&#xD;
    &#xD;
    randTreeGenerate[nLeaves_, nTimes_] := &#xD;
     makeTree /@ Table[nLeaves, nTimes]&#xD;
&#xD;
Although this is good for generating most functions, some cases become increasingly unlikely as it adds more terms. This makes it necessary to adjust the weights for NANDs and variables so that all of the cases have an equal chance of occurring. I didn&amp;#039;t have enough time to find the right values so eventually I setup the weights as random integers so that it would have a good distribution for each of the different weight combinations.&#xD;
##Visualizing the Data##&#xD;
At the end I made a couple of functions that could generate expressions for awhile and then put it in a form that&amp;#039;s easy to analyze. There are two equivalents of the functions depending on if you want to input the iterations or the duration that it should run for. It also has the option to input what percentage of those expressions should use NOR gates if any variation is needed.&#xD;
&#xD;
    Clear[&amp;#034;Global`*&amp;#034;]&#xD;
    &#xD;
    counts = Table[0, {i, 0, 255}];&#xD;
    &#xD;
    varlist = {a, b, c};&#xD;
    &#xD;
    addSomething[ex_, nand_: 1, var_: 1] := Module[{positions},&#xD;
      positions = Position[ex, _myNand, {0, Infinity}];&#xD;
      Insert[ex, &#xD;
       RandomChoice[{nand, var/3, var/3, var/3} -&amp;gt; &#xD;
         Join[{myNand[]}, varlist]], Append[RandomChoice[positions], 1]]&#xD;
      ]&#xD;
    &#xD;
    makeTreeNand[nLeaves_] := (&#xD;
       (Last@NestList[&#xD;
           addSomething[#, RandomInteger[{1, 20}], &#xD;
             RandomInteger[{1, 20}]] &amp;amp;, myNand[], nLeaves - 1]) /. &#xD;
        myNand[] :&amp;gt; RandomChoice[varlist]) /. myNand -&amp;gt; Nand&#xD;
    &#xD;
    makeTreeNor[nLeaves_] := (&#xD;
       (Last@NestList[&#xD;
           addSomething[#, RandomInteger[{1, 20}], &#xD;
             RandomInteger[{1, 20}]] &amp;amp;, myNand[], nLeaves - 1]) /. &#xD;
        myNand[] :&amp;gt; RandomChoice[varlist]) /. myNand -&amp;gt; Nor&#xD;
    &#xD;
    visualizeCount[leaves_, iterations_, Nand_] := &#xD;
     Module[{tree, counts = Table[0, {i, 0, 255}], c},&#xD;
      Monitor[Do[&#xD;
        c = 100*N@i/iterations;&#xD;
        tree = makeTreeNand[RandomInteger[{1, leaves}]];&#xD;
        counts[[FromDigits[Boole[BooleanTable[tree]], 2]]]++;&#xD;
        , {i, 1, iterations * (Nand/100)}&#xD;
        ], c];&#xD;
      Monitor[Do[&#xD;
        c = 100*N@i/iterations;&#xD;
        tree = makeTreeNor[RandomInteger[{1, leaves}]];&#xD;
        counts[[FromDigits[Boole[BooleanTable[tree]], 2]]]++;&#xD;
        , {i, 1, iterations * (1 - (Nand/100))}&#xD;
        ], c];&#xD;
      Print[ListLogPlot[Sort[counts[[#]] &amp;amp; /@ Range[0, 254]] + 1]];&#xD;
      Print[ArrayPlot[&#xD;
        IntegerDigits[#, 2, 8] &amp;amp; /@ &#xD;
         Flatten[Position[counts[[#]] &amp;amp; /@ Range[0, 254], 0] - 1], &#xD;
        Mesh -&amp;gt; True, ColorRules -&amp;gt; {0 -&amp;gt; Red, 1 -&amp;gt; Darker@Green}]];&#xD;
      Print[Column[&#xD;
        FullForm /@ (FullSimplify[BooleanFunction[#, varlist]] &amp;amp; /@ &#xD;
           Flatten[Position[counts[[#]] &amp;amp; /@ Range[0, 254], 0] - 1])]];&#xD;
      Print[BarChart[counts[[#]] &amp;amp; /@ Range[0, 254]]]&#xD;
      ]&#xD;
    &#xD;
    visualizeWhile[leaves_, time_, Nand_: 100] := &#xD;
     Module[{tree, c, start = UnixTime[]},&#xD;
      Monitor[&#xD;
       While[UnixTime[] &amp;lt; (start + (time*(Nand/100))),&#xD;
        c = UnixTime[] - start;&#xD;
        Do[tree = makeTreeNand[RandomInteger[{1, leaves}]];&#xD;
         len += 1;&#xD;
         counts[[FromDigits[Boole[BooleanTable[tree]], 2]]]++;, {100}]&#xD;
        ], c];&#xD;
      start = UnixTime[];&#xD;
      Monitor[&#xD;
       While[UnixTime[] &amp;lt; (start + (time*(1 - (Nand/100)))),&#xD;
        c = UnixTime[] - start;&#xD;
        Do[tree = makeTreeNand[RandomInteger[{1, leaves}]];&#xD;
         counts[[FromDigits[Boole[BooleanTable[tree]], 2]]]++;, {100}]&#xD;
        ], c];&#xD;
      Print[ListLogPlot[Sort[counts[[#]] &amp;amp; /@ Range[0, 254]] + 1]];&#xD;
      Print[ArrayPlot[&#xD;
        IntegerDigits[#, 2, 8] &amp;amp; /@ &#xD;
         Flatten[Position[counts[[#]] &amp;amp; /@ Range[0, 254], 0] - 1], &#xD;
        Mesh -&amp;gt; True, MeshStyle -&amp;gt; {Black, Thick}, Background -&amp;gt; Black, &#xD;
        ColorRules -&amp;gt; {0 -&amp;gt; Red, 1 -&amp;gt; Darker@Green}]];&#xD;
      Print[Column[&#xD;
        FullForm /@ (FullSimplify[BooleanFunction[#, varlist]] &amp;amp; /@ &#xD;
           Flatten[Position[counts[[#]] &amp;amp; /@ Range[0, 254], 0] - 1])]];&#xD;
      Print[BarChart[counts[[#]] &amp;amp; /@ Range[0, 254]]]&#xD;
      ]&#xD;
&#xD;
Because there are only three variables being used, the amount of possible truth tables is 256. The function uses a list to keep track of the amount of times each of those truth tables occurred and at the end it creates a logarithmic line plot and a histogram. This particular test ran for 12 hours or so. The logarithmic plot is shifted up one to make it easier to analyze the data.&#xD;
&#xD;
![Random Expression Logarithmic Plot][3]&#xD;
&#xD;
![Random Expression Histogram][4]&#xD;
&#xD;
It also formats the truth tables that weren&amp;#039;t generated into an array plot and lists the equivalent expressions for each of those truth tables.&#xD;
&#xD;
![Expressions not generated][5]&#xD;
&#xD;
    Xor[a,b,c,And[a,b,c]]&#xD;
    Not[Xor[a,b,c,And[a,b],And[a,b,c]]]&#xD;
    Not[Xor[a,b,c,And[a,c],And[a,b,c]]]&#xD;
    Not[Xor[a,b,c,And[b,c],And[a,b,c]]]&#xD;
    Not[Xor[a,b,c]]&#xD;
    Not[Xor[a,b,And[a,c],And[b,c],And[a,b,c]]]&#xD;
    Not[Xor[b,c,And[a,b],And[a,c],And[a,b,c]]]&#xD;
    Xor[a,c,And[a,b],And[b,c],And[a,b,c]]&#xD;
    Xor[a,b,c]&#xD;
    Xor[a,b,c,And[b,c],And[a,b,c]]&#xD;
    Xor[a,b,c,And[a,c],And[a,b,c]]&#xD;
    Not[Xor[a,b,c,And[a,b,c]]]&#xD;
&#xD;
##Conclusion##&#xD;
From random generation I was able to deduce to a reasonable degree of certainty that it is impossible to generate an equivalent NAND expression that&amp;#039;s simpler than the one the Wolfram Language generates for three input XOR gates. There are most likely equivalent expressions out there for four or more input XOR expressions but that proves to be very computationally intensive and time consuming. It is pretty interesting how some expressions require significantly more NAND gates to be expressed because of their structure and the nature of NAND gates. It would be interesting to look into making expressions with NOR and XOR gates in the future and maybe putting more time into generating random expressions.&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Capture2.PNG&amp;amp;userId=1371737&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Tree.png&amp;amp;userId=1371737&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Capture1.PNG&amp;amp;userId=1371737&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Capture3.PNG&amp;amp;userId=1371737&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Capture.PNG&amp;amp;userId=1371737</description>
    <dc:creator>Ben Huenemann</dc:creator>
    <dc:date>2018-07-13T17:54:42Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1140640">
    <title>[WSC17] Using Kleene and Priest Logic Rules to Create Ternary Logic Tables</title>
    <link>https://community.wolfram.com/groups/-/m/t/1140640</link>
    <description>&amp;lt;h1&amp;gt;Introduction&amp;lt;/h1&amp;gt;&amp;lt;br&amp;gt;&#xD;
&#xD;
My name is Taha Shaikh and I attended the 2017 Wolfram Alpha High School Summer Camp. At this camp, I researched and created a project about many-valued logic.&#xD;
&#xD;
In this exploration, I implemented multivalued logic with the Wolfram language. Multivalued logic is a branch of propositional calculus in which there are more than two truth values. Multivalued logic contrasts with traditional two-valued logic in which only two truth values exist: &amp;lt;i&amp;gt;True&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;False&amp;lt;/i&amp;gt;. The most popular types of many-valued logic are three-valued Kleene and Priest logic, which incorporate an additional &amp;lt;i&amp;gt;Indeterminate&amp;lt;/i&amp;gt; value. The truth function for conjunction, for example, is given by:&#xD;
&#xD;
![Ternary Logic Conjunction Table][1]&#xD;
&#xD;
&amp;lt;hr&amp;gt;&#xD;
&#xD;
&amp;lt;h2&amp;gt;Procedure&amp;lt;/h2&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
The first step in this project was understanding the aim of the investigation and doing research on the topics at hand. Next, support for the new truth value &amp;lt;i&amp;gt;Undecided&amp;lt;/i&amp;gt; was added to the basic boolean operations. I used Kleene and Priest logic tables to redefine the boolean operations. &#xD;
&#xD;
![Different Logic Tables][2]&#xD;
&#xD;
    Undecided = Undecided;&#xD;
    Unprotect[And];&#xD;
    And[Undecided, True] := Undecided&#xD;
    And[Undecided, Undecided] := Undecided&#xD;
    Protect[And];&#xD;
    Unprotect[Boole];&#xD;
    Boole[Undecided] := 0&#xD;
    Boole[False] := -1&#xD;
    Protect[Boole];&#xD;
    Unprotect[Or];&#xD;
    Or[Undecided, False] := Undecided&#xD;
    Or[Undecided, Undecided] := Undecided&#xD;
    Protect[Or];&#xD;
    Unprotect[Not];&#xD;
    Not[Undecided] := Undecided&#xD;
    Unprotect[Implies];&#xD;
    Implies[True, Undecided] := Undecided&#xD;
    Implies[Undecided, Undecided] := True&#xD;
    Implies[False, Undecided] := True&#xD;
    Implies[Undecided, True] := True&#xD;
    Implies[Undecided, False] := Undecided&#xD;
    Protect[Implies];&#xD;
    Unprotect[Nand];&#xD;
    Nand[Undecided, Undecided] := Undecided&#xD;
    Protect[Nand];&#xD;
    Unprotect[Nor];&#xD;
    Nor[Undecided, Undecided] := Undecided&#xD;
    Protect[And];&#xD;
&#xD;
&amp;lt;br&amp;gt;&#xD;
These functions ensured that the rest of the functions created worked smoothly. The next step was creating a function that would generate truth tables based on a given operation and the list of the variables used. The TernaryTable function used an input of a logic expression and the list of used variables and converts it into a truth table. Where Boolean logic has $2^2 = 4$ unary operators, the addition of a third value in ternary logic leads to a total of $3^3 = 27$ distinct operators on a single input value. It uses the Tuples function to run through all of the possible permutations of the three truth values and runs them through the given expression.&#xD;
&amp;lt;br&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
&#xD;
    TernaryTable[expr_, vars__] :=&#xD;
     &#xD;
     ReplaceAll[expr, Thread[vars -&amp;gt; #]] &amp;amp; /@ &#xD;
      Tuples[{True, False, Undecided}, {Length[vars]}]&#xD;
&#xD;
&amp;lt;br&amp;gt;&#xD;
An example of TernaryTable in action:&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
This function uses the Tuples function to run through the various combinations and permutations of the three different truth values. The truth table generated has length $3^n$ in which $n$ is the number of variables used in the logic expression. In the case of this example, since four variables are present (x, y, z, w), the length of its truth table is $3^4$ or 81. This is because all possible permutations of the three truth values are considered when generating the truth table. Even though many of the outputs are the same, their individual logic expressions were unique. Creating a function that created truth tables was a good first step and helped me better visualize and understand the topic.&#xD;
&amp;lt;hr&amp;gt;&#xD;
&amp;lt;h2&amp;gt;Cooking Up Some Functions&amp;lt;/h2&amp;gt;&amp;lt;br&amp;gt;&#xD;
&#xD;
The main strategy for determining the identity of the truth table was brute-force-esque. All of the possible arrangements of the basic logic functions were ran through the tuples of the three logic values. Their logic expression was also calculated and correlated to their truth table. First, I made a function called LotsOfTernaryTables that produces a lot of ternary tables. Given the number of variables, it produces every possible truth table for every possible arrangement of the functions And, Or, Nand, Nor, and Not for the given variables. &amp;lt;br&amp;gt;&#xD;
&#xD;
    LotsOfTernaryTables[x_] :=&#xD;
      &#xD;
      MatrixForm[&#xD;
       Groupings[#, {And -&amp;gt; 2, Or -&amp;gt; 2, Nand -&amp;gt; 2, Nor -&amp;gt; 2, Not -&amp;gt; 1}, &#xD;
          HoldForm] &amp;amp; /@ Tuples[{True, False, Undecided}, {x}]]&#xD;
&#xD;
&amp;lt;br&amp;gt;&#xD;
In this function, Groupings was used in coordination with Tuples to produce a huge number of different tables.&#xD;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#xD;
In order to visualize these massive tables, I created a function called TernaryPlot that generates a colorful plot of the different logic truth tables. It converts the outputs from LotsOfTernaryTables into numerical values and creates a colorful array plot. It uses similar mechanics to the previous function.&amp;lt;br&amp;gt;&#xD;
&#xD;
    TernaryPlot[x_] :=&#xD;
     &#xD;
     ArrayPlot[&#xD;
      Boole[Groupings[#, {And -&amp;gt; 2, Or -&amp;gt; 2, Nand -&amp;gt; 2, Nor -&amp;gt; 2, &#xD;
           Not -&amp;gt; 1}]] &amp;amp; /@ Tuples[{True, False, Undecided}, {x}], &#xD;
      ColorRules -&amp;gt; {1 -&amp;gt; Green, 0 -&amp;gt; LightBlue, -1 -&amp;gt; Red}]&#xD;
&amp;lt;br&amp;gt;&#xD;
The array plot created by this function has several visible patterns and sequences and makes very interesting art. A ternary plot with 3 variables, for example, looks like so:&amp;lt;br&amp;gt;&#xD;
![enter image description here][4]&#xD;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#xD;
In this plot, every column represents an individual truth table. In this case, since there are three variables, each column contains $3^3=27$ values. When creating ternary plots with more variables, patterns become crazier and the resulting image has some pretty appealing qualities. The ternary plot for 6 variables looks like so:&amp;lt;br&amp;gt;&#xD;
![enter image description here][5]&#xD;
&#xD;
&amp;lt;br&amp;gt;&#xD;
Finally, the last function I created was called TernaryFunction and was based off of the pre-existing BooleanFunction. When given a ternary truth table, this function would return the logic expression associated with it. After generating a list of truth tables and a list of logic expressions, the two lists were then correlated with each other. After retrieving the correct truth table, its corresponding logic expression was derived and returned. In order to assist with this process, the logarithm base 3 of the length of the truth table was calculated and used to narrow down the number of arguments that had to be processed. The function still works with an unlimited number of arguments as long as $log_3n$ is an integer with $n$ representing the length of the inputted truth table. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#xD;
This is an example of TernaryFunction in action:&amp;lt;br&amp;gt;&#xD;
![enter image description here][6]&#xD;
&amp;lt;br&amp;gt;&#xD;
The logic function is returned with the given variables as defined by the user.&#xD;
&#xD;
&amp;lt;hr&amp;gt;&#xD;
&amp;lt;h2&amp;gt;Differences From Binary Logic&amp;lt;/h2&amp;gt;&amp;lt;br&amp;gt;&#xD;
&amp;lt;p&amp;gt;Multi-valued logics are intended to preserve the property of designationhood, or being designated. Since there are more than two truth values, rules of inference may be intended to preserve more than just whichever corresponds to truth. For example, in a three-valued logic, sometimes the two greatest truth-values (when they are represented as e.g. positive integers) are designated and the rules of inference preserve these values. Precisely, a valid argument will be such that the value of the premises taken jointly will always be less than or equal to the conclusion.&amp;lt;/p&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
&amp;lt;hr&amp;gt;&#xD;
&amp;lt;h2&amp;gt;Applications of Ternary Logic&amp;lt;/h2&amp;gt;&#xD;
&amp;lt;br&amp;gt;&#xD;
&amp;lt;p&amp;gt;An application of many valued logic is geared towards the design of electronic circuits which employ more than two discrete levels of signals, such as many-valued memories, arithmetic circuits, and field programmable gate arrays. Many-valued circuits have a number of theoretical advantages over standard binary circuits. For example, the interconnect on and off chip can be reduced if signals in the circuit assume four or more levels rather than only two. In memory design, storing two instead of one bit of information per memory cell doubles the density of the memory in the same die size. Applications using arithmetic circuits often benefit from using alternatives to binary number systems. For example, residue and redundant number systems can reduce or eliminate the ripple-through carries which are involved in normal binary addition or subtraction, resulting in high-speed arithmetic operations.&amp;lt;/p&amp;gt;&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=tablemyb.png&amp;amp;userId=1138154&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=allthetables.png&amp;amp;userId=1138154&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=terntable.png&amp;amp;userId=1138154&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=plotarry.png&amp;amp;userId=1138154&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ternarylogic6-1.png&amp;amp;userId=1138154&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ternfunc.png&amp;amp;userId=1138154</description>
    <dc:creator>Taha Shaikh</dc:creator>
    <dc:date>2017-07-07T11:10:37Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/935721">
    <title>Getting started in electronic publishing. Best way to distribute notebooks?</title>
    <link>https://community.wolfram.com/groups/-/m/t/935721</link>
    <description>I&amp;#039;m interested in learning how to get started in electronic publishing in Mathematica.  I&amp;#039;m creating supplements for my differential equations course to teach the relevant mathematics and Mathematica coding simultaneously.  I&amp;#039;d like to be able to distribute these notebooks to a wider audience, but am unsure the best way to proceed.  The Mathematica supplement for the first section is attached for your interest (note: it&amp;#039;s longer than most of the notebooks will be because I have a lot of content related to list operations that won&amp;#039;t typically be there).</description>
    <dc:creator>Bill Kinney</dc:creator>
    <dc:date>2016-10-06T21:17:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/832567">
    <title>Understanding how classify is fitting my data</title>
    <link>https://community.wolfram.com/groups/-/m/t/832567</link>
    <description>Hi all,&#xD;
&#xD;
I&amp;#039;m pretty new to the Machine Learning package in Mathematica, and so far I like how easy it is to use.  However, one thing that I wish it had was more information about how mathematica is treating high-dimensional datasets.  In particular, I would like to be able to understand which features are relatively more or less important in the classification model.&#xD;
&#xD;
For example, I have a 34-dimensional dataset of clinical variables for patients who either did or did not respond to cancer treatment.  The classifiication label being used is &amp;#039;CR&amp;#039; for complete response and &amp;#039;RESISTANT&amp;#039; for resistant to treatment.&#xD;
&#xD;
    trainSet = Import[&amp;#034;TrainSetCR.mx&amp;#034;];&#xD;
&#xD;
    validationSet = Import[&amp;#034;ValidationSetCR.mx&amp;#034;];&#xD;
&#xD;
I am using `Classify` to train both Logistic Regression and Random Forest classifiers for these data.  I can get some high-level information about the classifiers produced using these methods with the `ClassifierInformation` function, but I would like to understand how the classifier is treating each feature.&#xD;
&#xD;
For Logistic Regression, I can use the `Function` property to get the function the classifier is using, but it is hard to understand.&#xD;
&#xD;
    CRClassifier = Classify[trainSetCR, Method -&amp;gt; &amp;#034;LogisticRegression&amp;#034;];&#xD;
    ClassifierInformation[CRClassifier]&#xD;
    CRClassifierProperties = ClassifierInformation[CRClassifier, &amp;#034;Properties&amp;#034;]&#xD;
    ClassifierInformation[CRClassifier, &amp;#034;Function&amp;#034;]&#xD;
    ClassifierMeasurements[CRClassifier, validationSet] /@ {&amp;#034;Accuracy&amp;#034;, &amp;#034;ConfusionMatrixPlot&amp;#034;}&#xD;
&#xD;
For Random Forest, I cannot find any property that would allow me to understand how each feature is being used to classify the data.&#xD;
&#xD;
    CRClassifier = Classify[trainSetCR, Method -&amp;gt; &amp;#034;RandomForest&amp;#034;];&#xD;
    ClassifierInformation[CRClassifier]&#xD;
    CRClassifierProperties = ClassifierInformation[CRClassifier, &amp;#034;Properties&amp;#034;]&#xD;
    ClassifierMeasurements[CRClassifier, validationSet] /@ {&amp;#034;Accuracy&amp;#034;, &amp;#034;ConfusionMatrixPlot&amp;#034;}&#xD;
&#xD;
I really do enjoy using the Machine Learning package in Mathematica because it is easy to configure and try various machine learning techniques.  However, I think the package could do a little bit better at allowing users to understand how these models are treating various features.  I&amp;#039;ve attached my dataset and mathematica notebook for any who would like to look at the data.  Any suggestions on how I could approach understanding these models in greater depth would be greatly appreciated.</description>
    <dc:creator>Brady Hunt</dc:creator>
    <dc:date>2016-03-31T15:02:37Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/602402">
    <title>Packing infinite rectangles</title>
    <link>https://community.wolfram.com/groups/-/m/t/602402</link>
    <description>Awhile ago I wrote the Demonstration [Packing Squares with Side 1/n](http://demonstrations.wolfram.com/PackingSquaresWithSide1N/). It is based on the Paulhus* method,  which starts with a rectangle slightly larger than all the fractional squares, then packs all the squares into it via a clever method.&#xD;
&#xD;
$$\sum\limits_{a=2}^\infty \frac{1}{a^2} = \frac{\pi^2}{6}-1 \approx 0.644934067 \approx 0.644934069 \approx \frac{545}{467} \times \frac{21}{38}$$&#xD;
&#xD;
![Method of Paulhus][1]&#xD;
&#xD;
Oblongs of size $ \frac{1}{1} \times \frac{1}{2}$, $ \frac{1}{2} \times \frac{1}{3}$, $ \frac{1}{3} \times \frac{1}{4}$, $ \frac{1}{4} \times \frac{1}{5}$, ... have a total area of 1. &#xD;
&#xD;
$\sum\limits_{a=1}^\infty \frac{1}{a (a+1)} =1$&#xD;
&#xD;
I believe it&amp;#039;s still an unsolved question whether the infinite rectangles can fit in the unit square.  If it&amp;#039;s been solved, I&amp;#039;d love to see the paper. Anyways, I haven&amp;#039;t figured out how to modify my code to intelligently handle oblongs instead of squares. Can anyone figure that out and use the code to pack the first 2000 oblongs in the unit square?&#xD;
&#xD;
(*) M. M. Paulhus, &amp;#034;An Algorithm for Packing Squares,&amp;#034; Journal of Combinatorial Theory, Series A, 82(2), 1998 pp. 147157.&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=PaulhusPacking.gif&amp;amp;userId=21530</description>
    <dc:creator>Ed Pegg</dc:creator>
    <dc:date>2015-10-30T15:32:06Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/471839">
    <title>Upgrade from Mathematica 10.0.2 to 10.1.0 home edition for free?</title>
    <link>https://community.wolfram.com/groups/-/m/t/471839</link>
    <description>Hi,&#xD;
I would like to know if the upgrade for Mathematica 10.0.2 home edition to 10.1 home edition is seen as a whole new version and therefor should be a paid upgrade (aprox 90 dollar). &#xD;
&#xD;
regards,&#xD;
Lou</description>
    <dc:creator>l van Veen</dc:creator>
    <dc:date>2015-04-01T20:45:15Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/323630">
    <title>Tool for teaching Integration by Parts &amp;amp; Substitution</title>
    <link>https://community.wolfram.com/groups/-/m/t/323630</link>
    <description>I&amp;#039;m new to using Wolfram Alpha for teaching, having switched from Maple.&#xD;
&#xD;
When teaching calculus with Maple in our computer lab, I had students use the &amp;#034;changevar&amp;#034; command as a tool for gaining an intuition of what makes an appropriate substitution when discussing the integration by substitute method. For example,&#xD;
&#xD;
&amp;gt;Original:=Int((cos(x)+1)^3*sin(x),x)&#xD;
&#xD;
&amp;gt; New:=changevar(cos(x)+1=U,Original,U)&#xD;
&#xD;
takes the original integral and constructs a new integral in terms of the variable, U. The idea is to get students to experiment with various choices for U, see what works best, and perform the algebra/substitution details outside of class.&#xD;
&#xD;
There is an analogous tool for integration by parts.&#xD;
&#xD;
Are there similar commands in Wolfram Alpha?</description>
    <dc:creator>Paul Fishback</dc:creator>
    <dc:date>2014-08-18T21:29:10Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3106777">
    <title>SurfaceIntegrate with non-Cartesian coordiantes</title>
    <link>https://community.wolfram.com/groups/-/m/t/3106777</link>
    <description>With versions 13, and 14 SurfaceIntegrate simplifies a lot of writing. Is it possible to use spherical or other non-Cartesian coordinate charts.  Here&amp;#039;s just a simple example:&#xD;
&#xD;
    SurfaceIntegrate[&#xD;
     Grad[1/r, {r, \[Theta], \[Phi]}, &#xD;
      &amp;#034;Spherical&amp;#034;], {r, \[Theta], \[Phi]} \[Element] Sphere[]]</description>
    <dc:creator>Frank Kuehnel</dc:creator>
    <dc:date>2024-01-21T23:44:50Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2949003">
    <title>The PrincipalComponents function should be renamed as Principal Coordinate Analysis</title>
    <link>https://community.wolfram.com/groups/-/m/t/2949003</link>
    <description>I was puzzled by Daniel Lichtbau’s comments on PCA (Principal **Componen**t Analysis).  He demonstrated that the PrincipalComponents function is **not** what it is called and it does the Principal **Coordinate** Analysis. &#xD;
&#xD;
https://community.wolfram.com/groups/-/m/t/2943840&#xD;
&#xD;
This is confusing and disturbing because I consider PCA or SVD as the most important method that connects Engineering, statistics and other diciplines. &#xD;
&#xD;
I tried to use the PrincipalComponents function in the past and found that it did not provide the loading vector (V) so I use the SingularValueDecomposition function instead. &#xD;
&#xD;
In summary, the SingularValueDecomposition function should be used for PCA and WL does not have a function for PCA now.  &#xD;
&#xD;
 1. The PrincipalComponents should be renamed as Principal Coordinate Analysis (Daniel Lichtbau found)&#xD;
	&#xD;
 2. **Most importantl**y, it would be great if WL shows the &amp;#034;V&amp;#034; for PCA and other dimension reduction methods such as multidimensional scaling.  Without the &amp;#034;V”, we don&amp;#039;t know how the reduced vectors are derived (it is a black box and it is like &amp;#034;WL says just use it&amp;#034;).   &#xD;
&#xD;
I found that applying the Normal function to the DimensionReducerfunction (e.g., dimredLSA//Normal) show detail information but I don’t believe I understand them.&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/d3cb46b5-c99d-4cfc-8f7e-0046ade951f9</description>
    <dc:creator>Sangdon Lee</dc:creator>
    <dc:date>2023-06-30T17:36:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2862059">
    <title>Monotonic functions: definition and examples</title>
    <link>https://community.wolfram.com/groups/-/m/t/2862059</link>
    <description>I used these examples today when I taught the monotonicity of functions so that my students could better understand the concepts of increasing and decreasing functions.&#xD;
Both will appear in almost every section in a Calculus class and probably in other classes too, so you should be able to deal with them.&#xD;
&#xD;
 In mathematics, a monotonic function (or monotone function) is a function between ordered sets that preserves or reverses the given order. This concept first arose in calculus and was later generalized to the more abstract setting of order theory.&#xD;
&#xD;
&#xD;
----------&#xD;
## Definition of increasing functions#&#xD;
 A function is called monotonically increasing (also increasing or non-decreasing) if for all $x$ and $y$ such that $x\leq y$ one has &#xD;
$f\left(x\right) \leq f\left(y\right)$, so $f$ preserves the order&#xD;
&#xD;
 &#xD;
&#xD;
 - **Example 1**&#xD;
&#xD;
Examine the monotonicity of the function&#xD;
$$f(x)=4x-7$$&#xD;
The domain of the function is $D_f=\mathbb{R}$.&#xD;
&#xD;
Let $x_1,x_2 \in D_f $ and $x_1&amp;lt;x_2$, then we have:&#xD;
&#xD;
$$\begin{align}&#xD;
    x_1&amp;amp;&amp;lt;x_2 \\&#xD;
    4x_1&amp;amp;&amp;lt;4x_2 \\&#xD;
    4x_1-7&amp;amp;&amp;lt;4x_2-7 \\&#xD;
    f(x_1)&amp;amp;&amp;lt;f(x_2) &#xD;
\end{align}$$&#xD;
&#xD;
Hence the function $f(x)$ is increasing on $D_f$&#xD;
&#xD;
    ResourceFunction[&amp;#034;FunctionMonotonicity&amp;#034;][4 x - 7, x, All]&#xD;
![enter image description here][1]&#xD;
 - **Example 2**&#xD;
&#xD;
Examine the monotonicity of the function&#xD;
$$f(x)=(x-1)^2-1, \quad x&amp;gt; 1$$&#xD;
The domain of the function is $D_f=(1,\infty]$&#xD;
&#xD;
Let $x_1,x_2 \in D_f $ and $x_1&amp;lt;x_2$, then we have:&#xD;
$$\begin{align}&#xD;
    x_1&amp;amp;&amp;lt;x_2 \Rightarrow \\&#xD;
    x_1-1&amp;amp;&amp;lt;x_2-1 \Rightarrow \\&#xD;
    (x_1-1)^2&amp;amp;&amp;lt;(x_2-1)^2 \Rightarrow \\&#xD;
    (x_1-1)^2-1&amp;amp;&amp;lt;(x_2-1)^2-1 \Rightarrow \\&#xD;
    f(x_1)&amp;amp;&amp;lt;f(x_2) &#xD;
\end{align}$$&#xD;
Hence the function $f(x)$ is increasing on $D_f$&#xD;
&#xD;
    ResourceFunction[&amp;#034;FunctionMonotonicity&amp;#034;][(x - 1)^2 - 1, x, All]&#xD;
![enter image description here][2]&#xD;
&#xD;
----------&#xD;
## Definition of decreasing functions ##&#xD;
&#xD;
 A function is called monotonically decreasing (also decreasing or non-increasing) if, whenever $x\leq y$, then $f\left(x\right) \geq f\left(y\right)$, so it reverses the order&#xD;
&#xD;
 - **Example 3**&#xD;
&#xD;
Examine the monotonicity of the function&#xD;
$$f(x)=2-x^3$$&#xD;
The domain of the function is $D_f=\mathbb{R}$.&#xD;
&#xD;
Let $x_1,x_2 \in D_f $ and $x_1&amp;lt;x_2$, then we have:&#xD;
$$\begin{align}&#xD;
    x_1&amp;amp;&amp;lt;x_2 \Rightarrow \\&#xD;
    x_1^3&amp;amp;&amp;lt;x_2^3 \Rightarrow \\&#xD;
    -x_1^3&amp;amp;&amp;gt;-x_2^3 \Rightarrow \\&#xD;
    2-x_1^3&amp;amp;&amp;gt;2-x_2^3 \Rightarrow \\&#xD;
    f(x_1)&amp;amp;&amp;gt;f(x_2) &#xD;
\end{align}$$&#xD;
Hence the function $f(x)$ is decreasing on $D_f$&#xD;
&#xD;
    ResourceFunction[&amp;#034;FunctionMonotonicity&amp;#034;][2 - x^3, x, All]&#xD;
![enter image description here][3]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2023-03-30at2.53.30AM.png&amp;amp;userId=2600850&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2023-03-30at2.55.12AM.png&amp;amp;userId=2600850&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2023-03-30at2.56.20AM.png&amp;amp;userId=2600850</description>
    <dc:creator>Athanasios Paraskevopoulos</dc:creator>
    <dc:date>2023-03-30T00:05:51Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2717455">
    <title>Plot orbit around 3D Earth?</title>
    <link>https://community.wolfram.com/groups/-/m/t/2717455</link>
    <description>hello, i am new in Mathematica and would like to plot the orbits as shown in the 2 photos attached i have also attached a notebook with what I have.&#xD;
&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/6dfd55aa-675f-4f73-8c37-444eea3e5206</description>
    <dc:creator>Adika stadevant Okelo</dc:creator>
    <dc:date>2022-12-05T22:05:48Z</dc:date>
  </item>
</rdf:RDF>

