FZERO or some method of computing the intercept points in MATLAB or Mathematica

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 9K views
ko_kidd
Messages
21
Reaction score
0

Homework Statement



General problem--I don't know how to solve for the characteristic equation in MATLAB or Mathematica to find the solution of an equations such as

Homework Equations



cosh(x)*cos(x) = x

(I know you can re-write this equation but it's just an example)

The Attempt at a Solution



In Mathematica I tried:

In[2]:= FindRoot[cos[x]*cosh[x] == x, {x, 0}]

During evaluation of In[2]:= FindRoot::nlnum: The function value \
{0.+cos[0.] cosh[0.]} is not a list of numbers with dimensions {1} at \
{x} = {0.}. >>

Out[2]= FindRoot[cos[x] cosh[x] == x, {x, 0}]

In[4]:= Solve[cos[x]*cosh[x] == x, x]

During evaluation of In[4]:= InverseFunction::ifun: Inverse functions \
are being used. Values may be lost for multivalued inverses. >>

During evaluation of In[4]:= InverseFunction::ifun: Inverse functions \
are being used. Values may be lost for multivalued inverses. >>

During evaluation of In[4]:= Solve::tdep: The equations appear to \
involve the variables to be solved for in an essentially \
non-algebraic way. >>

Out[4]= Solve[cos[x] cosh[x] == x, x]Is there some method of doing this in either program? I know I can get intersection points on my calculator but that defeats the purpose of using these programs.
 
Physics news on Phys.org
You used this:

"FindRoot[cos[x]*cosh[x] == x, {x, 0}]"

SImply use capitals for the first letter of the functions like this:

"FindRoot[Cos[x]*Cosh[x] == x, {x, 0}]"

and you'll get x -> 0.893796

Built-in functions in Mathematica all begin with capitals.
 
Ah thanks for the reminder:

question though, what if I have something more complex like:

In[123]:= FindRoot[1 - Cos[x]*Cosh[x] == x*Sin (x)*Cosh (x), {x, 0}]

During evaluation of In[123]:= FindRoot::nlnum: The function value \
{0.+0. Cosh Sin} is not a list of numbers with dimensions {1} at {x} \
= {0.}. >>

Out[123]= FindRoot[1 - Cos[x] Cosh[x] == x Sin x Cosh x, {x, 0}]
 
Your problem is that in the part of the expression to the right of the ==, you have used round parentheses to surround the variable x. Change them to square brackets, and it should work. I get a solution of {x -> 0.}.

FindRoot[1 - Cos[x]*Cosh[x] == x*Sin [x]*Cosh [x], {x, 0}]

If I use a starting point of 3, like this:

FindRoot[1 - Cos[x]*Cosh[x] == x*Sin [x]*Cosh [x], {x, 3}]

I get a solution of 2.74914