Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Tohle bych potreboval do matlabu
A = {{6, 7, 1, 5, 1, 1, 1}, {2, 5, 0, 3, 0, 1, 1}, {6, 5, 1, 4, 1, 0,
1}}; (*zadaná matice*)
b = {9, 5, 5}; (*zadaný vektor*)
m = Dimensions[A][[2]]; (*počet sloupců*)
n = Dimensions[A][[1]]; (*počet řádků*)
seznamBazi =
Subsets[Range[
m], {n}]; (*množina všech výběrů n prvků z množiny {1..m}, tj. \
všech bází B; permutace téže báze nejsou zahrnuty*)
VyberSloupce[mat_, baz_] :=
Table[mat[[i, baz[[j]] ]], {i, n}, {j,
n}]; (*vrátí matici Subscript[A, B] při dané bázi B*)
ZjistiPripustnost[x_] :=
Catch[For[i = 1, i <= n, i++, If[x[[i]] < 0, Throw[False] ] ];
Throw[True]]; (*pokud vektor obsahuje alespoň jeden záporný prvek, \
vrátí False, jinak vrátí True*)
PrevedNaReseni[x_, baz_] := (reseni = Table[0, {i, m}];
Do[reseni[[ baz[[j]] ]] = x[[j]] , {j, n}];
Return[reseni]); (*k danému Subscript[x, B]^B vrátí Subscript[x, \
B]*)
(*hlavní program*)
For[p = 1, p <= Binomial[m, n], p++, (*pro všechny báze*)
mojeBaze = seznamBazi[[p]];
mojeMatice = VyberSloupce[A, mojeBaze];
Print["B=", mojeBaze]; (*vypiš uvažovanou bázi*)
Print["\!\(\*SubscriptBox[\(A\), \(B\)]\)=",
MatrixForm[mojeMatice]]; (*vypiš příslušnou Subscript[A, B]*)
If[MatrixRank[mojeMatice] == n, invMat = Inverse[mojeMatice];
Print["\!\(\*SuperscriptBox[SubscriptBox[\(A\), \(B\)], \
\(-1\)]\)=", MatrixForm[invMat]]; xB = invMat.b;
Print["\!\(\*SuperscriptBox[SubscriptBox[\(x\), \(B\)], \(B\)]\)=",
xB]; If[ZjistiPripustnost[xB],
xReseni = PrevedNaReseni[xB, mojeBaze];
Print["\!\(\*SubscriptBox[\(x\), \(B\)]\)=", xReseni],
Print["\!\(\*SubscriptBox[\(X\), \(B\)]\) není přípustné \
řešení."]],
Print["\!\(\*SubscriptBox[\(A\), \(B\)]\) je singulární."]];
Print[]; (*pokud je Subscript[A, B] regulární, vytvoří se Subscript[
A, B]^-1 a Subscript[x, B]^B a vypíší se;
pokud je příslušné Subscript[x, B] přípustné, vypíše se;
jinak se vypíše, která podmínka není splněna*)
];
Offline
↑ SoniCorr:
Musíš vložit package ToMatlab.m do složky kde to máš nainstalovaný Directory/Applications a potom příkazem ToMatlab[] vytvoříš matlabovský soubor...
jenom cituji co jsem vygooglil. Nemám s tím zkušenosti...
Offline
podarilo se mi to nejak spustit, ale problem je : Syntax::sntx: Invalid syntax in or before
"MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Fri Sep 27
13:40:47 2013
^" (line 1 of "ToMatlab.m"). nezbyva mi asi nic jinyho nez se matlab naucit.
Offline