in desperate need for help (Trigonometric equation)

Good people of the internet,
I really need your help in solving this equation:
>> al=(((10^4+g^4)^0.5 -10^2)^0.5)*L;
>> bl=(((10^4+g^4)^0.5 +10^2)^0.5)*L;
>> char=2*al*bl*(1-cos(al)*cosh(bl))+(bl^2-al^2)*sin(al)*sinh(bl)
eqn=char==0
- sin(L*((g^4 + 10000)^(1/2) - 100)^(1/2))*sinh(L*((g^4 + 10000)^(1/2) + 100)^(1/2))*(L^2*((g^4 + 10000)^(1/2) - 100) - L^2*((g^4 + 10000)^(1/2) + 100)) - 2*L^2*(cos(L*((g^4 + 10000)^(1/2) - 100)^(1/2))*cosh(L*((g^4 + 10000)^(1/2) + 100)^(1/2)) - 1)*((g^4 + 10000)^(1/2) - 100)^(1/2)*((g^4 + 10000)^(1/2) + 100)^(1/2) == 0
It's the characteristic equation of a 4x4 matrix. The infinite sollutions of this equation represent the dimensionless eigenfrequencies g(L) of an oscillating, clamped clamped beam with axial load.
My aim is to find the first 4 (lowest) eigenfrequencies depending on the length of the beam.
I've tried everything I can think of I am a beginner and I find it really difficult.
fsolve requires a guess, and I can't predict the periodicity of this function
I tried to get an analytical sollution with
s=solve(eqn,g,'return conditions',true)
Please someone enlighten me.
Thanks in advance.

4 Comments

Well for one thing, char is a keyword, so you don't want to use that as the name of your variable.
define lowest in this context.
You use g^4 everywhere .you could replace it with nonnegative G for searching but every solution in G would also imply -G and i*G and -i*G so if there are infinite solutions then the largest of them also implies the one with greatest negative value . Therefore if there are infinite solutions then the four smallest are four negative infinities.
When L is an integer, there appears to be L+1 positive roots for g^4 (counting 0). The largest root can be on the order of 14000. The slopes are numerically relatively steep, making it difficult to find numeric solutions for given L.
@solo gouda: The nature of this forum is to share questions and solutions. After an answer was given by a member of the community, it is impolite to remove essential parts of the question, because the thread becomes meaningless afterwards.

Sign in to comment.

Answers (1)

Hi solo,
In situations like this it never hurts to plot out the function to see the zero crossings. I don't think people do that enough. Plotting gives you an idea of the regions to specify for the fzero or fsolve functions.
The amplitude of the function y (your char) rapidly increases with g. Since you are only trying to find the zero crossings, it helps to almost-normalize the function by dividing by cosh(bl) which is rapidly increasing in the same manner. That works since cosh is never zero for real argument.
L = 5;
g = 0:.001:14;
al=(((10^4+g.^4).^0.5 -10^2).^0.5)*L;
bl=(((10^4+g.^4).^0.5 +10^2).^0.5)*L;
y = 2*al.*bl.*(1-cos(al).*cosh(bl))+(bl.^2-al.^2).*sin(al).*sinh(bl);
y = y./cosh(bl);
figure(1)
plot(g,y)
I believe that there are an unlimited number of roots for most positive values of L, probably all of them. For L=5 there are 17 zero crossings for g<14, not counting the one at g=0. As you would expect, as L decreases the frequencies of the roots increase and vice versa.

1 Comment

you are a true hero of the internet. i tried to do complex things and didnt think of the 1-1 of math. Plots. thank you for pointing out the obvious. have a nice one

Sign in to comment.

Categories

Asked:

on 5 Jan 2019

Commented:

Jan
on 16 Jan 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!