Странное поведение с векторными операциями в MATLAB
У меня есть формула
F = (-k.^(3/2) .* sqrt(4 .* c .* x + k) + 2 .* x .* k .* c + k.^2) / (2 .* c)
и я пытаюсь построить F для диапазона значений c для константы x и k следующим образом:
x = 0.01;
c = 10000:10000:100000;
k = 100000;
F = (-k.^(3/2) .* sqrt(4 .* c .* x + k) + 2 .* x .* k .* c + k.^2) / (2 .* c)
В этот момент я предположил, что matlab даст мне вектор того же размера, что и c, но он просто напечатает:
F =
47.1563
Построение F по диапазону значений k для констант c и x работает нормально, но вышеописанное - нет.
Кто-нибудь может объяснить это для меня?
1 ответ
Решение
Используйте поэлементное деление ./
, похожий на .*
F = (-k.^(3/2) .* sqrt(4 .* c .* x + k) + 2 .* x .* k .* c + k.^2) ./ (2 .* c)
/
используется для разделения правой матрицы: A/B
эквивалентно mrdivide(A,B)
, которая решает систему (линейных) уравнений x*B = A
за x
, в то время как ./
это просто стихийное деление.