# Learning Mathematica for Physics

I'm a student of physics with little to no background in programming. I have to learn Mathematica for my Physics project. As of now, I need it for doing numerical integration, numerical optimization and making fancy graphs.

How should I go about learning it effectively? What are some good resources for a person in my situation? I came across:

1. reference.wolfram.com/language

2. http://www.wolfram.com/learningcenter/tutorialcollection/. But these seem very long.

3. Mathematica: A Problem Centered Approach by Roozbeh Hazrat.

Any views on these resources? Should I be using them or not? Please recommend effective ways to go about learning Mathematica for my purposes.

• This is nice to quickly jump in, even though it says it is for programmers: wolfram.com/language/fast-introduction-for-programmers
– Kuba
Commented Jul 1, 2016 at 18:44
• What about resources for people like me? Help please. I need to urgently get started. Commented Jul 1, 2016 at 18:53
• Oh, sorry. I misread your comment. Commented Jul 1, 2016 at 19:02
• Commented Jul 1, 2016 at 19:04
• how about youtube.com/watch?v=Zp1EV7ytSnA or youtube.com/… Commented Jul 1, 2016 at 19:57

## Introduction

My primary degree is in physics and secondary in software engineering. Prior to learning wolfram language, I knew languages such as C++, Java and Python (excluding web development), yet I found it rather difficult to learn wolfram language. I think the difficulty was rather due to extensive exposure to a particular programming paradigm (object-oriented programming). Wolfram language makes you think in a different way and although the learning curve was steeper then I anticipated it was most rewarding to say the least. Here is what I would recommend you to do to learn wolfram programming language.

## List Manipulation

Lists, I cannot emphasize enough how often you will end up working with this data structure. It is a good start to get yourself comfortable in manipulating lists. Please see this link to kick-start your way to enlightment in list manipulation!

## Documentation

Wolfram language has by far the best documentation I have every seen in my life. Embrace it and learn to use it. You can access documentation in a number of ways

1. Online
2. In Mathematica, by navigating in the menu bar and clicking on

Help > Documentation

Spend some time looking over the documentation. Look at the structure, the information it presents and various examples which it covers. Learning to use documentation effectively will benefit you in a long term. Specially if you want to become good at using wolfram language.

Additionally, if you want to learn more about functions signature you can type ? followed by a functions name as for example ?Plot. This will produce an output containing information on how-to initiate the function. Also, if you know the name of the function and just want to see its associate documentation; in notebook you can type in the name of the function like Plot and hit F1 this will open the associated documentation.

## Functional Programming

This topic is a beast of its own and is worth exploring to do great things using wolfram language. All you need to know at this stage is that it's a programming paradigm. There are also others such as object-oriented programming and rule-based programming; you can apply any of the above when writing code in wolfram language but I think ( and this only my opinion ) functional programming and rule-based programming is sort of "the boss" when it comes to wolfram language. Here is a link to get you started.

## Data Visualization

In wolfram language there is a truly large amount of functions which allow you to present your data in a way you want it to be presented; to name a few - Plot, ListPlot, Histogram, ParametricPlot, DensityPlot and much more.... No, honestly - Plot3D, ParametricPlot3D, DensityPlot3D etc. I think that gives you an idea of how many different functions does wolfram language offer you so you could visualize data. What's even better you can customize them in whichever way you like by manipulating various options.

Check out some examples here, here and here

## Graphics

Wolfram language has also an extensive support for visualizing all sorts of geometric compositions in 1D, 2D or 3D. I for once have been able to build rather complex geometries visualizing onshore and offshore facilities in order to conduct hazard simulations (fire, explosion etc.). I mean it's great to say the least. In order to get more familiar with graphics support when using wolfram language see these link, link, link.

Some examples here and here

## Manipulate

Wolfram language has this interesting thing called Manipulate. A powerful feature that allows you to construct graphical user interface for all sorts of mind blowing things. It's essentialy a high level function which is built using lower level components, it allows its user to quickly build interactive content to present and explore ideas. Follow this link to learn more about it.

See some examples here

With that said, I wish you good luck and hope you will be able to achieve your goals using wolfram programming language.

"A journey of a thousand miles begins with a single step" - Lao Tzu

• a very thoughtful useful answer and aphorism +1 :) Commented Jul 2, 2016 at 15:41
• @ubpdqn thank you very much for your comment! Appreciate that :D Commented Jul 2, 2016 at 15:48