Matlab: Solving equation with variable in Bessel function
Show older comments
Hey, everyone. Can you help me with my problem? I want matlab solve the equation with variable in the bessel functions. Here is my program code.
%Given
Mu=0.5;
E1=7*(10^6);
E2=2.5*(10^8);
R=0.0795;
h=0.008;
Eta=1875;
Fz=2000;
%%Variable
Vb=1;
a_=((2*(1-Mu)*R*Fz)/(pi*E1))^(1/2);
syms a_h a_hL
a_h=solve(1+(2*Vb*Eta/(a_h*(E1+E2)))*(1/((besselk(0,(a_h*E2/(Vb*Eta))))/(besselk(1,(a_h*E2/(Vb*Eta))))+besseli(0,(a_h*(E1+E2)*E2/(Vb*Eta*E1)))/besseli(1,(a_h*(E1+E2)*E2/(Vb*Eta*E1)))))-((a_/a_h)^2));
a_hL=solve(1+(2*E2*E2*a_hL/(Vb*Eta*(E1+E2)))*(1/((besselk(0,(a_hL*E2/(Vb*Eta))))/(besselk(1,(a_hL*E2/(Vb*Eta))))+besseli(0,(Vb*Eta*(E1+E2)/(a_hL*E2*E1)))/besseli(1,(Vb*(E1+E2)*Eta/(a_hL*E2*E1)))))-((a_/a_hL)^2));
The program gives me answer "Warning: Explicit solution could not be found".
I also tried with fzero function:
a_h=fzero(@(a_h)(1+(2*Vb*Eta/(a_h*(E1+E2)))*(1/((besselk(0,(a_h*E2/(Vb*Eta))))/(besselk(1,(a_h*E2/(Vb*Eta))))+besseli(0,(a_h*(E1+E2)*E2/(Vb*Eta*E1)))/besseli(1,(a_h*(E1+E2)*E2/(Vb*Eta*E1)))))-((a_/a_h)^2)),1);
The program gives error "Function value at starting guess must be finite and real.",whereas I gave guess value 1.
The equations should be solvable, (I hope so) as all data was taken from paper and lab experiment. What am I doing wrong? Hope to receive any advice regarding to the problem. Thank you in advance.
Answers (2)
Carles Molist
on 26 Nov 2018
0 votes
Hi, did you find a solution to that problem? Carles
Jorge Aranda
on 8 Jun 2023
0 votes
I would need an answer to this question. How to solve a non linear eq that contains bessel functions and where the solutions has no real values.
Categories
Find more on Bessel functions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!