matlab怎么画出一个积分函数的图像??求救

我的被积函数是这么定义的
function y=ein(x)
global wp1 t wp2 w0 r Em pm L K h miu wg T kb ree w fq;
y=((x-fq).^0.5./x).*(1-1./(exp((h*x-miu)/(kb*T))+1)).*(x.^2-fq^2+ree^2-1i*2*ree*fq)./((x.^2-w^2+ree^2).^2+4*fq^2*ree^2);
其中x是积分变量 fq才是自变量 在主程序里想用

y=quad('ein',1,10) 来计算
自变量是global fq=350:1:1000

想最后用plot画fq与y的图像

但是计算过程中报错 fq无论是用点乘还是直接乘都不行

求大神帮忙! 就是想做出这个积分函数的图像
我弄到半夜了也没成功。。。。

本人matlab初学小白

解答成功必追高分!

plot作图基本的两种输入方式
(1)plot(y),这个y是一个矩阵,n行m列的话,一共会画出m条,每条n个点
(2)plot(x,y),x与y是同维矩阵,比如 同是1行n列,或者同是n行1列,都能作图,只要能找到x与y一一对应的点就行,如果x与y的元素个数不能一一对应(比如不同维),那就做不出来图的
你现在workplace里看一看fp与y的储存形式,起码应该是矩阵。。。
要是函数绘图 ,有自己单独的绘图指令:fplot,基本用法是
fplot('fun',[xmin,xmax])追问

现在我计算不出y 可能是因为我的自变量fq=350:1:1000是向量形式 在计算y=quad('ein',1,10) 时积分内一些fq^2的运算无法进行 我改成fq.^2也不行 能帮忙想想办法吗

追答

你的那些全局变量得赋值啊,我看你的式子太乱,给你举个简单的例子
比如这个程序
function y=chengfa(a)
b=rand(1.10);
y=a.*b;
注意,在这里面,a是自变量,不是你想指定哪个作为自变量的。
在命令窗口输入
a=rand(1,10);%都是随机给的
y=chengfa(a)
就能输出y的值,得到一个y的一行10列的矩阵。另一个例子
function y=chengfa(a)
y=a*sin(a)/2;
你在命令窗口直接输
fplot('chengfa',[1,10]),就能得到a从1到10的函数图象。

追问

赋值了 我只列出了一部分代码
我现在如果把fq设置成一个数 y=quad('ein',1,10) 可以积分出结果 fq作为积分里的一个参数

但是我现在是想算出当自变量fq从350到1000时,y对应的积分值 然后画图 这时候我写fq=350:1:1000 积分就无法进行了 怎么改呢?

追答

对于fun来说 你的y=ein(x),这个x就是自变量,你的积分 y=quad('ein',1,10) 运行条件是 除x以外的所有值都是已知的,这个积分的意思是x从1到10积分,积出来是一个数 ,你的意思是不是想把fp作为一个参数,求fp=350,fp=351...下的x从1到10的积分值啊 如果不是,就是想把fp作为自变量,那x得赋值,把ein=(x)变成ein(fp),要是把fp作为一系列的参数。。。那就得用大循环了,
for fp=350:1000

在每一个fp的情况下运行一遍你的积分函数,得到一个相应的y,用y(fp)得到这个矩阵 ,应该是可以的
你试试吧

追问

是的 我就是想用fp作为自变量 x只是一个积分变量
把ein=(x)变成ein(fp)? 那积分变量不是变成参数fp了吗?

追答

那就是在外边加大循环了
for fp=350:1000
y(fp)=quad....
end
能得到 在fp变化的时候 每个fp都能到一个对x积分的结果 y 这样对吗?

追问

我按你的写了循环 然后被积函数的文件ein.m里写的是
function y=ein(x)
global h miu T kb ree;
y=....(一个与global参数和fq有关的函数)
报错Undefined function or variable 'fq'.
是fq并没有作为参数传递到ein.m里面去?还是我需要另外写

追答

把程序发给我 我看看 [email protected]

追问

已发 谢谢

追答

没事 我收到了正在看

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-10
10sin(0.03k) Int exp(-0.08(r-1)^2) dr。

程序如下:

%用 MATLAB 算 Int exp(-0.08(r-1)^2 dr 这个积分
F = @(r)exp(-0.08*(r-1).^2);
R = 25;
Q = quad(F,0,R);

%然后再在结果上乘以 10sin(0.03k) 的部分
k = 1:628;
F1 = 10*sin(0.03*k) * Q;
plot(F1);

结果仍旧是一个sin函数
相似回答