2016-02-03 2 views
1

Я пытаюсь аппроксимировать решение уравнения x+sin(x) = -e^x вокруг точки x=-2. Я использовал линию:Использование команды Matlab fzero

fzero('x+sin(x) == -exp(x)', -2); 

Однако это дало мне неправильный ответ. Я считаю, что моя ошибка была с помощью == в выражении и должно быть:

fzero('x+sin(x)+exp(x)', -2); 

Может кто-нибудь объяснить рассуждение за этим?

+1

В дополнение к ответу, вы не должны использовать строки, если вашей версии Matlab не исполнилось 10 лет. Прочтите документацию/справку для 'fzero' и узнайте об анонимных функциях и функциях:' fzero (@ (x) x + sin (x) + exp (x), -2) '. – horchler

ответ

-7

Ответ лежит на названии функции. fzero (f, p) находит, где f == 0 вокруг точки p.

Для вашего первого примера вы спрашиваете, когда x+sin(x) == -exp(x). Когда это верно, функция, которую вы предоставили, будет выводить 1, что сделает fzero вывести любое значение, отличное от требуемого вами ответа.

+5

Вы не можете вычислить решение любого уравнения, просто вычитая 1 и используя 'fzero', чтобы найти корень, так как' fzero' ищет знаковые изменения, которые не будут возникать (результат сравнения может быть истинным или false, но не отрицательно). – dasdingonesin

+0

Это не имеет для меня никакого смысла: * «Если это так, функция, которую вы предоставили, будет выводить 1, что сделает fzero вывести любое значение, отличное от желаемого.» *. Можете ли вы пояснить, что вы подразумеваете под этим? Честно говоря, это пахнет коровьим навозом. – rayryeng

+1

Это, наверное, самый веселый способ свести на нет 500-летнюю алгебру. –