利用matlab求如图积分
其中
要求输入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))
但是做出来是这样的
应该怎么改,或者应该怎么写啊?
你要看下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
推导: