5
$\begingroup$

I've searched and found this but it wasn't helpful. To be direct, I'm completely unfamiliar with what the OP in that thread was even attempting to do, though I may have a similar problem.

I have a package of AddOns which I once used from a book co-authored by Eric Schulz, "Visual Linear Algebra." Particularly, the AddOns which I used most heavily were the ones which allowed me to do elementary row operations on matrices for an intro linear algebra class. I have seen a discussion here which offers a work-around, but I am wondering if there is an elegant way to make these addons work in Mathematica 12. Attempting to load the package of addons using Needs[...] generates a cascade of error messages, which I do not know how to remedy.

I'm willing to learn what I can to salvage what can reasonably be salvaged from these addons, but not even sure where to start working/looking. The instructions which used to work called for a folder with some notebooks and other files to be installed where Mathematica 5 looked for addons, which in OS X is /Library/Mathematica/Applications in the proper user folder. I installed that file as instructed, but Mathematica 12 doesn't behave like Mathematica 7 or 8 did with those commands.

Added for clarity, the instructions call for two commands to be executed:

Quit[ ]
Needs["VisualLA`"]

The error messages which appear are: Error Messages

Update:

Following the instructions of xzczd, I installed the Arrow and Colors packages. In /Library/Mathematica/Applications (in the same user folder where the VisualLA folder resides in OS X) I now find Arrow.wl and Colors.wl, but executing the

Quit[ ]
Needs["VisualLA`"]

commands still results in precisely the same sequence of error messages as pictured above.

I opened the main package, Library.m and find the following:

    BeginPackage["VisualLA`Library`",{
    "Global`",
    "Graphics`Colors`",
    "Graphics`Arrow`",
    "Graphics`ImplicitPlot`",
    "NumericalMath`SplineFit`",
    "LinearAlgebra`Orthogonalization`",
    "LinearAlgebra`MatrixManipulation`",
    "Utilities`FilterOptions`"}]

Needs["Graphics`Graphics`"];

I saved the Library.m package after making the edit for Splines and now I am getting this:

Post-edit behavior

Final Update

With many, many thanks to xzczd, got it working, on Windows 10, at least. It generates a flurry of error messages when executing the

Quit[ ]
Needs["VisualLA`"]

commands, even more than I posted upstream, and the formatting related spew after executing the commands for row operations, but they work, which I greatly appreciate. I am so thankful, as this allows me to easily salvage a bunch of notebooks that I put away many years ago, and is greatly appreciated.

$\endgroup$
11
  • 1
    $\begingroup$ Is the package available on Internet? What warnings do you encounter when loading the package? $\endgroup$
    – xzczd
    Commented Mar 12, 2021 at 0:45
  • 1
    $\begingroup$ Mathematica has changed so much between V5 and V12 the I believe that trying to salvage the code from the package is not worth the effort. I am convinced that there is no elegant way to make these addons work in Mathematica 12. $\endgroup$
    – m_goldberg
    Commented Mar 12, 2021 at 3:44
  • 1
    $\begingroup$ One can only @ one user in one comment so you need to @m_goldberg in a separate comment. (As to the usage of @ , you may want to read this: meta.stackexchange.com/a/43020/284701 ) Then, as requested in my last comment, can you add the warning messages you've encountered to the question? Currently it's hard to help. Also, you may consider directly contacting the author, Eric Schulz is a member of Wolfram Community: community.wolfram.com/web/ericschulz/home $\endgroup$
    – xzczd
    Commented Mar 15, 2021 at 2:42
  • 1
    $\begingroup$ You need to execute the Internal`InheritedBlock[…] everytime you load the package in a fresh kernel. If you don't bother to, consider saving the code piece in SystemOpen@"init.m", then every time you start Mathematica, the package will be loaded automatically. $\endgroup$
    – xzczd
    Commented Mar 17, 2021 at 4:54
  • 1
    $\begingroup$ You don't need to execute Needs[...] again, the Needs@"VisualLA`" is already in Internal`InheritedBlock[…]. "Will upgrading to a new version cause the custom folders in [...]Program Files\Wolfram Research\Mathematica\12.1\AddOns\Applications\ to be swept away?" Yes. $\endgroup$
    – xzczd
    Commented Mar 18, 2021 at 3:15

1 Answer 1

6
$\begingroup$

The package isn't available on Internet so I can't check, but the following should make the package work in v12 (in theory). Feel free to comment if you find something still doesn't work properly.

