计算数值积分的程序出了错,请帮忙看看
被积函数为-40*sin(x),积分下上限分别为k,k+2*pi,k的范围是0-2pi,我编了如下程序,结果出错,由于刚接触matlab,不知道错在哪里,请帮我看看,谢谢大家了。w0=1;
w=5;
Omg=2;
D=1;
b1=0.08;
b2=0.005;
E=0.2;
e=0.5;
function f=fx(x)
f=exp(-2.*((Omg-2.*w0).*x+E.*sin(x)./(2.*w0))./b2);
y=0;
for k=0:2pi;
g=k;
gl=k+2.*pi;
y=y+quad(fx,g,gl);
end
y 原帖由 fajessmi 于 2007-5-9 12:51 发表 http://forum.vibunion.com/forum/images/common/back.gif
被积函数为-40*sin(x),积分下上限分别为k,k+2*pi,k的范围是0-2pi,我编了如下程序,结果出错,由于刚接触matlab,不知道错在哪里,请帮我看看,谢谢大家了。
w0=1;
w=5;
Omg=2;
D=1;
b1=0.08;
b2=0.00 ...
建议先找本基础书看看,了解脚本文件和m文件的区别和用法 function y=fajessmi(w0,w,Omg,D,b1,b2,E,e)
%利用内嵌函数(nested function)结构建立被积函数
function f=fx(x)
f=exp(-2.*((Omg-2.*w0).*x+E.*sin(x)./(2.*w0))./b2);
end
%给y预分配存储空间,大小等于下面k的循环次数;
y=zeros(size(0:20));
%计算积分
for k=0:20
g=k*pi/10;
gl=g+2*pi;
y(k+1)=quad(@fx,g,gl);
end
%逐次累加y
y=cumsum(y);
end
把上面函数保存,运行
y=fajessmi(1,5,2,1,0.08,0.005,0.2,0.5)
应该是你想要的吧
不清楚的函数再help之 不是,这些参数都是已知的数值,我想要得到的是这个函数在k到k+2pi上的积分值,能写个过程让我参考下吗? 已经写的很清楚了。建议编程的时候多用m文件而少用脚本文件。虽然参数确定,但是还是要养成编写m文件的习惯,养成这样的习惯对你将来调试程序什么的都有很大好处。y=fajessmi(1,5,2,1,0.08,0.005,0.2,0.5)不就是固定参数w0=1;
w=5;
Omg=2;
D=1;
b1=0.08;
b2=0.005;
E=0.2;
e=0.5;
了吗? 恩,知道了,谢谢你,可能有些小问题,不能运行,我去调试调试下。
页:
[1]