Matlab: Solving equation with variable in Bessel function
显示 更早的评论
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.
回答(2 个)
Carles Molist
2018-11-26
0 个投票
Hi, did you find a solution to that problem? Carles
Jorge Aranda
2023-6-8
0 个投票
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.
类别
在 帮助中心 和 File Exchange 中查找有关 Bessel functions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!