Использование команды fsolve в MATLAB

Как решить такие уравнения?

(-1.5/w)*sin(w*t) + 1.5*t - 0.45 = 0  

Знаю это:

w = sqrt(10)

Спасибо за вашу помощь.


person user1359539    schedule 26.04.2012    source источник


Ответы (2)


Вы можете решить эту группу уравнений из 2 уравнений следующим образом:

solution = solve('w = sqrt(10)', '(-1.5/w)*sin(w*t) + 1.5*t - 0.45 = 0')

Чтобы проверить решение:

solution.t
ans =
0.59963230021859138687907507892006

solution.w
ans =
3.1622776601683793319988935444327

Чтобы убедиться, что решение работает:

(-1.5/solution.w)*sin(solution.w*solution.t) + 1.5*solution.t - 0.45
ans =
0.0
person nrz    schedule 26.04.2012

РЕДАКТИРОВАТЬ: решение nrz верное.

Один из способов — явно оценить функцию и построить график. Попробуйте следующий код в Matlab.

w = sqrt(10); t=(-100:0.01:100); Пусть, R=(-1.5/w)*sin(w*t) + 1.5*t - 0.45;

Затем,

plot(t,R,'k')
 axis square;
 grid on;

Вы получите Рисунок-1;

Рисунок 1

`При приближении к (0,0) вы увидите следующую структуру графика (Рисунок-2).

Рисунок 2

Выше я представил численное решение этой задачи. Хотя в Matlab есть еще один метод (символическая алгебра). Но Matlab в первую очередь предназначен для численных вычислений и численного решения задач. Matlab очень не подходит и медленный для решения символических задач. Хотя настоящий вопрос представляет собой очень небольшую проблему, и в Matlab также не возникнет проблем с использованием символьных вычислений, но все же рекомендуется решать задачу численно в Matlab и символически в mathematica/maple и т. д.

person Abhinav    schedule 26.04.2012
comment
Но в случае, если вам нужно решить символьные уравнения внутри более крупной программы MATLAB (решение уравнения является лишь промежуточным этапом), вероятно, более удобно решать их с помощью MATLAB, а не вызывать Mathematica/Maple/и т.д. - person nrz; 27.04.2012
comment
@nrz Я обновил его. пожалуйста, прочтите первую строчку моего ответа. :) - person Abhinav; 27.04.2012