Membuat Array dengan Subscripts dan Superscripts

Oct 04 2020

Saya ingin mencari cara untuk membuat array menggunakan subskrip dan superskrip berdasarkan info berikut:

Cs = {1, 3, 5};
Ss = {1, -1, 1};
Rules = {1 -> "+", -1 -> "-"};
Ss1 = Ss /. Rules;

Jika saya coba, misalnya:

{SubsuperscriptBox["c", Cs[[1]], Ss1[[1]]], 
  SubsuperscriptBox["c", Cs[[2]], Ss1[[2]]], 
  SubsuperscriptBox["c", Cs[[3]], Ss1[[3]]]} // DisplayForm

Saya mendapatkan hasil dari:

$\{c^{+}_1,c^{-}_3,c^{+}_5\}$

Inilah yang ingin saya dapatkan. Namun, saya ingin melakukan ini secara lebih otomatis, daripada melakukan hard-coding seperti yang baru saja saya lakukan. Maksud saya, saya harus dapat memvariasikan array Cs dan Ss menjadi sesuatu yang sewenang-wenang. Misalnya, katakan saya punya:

 Cs = {1, 2, 4, 5};
 Ss = {1, -1, 1, -1};
 Rules = {1 -> "+", -1 -> "-"};
 Ss1 = Ss /. Rules;

Saya kemudian harus mendapatkan:

$\{c^{+}_1,c^{-}_2,c^{+}_4,c^{-}_5\}$

Tentu saja, saya dapat mengubah blok kode kedua, tetapi saya ingin melihat apakah ada cara yang lebih bersih untuk melakukan ini, tanpa saya perlu mengubahnya secara manual.

Jawaban

4 HenrikSchumacher Oct 04 2020 at 15:15

Anda dapat menggunakan, misalnya,

MapThread[
 SubsuperscriptBox["c", ##] &,
 {Cs, Ss1}
 ]
4 kglr Oct 04 2020 at 16:22
Cs = {1, 2, 4, 5};
Ss = {1, -1, 1, -1};
Ss1 = Ss /. {1 -> "+", -1 -> "-"};

Thread[Subsuperscript["c", Cs, Ss1]]

Anda juga bisa Apply (@@@)fungsi Subsuperscript["c", ##]&untuk memasangkan nilai dari Csdan Ss1(yaitu, ke Transpose[{Cs, Ss1}}]):

Subsuperscript["c", ##] & @@@ Transpose[{Cs, Ss1}]