Witam, mam w skrypcie w Octave napisany takie wzór
b=-2*t;
c=t.^2;
d=4*c;
e=exp(1).^b
a2=d*e
i error skrypt: operator *: nonconformant arguments (op1 is 1x26, op2 is 1x26)
Proszę o pomoc :)
Kiedy wypisuje sobie w taki sposób, to widze, że te macierze są tej samej długości, więc skąd ten błąd?
a=(4*(t.^2))
b=exp(1).^(-2*t)
a2=a*b
Okej, mam.
a2=4.*t.^2.*exp(-2.*t)
Jeszcze jedno pytanie, czy trzeba dawać . przed znakiem mnożenia zawsze?
Nie, nie, nie!
Jak chcesz użyć mnożenia macierzowego - używasz operatora *. Mnoży on odpowiednie elementy macierzy ze sobą ze sprawdzeniem warunku o poprawności wymiarów.
Operator .* służy do mnożenia zwykłego. I tak np. dla
A = [1 2 3] B =[1;2;3] C = [1 2 3]
otrzymujesz
AB = 14
AC - niezgodność wymiarów
A.*C = [1 4 9]
Zastanów się czego chcesz użyć, bo bezmyślne wpisanie kropki to tylko 50 procent szansy na poprawne rozwiązanie.
Ja robisz a*b to masz 'standardowe' mnożenie macierzy, a jak zastosujesz operator a.*b to masz tak jakby mnożenie przez skalar, z tym że każdy element macierzy jest wymnażany przez inną wartość (z odpowiadającej komórki macierzy b).
Spójrz tutaj: http://stackoverflow.com/questions/10859917/what-does-operator-dot-mean
I zrób sobie prosty test typu
a=[1 2 3];
b=[1 2 3];
a.*b % [1 4 9]
a*b % nie wykona się ze względu na niepasujące wymiary macierzy
EDIT xfin mnie wyprzedził
Dzięki za wytłumaczenie, już rozumiem :)
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.