Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

solve the Bessel function ...plzz.

Status
Not open for further replies.

rafa040

Newbie level 6
Newbie level 6
Joined
Dec 25, 2012
Messages
13
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,372
Capture.PNG

left side is a bessel function of zero order.

find the values of Vo
for
  • Pinc = -25 , -15 , -5 , 5 , 15 , 25 dbm
  • t := 25 in °C
  • Io := 0 external bias, A
  • Is := 54 • 10-9 saturation current, A
  • Rs := 7 in Ω
  • Λ := 38.5
  • n := 1.12 Ideality factor
  • Rg := 50 Generator impedance, in Ω
  • RL := 500 in Ω
- - - Updated - - -

put Io=0 on right side of eqn 2

kindly tell me which kind of bessel function is this ..??

thanks in advance
cc.PNG

8201 is the plot for Pinc VS Vo i need to get this plot
 

I've tried to solve you problem. I used scilab, but I think you can also use matlab or Mathcad or any other math computing code.

Code:
function y=F(x)
	
	PincdBm=25;
	Pinc=10^(PincdBm/10-3);  // conversion to W
	Io=0;
	Is=54e-9;
	Rs=7;
        L=38.5;
	n=1.12;
	Rg=50;
	RL=500;

// besseli is the modified bessel function
	y=besseli(0,L/n*sqrt(8*Rg*Pinc))-(1+Io/Is+x/(RL*Is))*exp((1+(Rg+Rs)/RL)*L/n*x+L/n*Rs*Io);

endfunction

err=1e-3;

x0=0.6735;	// first guess
maxiter=5000;	// max iterations
iter=0;

delta=1e-2;

while (abs(F(x0))>err)
	
	iter=iter+1;

	if (F(x0-delta)*F(x0+delta) < 0) then
		     delta=delta/1.5;
	elseif ((F(x0+delta)-F(x0-delta))>0) then
		     x0=x0-delta;
		     delta=delta*2;
	else
		     x0=x0+delta;
		     delta=delta*2;
	end

	if ((iter>=maxiter)&(F(x0-delta)*F(x0+delta) < 0)) then
		     break;
	end

end

x0 // print the estimated root
delta // print the error range (the true zero is between x0-delta and x0+delta)

Since the equation is strongly non-linear and reaches huge numbers it's not easy to solve it by means of secant or Newton-Rapson methods. I've preferred to use bisection algortithm. You can notice that for Pinc>0 dBm the error specification is not fulfilled and you have very high values of F(x), instead of zero. However since the stop condition, after the max iterations are reached, take into account that must be F(x-delta)*F(x+delta) this means the zero (since the function is continous) have to be between x-delta and x+delta.
So you can take as correct the calculated x (I called x0) with error delta.

I've found the following values:
(-25,11uV); (-15,242uV); (-5,61mV); (5,0.67); (15,2.8); (25,9.66)

Please check there are no errors in my code.
 
Last edited:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top