Dobrý den,
mám prosbu, jakým příkazem získám z matice řádky ? Pro další trigonometrickou úpravu potřebuji přepsat matici do řádků, nechci však tyto řádky pouze opsat. V českých návodech na netu jsem pomoc nenašel a v helpu jsem hledal, ale bohužel bezvýsledně.
Mockrát děkuji za radu ;-)
Offline
Pokud je matice M, pak první řádek matice je M[1], druhý řádek M[2].
Například položka která se nalézá v druhém řádku a třetím sloupci je
polozka: M[2][3]
Jinak můžeš také použít příkaz row, druhý řádek matice M je
row(M,2)
obdobně třetí sloupec je
col(M,3)
Pokud potřebuješ z rovnice eq vzít pouze levou stranu pak je to příkaz lhs(eq), pravá strana je obdobně rhs(eq)
Můžeš i dělit výrazy příkazem part ...
Pokud chci sečíst všechny položky v pátém řádku matice napíšu apply("+",M[5]), obdobně vynásobím je příkazem apply("*".M[5]), výsledkem pochopitelně už není matice, ale výraz.
pokud chci převést seznam například:
L: [[b,-c,a],[c,u,l],[g,h,l]];
na matici, udělám to takto:
M: apply(matrix,L);
Offline
Příkazem transpose vyměníme řádky za sloupce a pak stejně jako u sečtení řádku (pro první sloupec):
apply("+",transpose(M)[1]);
nebo si můžeš udělat funkce:
pro sečtení řádků:
secti_radky(M) := block([r,c,R,i,j],
[r,c]: matrix_size(M),
R: makelist(0,i,1,r),
for j:1 thru c do (
for i:1 thru r do (
R[i]: R[i]+M[i][j]
)
),
R
);případně sloupců:
secti_sloupce(M) := block([r,c,S,i,j],
[r,c]: matrix_size(M),
S: makelist(0,i,1,c),
for i:1 thru r do (
for j:1 thru c do (
S[j]: S[j]+M[i][j]
)
),
S
);pak zavoláš příslušnou funkci s názvem matice jako parametr (ale nezkoušel jsem, snad to bude chodit :-) )
Offline
Sečtení všech řádků:
apply("+",subst("[",matrix,M));Sečtení všech sloupců:
apply("+",subst("[",matrix,transpose(M)));Sečtení všech řádků i sloupců:
apply("+",list_matrix_entries(M));Offline