Discussione:
notazione per matrici e vettori
(troppo vecchio per rispondere)
giuseppe.on.usenet
2010-11-18 08:59:51 UTC
Permalink
Ax=b
dove A è la matrice dei coefficienti, x vettore delle variabili, b
vettore dei termini noti

cx
dove c è il vettore dei coefficienti di una funzione, e x vettore
delle variabili

Quali lettere vanno in grassetto, e quali no?

La domanda può sembrare banale, ma ho trovato in giro dispense scritte
in LaTeX dove tutte le lettere sono in grassetto, o tutte non sono in
grassetto. Mah...
Enrico Gregorio
2010-11-18 09:06:05 UTC
Permalink
Post by giuseppe.on.usenet
Ax=b
dove A è la matrice dei coefficienti, x vettore delle variabili, b
vettore dei termini noti
cx
dove c è il vettore dei coefficienti di una funzione, e x vettore
delle variabili
Quali lettere vanno in grassetto, e quali no?
La domanda può sembrare banale, ma ho trovato in giro dispense scritte
in LaTeX dove tutte le lettere sono in grassetto, o tutte non sono in
grassetto. Mah...
Questione di gusti e di convenzioni. Secondo le norme ISO/UNI, per
molti versi assurde da un punto di vista matematico, vettori e matrici
dovrebbero andare in nero corsivo.

Molti matematici se ne fregano altamente e usano tranquillamente il
normale corsivo, specialmente in testi di carattere avanzato.

Personalmente uso il nero tondo (\mathbf) per vettori, con lettere
minuscole, e matrici, con lettere maiuscole.

In ogni caso meglio definirsi un paio di macro

\newcommand*{\matr}{\mathbf}
\newcommand*{\vett}{\mathbf}

in modo da poter in ogni momento cambiare la convenzione senza
dover rivedere tutto il manoscritto.

Ciao
Enrico
Francesco Potortì
2010-11-18 09:28:05 UTC
Permalink
Post by Enrico Gregorio
Personalmente uso il nero tondo (\mathbf) per vettori, con lettere
minuscole, e matrici, con lettere maiuscole.
È la convenzione con cui sono stato educato, e che vedo tuttora più
spesso (e che uso).
giuseppe.on.usenet
2010-11-18 10:30:46 UTC
Permalink
Post by Enrico Gregorio
Questione di gusti e di convenzioni. Secondo le norme ISO/UNI, per
molti versi assurde da un punto di vista matematico, vettori e matrici
dovrebbero andare in nero corsivo.
Molti matematici se ne fregano altamente e usano tranquillamente il
normale corsivo, specialmente in testi di carattere avanzato.
Personalmente uso il nero tondo (\mathbf) per vettori, con lettere
minuscole, e matrici, con lettere maiuscole.
In ogni caso meglio definirsi un paio di macro
\newcommand*{\matr}{\mathbf}
\newcommand*{\vett}{\mathbf}
in modo da poter in ogni momento cambiare la convenzione senza
dover rivedere tutto il manoscritto.
Ciao
Enrico
OK.
Altre due domande:
1. ai fini pratici che differenza c'è tra \mathbf e \textbf nelle
formule?
(a parte il fatto ovvio che il primo fa parte di amsmath e il secondo
no)
2. il "nero corsivo" sarebbe \mathit ?
Enrico Gregorio
2010-11-18 13:06:15 UTC
Permalink
Post by giuseppe.on.usenet
Post by Enrico Gregorio
Questione di gusti e di convenzioni. Secondo le norme ISO/UNI, per
molti versi assurde da un punto di vista matematico, vettori e matrici
dovrebbero andare in nero corsivo.
Molti matematici se ne fregano altamente e usano tranquillamente il
normale corsivo, specialmente in testi di carattere avanzato.
Personalmente uso il nero tondo (\mathbf) per vettori, con lettere
minuscole, e matrici, con lettere maiuscole.
In ogni caso meglio definirsi un paio di macro
\newcommand*{\matr}{\mathbf}
\newcommand*{\vett}{\mathbf}
in modo da poter in ogni momento cambiare la convenzione senza
dover rivedere tutto il manoscritto.
Ciao
Enrico
OK.
1. ai fini pratici che differenza c'è tra \mathbf e \textbf nelle
formule?
Quasi nessuna, se usi un solo carattere nell'argomento, purché tu
carichi amsmath. Meglio \mathbf, nelle formule, comunque.
Post by giuseppe.on.usenet
(a parte il fatto ovvio che il primo fa parte di amsmath e il secondo
no)
Entrambi i comandi sono definiti nel nucleo di LaTeX. Il secondo
è /ridefinito/ da amsmath in modo che cambi grandezza se è trovato
in un esponente o un pedice.
Post by giuseppe.on.usenet
2. il "nero corsivo" sarebbe \mathit ?
No, quello è il corsivo normale che va usato per nomi di variabili
"multilettera".

