# Mathematica

### Define Functions / Routines

define simple function

```f[x_]= a * Sin[x]
```

This checks value of a each time f is addressed, opposite to

```f[x_]:= a * Sin[x]
```

Advanced function/routine (note % does not work!)

```findX[b_] := Module[{f1, f2, start = 2},
f1 = Exp[x] - b;
f2 = Sin[x];
Plot[{f1, f2}, {x, 0, 10}];
xSolved = FindRoot[f1 == f2, {x, start}]
]
```

UnDefine Variable / Function

```ClearAll[f,a]
```

### Schnippel

Numerical Integration: Splitting is extremely important for result and speed

```NIntegrate[f[x], {x, -∞, 0, a, ∞}, MaxRecursion -> 20]
```

### File Access

``` exportDirData = "z:\\mathematica\\export\\";
DeleteDirectory[exportDirData, DeleteContents -> True];
CreateDirectory[exportDirData];
Export [exportDirData <> "1.dat", data, "TSV"];

importDirData = "z:\\mathematica\\import\\";
SetDirectory[importDirData];
files = FileNames[];
For[i=1,i<=Length[files],i++,
file = files[[i]];
data = Import[file, "TSV"];
data = Delete[data,1]; (*remove header line*)
data = data[[All, {1, 4, 5}]]; (*only columns 1,4 and 5 *)
out={};
For[j=1, j<=Length[data], j++,
x = data[[j,1]];
y = data[[j,2]];
out = Append[out, {x,y};
]
out=Prepend[out,{"# X ", "Y (S/cm)"}];
]

```

### Plotting

```p1=Plot[Sin[x],{x,0,10},DisplayFunction->Identity];
p2=Plot[Sin[2x],{x,0,10},DisplayFunction->Identity];
Show[GraphicsArray[{p1,p2}]];
Export[exportDirImg <> filename <> ".pdf", p1, "PDF", ImageSize -> 640, ImageResolution->300, ImageRotated -> False];
```

#### Nicer Plots

```<< Graphics`
SetOptions[Plot, Frame -> True, Axes -> False, FrameLabel -> {None, None, None, None}, RotateLabel -> True
, TextStyle -> {FontSize -> 12, FontWeight -> "Bold", FontFamily -> "Arial"}
, PlotStyle -> {RGBColor[1,0,0], RGBColor[0,1,0], RGBColor[0,0,1], RGBColor[1,1,0], RGBColor[1,0,1], RGBColor[0,1,1], RGBColor[0,0,0]}
, ImageSize -> 320];
```

similar for LogPlot, ListPlot, LogLinearListPlot, LogLogListPlot