• Support PF! Buy your school textbooks, materials and every day products Here!

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

  • Thread starter ko_kidd
  • Start date
  • #1
21
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.
 

Answers and Replies

  • #2
The Electrician
Gold Member
1,249
155
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.
 
  • #3
21
0
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}]
 
  • #4
The Electrician
Gold Member
1,249
155
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
 

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

  • Last Post
Replies
2
Views
8K
  • Last Post
Replies
4
Views
1K
  • Last Post
Replies
2
Views
1K
  • Last Post
Replies
6
Views
29K
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
10
Views
8K
  • Last Post
Replies
1
Views
984
  • Last Post
Replies
20
Views
4K
  • Last Post
Replies
2
Views
932
Top