我的被积函数是这么定义的
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初学小白
解答成功必追高分!
现在我计算不出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]
追问已发 谢谢
追答没事 我收到了正在看