Per il nero corsivo il modo più semplice è di caricare il pacchetto
bm e scrivere \bm{<lettera>}.

Ciao
Enrico
giuseppe.on.usenet
2010-11-20 12:23:30 UTC
Permalink
Post by Enrico Gregorio
Personalmente uso il nero tondo (\mathbf) per vettori, con lettere
minuscole, e matrici, con lettere maiuscole.
http://pastebin.com/9p8bEdjG
ho raggiunto il risultato finale che volevo (incolonnare x_b e x_n),
ma facendo tutto "a mano" (\hspace, \qquad ecc.).
Se uso tabular con le colonne giustificate a destra, ho troppo spazio
tra una colonna e l'altra.
Se uso tabbing, lo spazio tra una tabulazione e l'altra mi va bene, ma
l'allineamento è a sinistra (forse c'è un comando per allineare con
precisione a destra? ho fatto qualche prova senza successo).
In conclusione, mi chiedevo se ci fosse un modo un po' più logico per
produrre la stessa cosa.

Come al solito, trattasi di codice che non devo distribuire in giro...
Tuttavia, migliorarsi fa sempre bene :-)
Enrico Gregorio
2010-11-20 13:33:42 UTC
Permalink
Post by giuseppe.on.usenet
Post by Enrico Gregorio
Personalmente uso il nero tondo (\mathbf) per vettori, con lettere
minuscole, e matrici, con lettere maiuscole.
http://pastebin.com/9p8bEdjG
ho raggiunto il risultato finale che volevo (incolonnare x_b e x_n),
ma facendo tutto "a mano" (\hspace, \qquad ecc.).
Se uso tabular con le colonne giustificate a destra, ho troppo spazio
tra una colonna e l'altra.
Se uso tabbing, lo spazio tra una tabulazione e l'altra mi va bene, ma
l'allineamento è a sinistra (forse c'è un comando per allineare con
precisione a destra? ho fatto qualche prova senza successo).
In conclusione, mi chiedevo se ci fosse un modo un po' più logico per
produrre la stessa cosa.
Come al solito, trattasi di codice che non devo distribuire in giro...
Tuttavia, migliorarsi fa sempre bene :-)
Fa abbastanza orrore. :)

Per questa soluzione occorre il pacchetto array: nel preambolo
scrivi

\usepackage{array}
\newcolumntype{R}{@{}>{{}}r<{{}}}

e poi

\begin{align*}
\min z = {}
&
\begin{array}[t]{RRRRR}
\vett{c}{N}\vett{x}{N}& + & \vett{c}{B}\vett{x}{B} & + & d \\
\matr{N}\vett{x}{N} & + & \matr{B}\vett{x}{B} & = & \matr{b} \\
\vett{x}{n}\rlap{,} & & \vett{x}{B} &\geq& 0
\end{array}
\end{align*}

L'idea di \textsc{#2} è piuttosto balzana: meglio

