声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 893|回复: 5

[综合讨论] 计算数值积分的程序出了错,请帮忙看看

[复制链接]
发表于 2007-5-9 12:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
被积函数为-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
回复
分享到:

使用道具 举报

发表于 2007-5-9 13:17 | 显示全部楼层
原帖由 fajessmi 于 2007-5-9 12:51 发表
被积函数为-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文件的区别和用法
发表于 2007-5-9 13:38 | 显示全部楼层
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之

评分

2

查看全部评分

 楼主| 发表于 2007-5-9 14:06 | 显示全部楼层
不是,这些参数都是已知的数值,我想要得到的是这个函数在k到k+2pi上的积分值,能写个过程让我参考下吗?
发表于 2007-5-9 14:13 | 显示全部楼层
已经写的很清楚了。建议编程的时候多用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;
了吗?
 楼主| 发表于 2007-5-9 14:53 | 显示全部楼层
恩,知道了,谢谢你,可能有些小问题,不能运行,我去调试调试下。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-10-3 10:43 , Processed in 0.068178 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表