6

I would like to use the I as a symbol for the electrical current. How can I redefine it, so it is not interpreted as the imaginary unity?

Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371
Diegos
  • 71
  • 1
  • I thought you guys used J or j? – cormullion Jan 11 '13 at 13:47
  • 13
    I would strongly recommend against doing so since complex numbers are fundamental in Mathematica. Instead, you should use some other symbol, which you can easily make print as "I" if you so wish. – Oleksandr R. Jan 11 '13 at 13:49
  • Yes, we use j for the imaginary unit, and i and I for currents. But if I use I for a current, mathematica interprets it as the imaginary unity. So, how can I get Mathematica to interpret I as my own symbol instead of the imaginary Unit? – Diegos Jan 11 '13 at 13:54
  • 1
    @Diegos Do you find using \[CapitalIota] unacceptable? If you really want to use raw I I'll show you how, but using it is against my better judgement. – Mr.Wizard Jan 11 '13 at 13:55
  • Thank you, I will use capital iota – Diegos Jan 11 '13 at 14:17
  • Mathematica is a programming language, and therefore it has constraints on the notation you can use. It is much more flexible in this regard than other languages, but it still has a precise syntax that you need to follow. You'll have to adapt to it instead of trying to force it to adapt to you, otherwise you're just asking for trouble. – Szabolcs Apr 13 '13 at 16:48
  • I would do it like this: Module[{I}, (*Stuff with I*) ]. – swish Apr 13 '13 at 23:23

1 Answers1

20

The short answer is don't do it. Really, it's just not a good idea. You can use other symbols, such as \[CapitalIota] which looks almost exactly like I and is entered with EscIEsc.


If you're really determined you could substitute symbols using $PreRead and MakeBoxes but again I don't recommend it. For example:

MakeBoxes[I, _] := "\[ImaginaryJ]"

MakeBoxes[currentI, _] := "I"

$PreRead = # /. {"I" -> "currentI", "j" -> "I"} &;

Mathematica graphics

Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371
  • I understand your recomandation Oleksandr, but what sense does it make for Mathematica to permit using j as imaginary unity (typical in electrotechnics), if I is still reserved (so not accessible to symbolise currents)? Consequently using j as imaginary unity, should permit to use I as current – Diegos Jan 11 '13 at 13:57
  • @Diegos Mathematica isn't set up to make those kinds of changes, perhaps unfortunately. In the long run you will almost certainly want to find alternatives to what you are describing. – Mr.Wizard Jan 11 '13 at 13:59
  • 1
    Thank you anyways, I will use capital iota in this case. But it would certainly be an improvement, if in a future time one could replace predefined symbols for one's own computations: something like a "local redefinition bracket". – Diegos Jan 11 '13 at 14:09
  • @Diegos I added an example to my answer that may interest you. When you say "local redefinition bracket" do you mean something like Leonid used here? That is possible. – Mr.Wizard Jan 11 '13 at 14:14