matlab求复杂定积分

利用matlab求如图积分

img

其中

img

要求输入F0,能近似输出结果
请问这个代码怎么写啊,写了好久,但是都不对。
这是我写的:
1、定义函数文件,其中函数名称为I0:
function y=I0(x)
f=@(theta) exp(x.*cos(theta));
y=quad(f,0,pi)/pi;
end

2、定义函数文件,其中函数名称为FR:
function h=FR(z)
f=@(R,r) R.exp(-(R.^2+r.^2)./(4z.^2)).*r.*I0(R.r./(2z.^2));
h=dblquad(f,0,1,0,1);
end

3、编写m文件,输入F0,得到近似结果:
clear all,clc
F0=input('F0=');
f=@(o) FR(o)./(o.^2);
result=quad(f,0,sqrt(F0))
但是做出来是这样的

img

应该怎么改,或者应该怎么写啊?

你要看下f=@(theta) exp(x.*cos(theta)); 你这个输出

重写后的正确程序:

clc,clear;
 
syms x1 x2 x3 x4
f1 = exp((x2*x3/(2*x1^2))*cos(x4));
v1 = int(f1,x4,0,pi) 
f2 = exp(-(x2^2+x3^2)/(4*x1^2))*v1*x3;
v2 = int(f2,x3,0,1)
f3 = x2*v2;
v3 = int(f3,x2,0,1)
f4 = v3/(x1^2)/pi;
v4 = int(f4,x1,0,2)  %最后一个2代表Fo
f = vpa(v4,3)

Fo取2时算出来约等于0.63

img

推导:

img