According to the info in the question, the package VisualLA` seems to have called 9 obsolete packages, they're

"Graphics`Colors`"
"Graphics`Arrow`"
"Graphics`ImplicitPlot`"
"NumericalMath`SplineFit`"
"LinearAlgebra`Orthogonalization`"
"LinearAlgebra`MatrixManipulation`"
"Utilities`FilterOptions`"
"Graphics`Graphics`"
"Statistics`DataManipulation`"

7 of them are still available in Wolfram Library Archive:

Graphics`Colors` Legacy Standard Add-On Package

Graphics`Arrow` Legacy Standard Add-On Package

Graphics`ImplicitPlot` Legacy Standard Add-On Package

Graphics`Graphics` Legacy Standard Add-On Package (If you care about warnings (they're harmless in principle), remove the "Graphics`Common`GraphicsCommon`", and definitions for Histogram and BarChart. )

LinearAlgebra`Orthogonalization` Legacy Standard Add-On Package

LinearAlgebra`MatrixManipulation` Legacy Standard Add-On Package

Statistics`DataManipulation` Legacy Standard Add-On Package

Download and install them. Since the VisualLA` package has called these packages using e.g. << Graphics`Arrow`, we need to create 3 folders Graphics, LinearAlgebra and Statistics in

(* Execute the following code in a notebook, 
   then the folder will be opened, at least in Windows. *)
FileNameJoin@{$BaseDirectory, "Applications"} // SystemOpen

and place the first 4 packages in Graphics, subsequent 2 in LinearAlgebra, and the last 1 in Statistics. (For more info check the Details and Options section of document of Get. )

As to NumericalMath`SplineFit`, according to the compatibility information Compatibility/tutorial/NumericalMath/SplineFit, one way to update it is to replace all the NumericalMath`SplineFit` in the package with Splines`; Utilities`FilterOptions` has been discussed quite a bit in this site, you may refer to those posts to modify the package. But since manual modification is tedious (esp. FilterOptions, which has been called in numerous obsolete packages! ), let's try something different. Instead of modifying the package, we load the package with the following code:

Internal`InheritedBlock[{Get, Needs}, Unprotect[Get, Needs];
 Get["NumericalMath`SplineFit`"] := Get["Splines`"];
 Get["Utilities`FilterOptions`"] := "";
 Needs["Utilities`FilterOptions`"] := "";
 System`FilterOptions[a_, b___] := Sequence @@ FilterRules[{b}, Options[a]];

 Needs@"VisualLA`" (* Notice the package is already loaded here. *)]

If you don't bother to manually execute the code piece everytime you load the package, consider saving it in SystemOpen@"init.m"(* Execute this in a notebook *), then every time you start Mathematica, the package VisualLA` will be loaded automatically.

$\endgroup$
15
  • 1
    $\begingroup$ @ZippyThePinhead Oops, I should have checked more carefully. Since the package VisualLA` has called the packages using something like << Graphics`Arrow`, the menu item Install isn't that convenient now. We need to create a folder Graphics in /Library/Mathematica/Applications and place the 2 packages inside it. $\endgroup$
    – xzczd
    Commented Mar 16, 2021 at 6:22
  • 1
    $\begingroup$ @ZippyThePinhead I've added possible way to handle the rest obsolete packages. Have a look. $\endgroup$
    – xzczd
    Commented Mar 16, 2021 at 7:26
  • 1
    $\begingroup$ @ZippyThePinhead The code FileNameJoin@{$BaseDirectory, "Applications"} // SystemOpen should work on all the platforms. $\endgroup$
    – xzczd
    Commented Mar 16, 2021 at 16:44
  • 1
    $\begingroup$ @ZippyThePinhead Oh, seems that Implicit package has already been updated in Wolfram Library Archive (I directly checked the package in v5.2), so, yes, you don't need to modify the package. As to Graphics`Graphics` package, if you don't care about warning messages, you don't need to edit the package (in principle), then you'll see several warnings about Histogram and BarChart because they're built-in and Protected nowadays. $\endgroup$
    – xzczd
    Commented Mar 17, 2021 at 1:33
  • 1
    $\begingroup$ Finally, regarding the commands above, "Internal`InheritedBlock[{Get, Needs},..." and "FileNameJoin@{$BaseDirectory, "Applications"} // SystemOpen," are these inserted into a package or into a notebook? If the former, where? Just out of curiosity I pasted the latter into a notebook and executed it, but I received a "Failed" error message. However this was in OS X, and it worked in Windows. $\endgroup$ Commented Mar 17, 2021 at 1:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.