\newcommand{\vett}[3][]{\matr{#2}^{#1}_\textup{#3}}

Così hai (1) che il comando \vett è definito in termini di
\matr e non occorre ricordarsi di cambiare anche questo se
per caso decidi di modificare la resa di \matr; (2) indichi
le variabili con il loro nome.

Se non devi mai mettere esponenti alle tue variabili che
indichi con \vett, puoi usare la definizione più semplice

\newcommand{\vett}[2]{\matr{#1}^{}_\textup{#2}}

L'esponente vuoto serve per abbassare il pedice. Se usi esponenti,
con l'altra definizione li indichi come argomento opzionale:

\vett[2]{x}{N}

Tuttavia propenderei per un altro modo di rendere il tutto, non
vedo alcuna necessità di allineare verticalmente le variabili x.

\begin{align*}
\min z = {}
&\vett{c}{N}\vett{x}{N} + \vett{c}{B}\vett{x}{B} + d \\[1ex]
&\matr{N}\vett{x}{N} + \matr{B}\vett{x}{B} = \matr{b} \\
&\vett{x}{N},\vett{x}{B} \geq 0
\end{align*}

Normalmente i punti di allineamento si mettono prima di un
simbolo di relazione; in questo caso si mette dopo, ma allora
bisogna ricordarsi di un gruppo vuoto per mantenere la
spaziatura corretta dopo il simbolo =.

Ciao
Enrico
giuseppe.on.usenet
2010-11-20 18:22:25 UTC
Permalink
Post by Enrico Gregorio
Fa abbastanza orrore. :)
Non a caso avevo voglia di migliorare il codice ;-)
Post by Enrico Gregorio
Per questa soluzione occorre il pacchetto array: nel preambolo
scrivi
\usepackage{array}
e fin qui OK
Ah ah! :-D
Eh sì, non avrei pensato a questo passaggio non proprio banalissimo...
Post by Enrico Gregorio
e poi
\begin{align*}
\min z = {}
& [...]
OK.
Post by Enrico Gregorio
L'idea di \textsc{#2} è piuttosto balzana: meglio
\newcommand{\vett}[3][]{\matr{#2}^{#1}_\textup{#3}}
[...]
OK, in altre occasioni questi parametri opzionali potrebbero tornarmi
utili.
Post by Enrico Gregorio
Se non devi mai mettere esponenti alle tue variabili che
indichi con \vett, puoi usare la definizione più semplice
\newcommand{\vett}[2]{\matr{#1}^{}_\textup{#2}}
L'esponente vuoto serve per abbassare il pedice.
[...]
Sì, il pedice più basso è comodo.
(per inciso, mi sono sempre chiesto come mai non sia il comportamento
di default...)
Post by Enrico Gregorio
Tuttavia propenderei per un altro modo di rendere il tutto, non
vedo alcuna necessità di allineare verticalmente le variabili x.
...non la vedo neppure io, ma avevo semplicemente voglia di
sperimentare.
Enrico Gregorio
2010-11-20 18:36:39 UTC
Permalink
Post by giuseppe.on.usenet
Post by Enrico Gregorio
Fa abbastanza orrore. :)
Non a caso avevo voglia di migliorare il codice ;-)
Post by Enrico Gregorio
Per questa soluzione occorre il pacchetto array: nel preambolo
scrivi
\usepackage{array}
e fin qui OK
Ah ah! :-D
Eh sì, non avrei pensato a questo passaggio non proprio banalissimo...
È solo un'abbreviazione per non dover scrivere un argomento
troppo complicato a \begin{array}.

1 - @{} elimina lo spazio che precede la colonna
2 - >{{}} dice che prima di ogni elemento della cella si mette
un gruppo vuoto
3 - <{{}} è lo stesso, dopo l'elemento della cella

Perché? Così le celle con variabili diventano, per esempio, {}x{},
che non fa danni: sono tre atomi Ord, ma il primo e il terzo non
fanno nulla di male. La cella in cui c'è il simbolo di addizione
si comporta come se contenesse {}+{}, che crea gli spazi attorno
al simbolo di operazione.
Post by giuseppe.on.usenet
Post by Enrico Gregorio
e poi
\begin{align*}
\min z = {}
& [...]
OK.
Post by Enrico Gregorio
L'idea di \textsc{#2} è piuttosto balzana: meglio
\newcommand{\vett}[3][]{\matr{#2}^{#1}_\textup{#3}}
[...]
OK, in altre occasioni questi parametri opzionali potrebbero tornarmi
utili.
Sono /spesso/ utili. :)
Post by giuseppe.on.usenet
Post by Enrico Gregorio
Se non devi mai mettere esponenti alle tue variabili che
indichi con \vett, puoi usare la definizione più semplice
\newcommand{\vett}[2]{\matr{#1}^{}_\textup{#2}}
L'esponente vuoto serve per abbassare il pedice.
[...]
Sì, il pedice più basso è comodo.
(per inciso, mi sono sempre chiesto come mai non sia il comportamento
di default...)
Così ha deciso Knuth, e sono d'accordo con lui, in linea di massima:
meglio evitare di andare troppo in basso nella riga, se si può evitare
di farla "ondeggiare".
Post by giuseppe.on.usenet
Post by Enrico Gregorio
Tuttavia propenderei per un altro modo di rendere il tutto, non
vedo alcuna necessità di allineare verticalmente le variabili x.
...non la vedo neppure io, ma avevo semplicemente voglia di
sperimentare.
You're welcome, direbbero gli americani.

Ciao
Enrico

Simone
2010-11-18 11:02:46 UTC
Permalink
Post by giuseppe.on.usenet
Ax=b
dove A è la matrice dei coefficienti, x vettore delle variabili, b
vettore dei termini noti
cx
dove c è il vettore dei coefficienti di una funzione, e x vettore
delle variabili
Quali lettere vanno in grassetto, e quali no?
Secondo me, devi solo dichiararlo all'inizio del tuo testo. Cosi' come
non ho mai visto font speciali per gli elementi dei gruppi commutativi,
non vedo perche' bisognerebbe usarli per gli elementi di uno spazio
vettoriale. Anche le funzioni sono vettori, dovrei scriverle in grassetto?

Paradossi a parte, io uso il font corsivo di default sia per le matrici, sia
per i vettori.
Continua a leggere su narkive:
Loading...