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里面去?还是我需要另外写

追答

把程序发给我 我看看 772009506@qq.com

追问

已发 谢谢

追答

没事 我收到了正在看

温馨提示:内容为网友见解,仅供参考
第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函数

matlab怎么画出一个积分函数的图像
用matlab画积分函数的图像,可以来处理。通过for循环语句,求出对应ω的f(ω)的值,其实现方法为:w0=linspace(0,2.2*10^(-5),20);for i=1:length(w0);syms x w=w0(i);f = int(。。。);f0(i)=f;end plot(w0,f0);xlabel('ω'),ylabel('f(ω)')...

怎么用matlab画积分函数的图像
用matlab绘制这类复杂的积分函数图形,应采用循环语句求出,当T为某值时的C值。实现方法:x=20:1:70;for i=1:length(x)T=x(i);C(i)=fun_ex(T);end T=x;plot(x,C,'*-'),grid on;title('T--C(T)曲线图');xlabel('T');ylabel('C(T)');运行结果 ...

matlab怎么画积分函数
用matlab画积分函数的图像,可以来处理。通过for循环语句,求出对应ω的f(ω)的值,其实现方法为:w0=linspace(0,2.2*10^(-5),20);for i=1:length(w0);syms x w=w0(i);f = int(。。。);f0(i)=f;end plot(w0,f0);xlabel('ω'),ylabel('f(ω)')...

用matlab画积分图像
matlab 积分图像可以来实现。其方法利用for循环语句求解每一个(d,y)的对应值,然后用plot绘出其积分图像。d0=0:0.1:3.1;n=length(d0);for i=1:n d=d0(i);R=0.3*d+1;syms x eq=2*x\/R^2.*exp(-x.^2\/R^2).*acos((x.^2+0.1).\/(2*x)); %eq=@(x)2*x\/R^2.*...

怎样使用MATLAB画椭圆积分函数?
如何使用MATLAB画椭圆积分函数的图形,为了方便计算椭圆积分,假定λ=1;a=1;ε0=1,则该图形的绘制可以按照下列方法来实现。1、为了方便调用椭圆积分函数,需创建一个自定义函数ellipticfun(x,z),其内容为 K2=4*a*x\/(x^2+a^2+z^2+2*a*x);func=@(phi)1.\/sqrt(1-K2*sin(phi).^2);...

用matlab画积分图像?
1、确定变上限的范围,如x0=[1,2,3,4,5,6,7,8,9,10,50,100,500,1000,5000,10000,50000,100000,500000,1000000];2、用for循环语句,求出每个x值对应的y值 3、再用plot函数,绘出其积分图像 4、求解代码 x0=[1,2,3,4,5,6,7,8,9,10,50,100,500,1000,5000,10000,50000,100000,...

用matlab如何画函数的图像?
步骤如下 1、打开MATLAB软件,如图所示。2、建立一个脚本文件,具体方法如图所示。3、定义变量。4、建立循环,求解分段函数。5、采用以下指令画图。6、画出的图片如图所示。

matlab变积分函数图像怎么画啊
用matlab绘制变积分函数图像的方法,先用for循环语句求出其x对应于y的数值,然后用plot函数绘制其图像。按上述方法编程,可以得到给出变积分函数的图像。

matlab怎么画sinint()?
sinint()是正弦积分函数,即si(x)。那如何用matlab来画正弦积分函数的图像。可以通过下列几种方法来实现:方法一,用plot法。该法用for循环语句和sinint()函数,求解出x的积分值I(x),然后用plot函数绘出其函数图像。即 x=-4*pi:pi\/10:4*pi;for i=1:length(x)SI(i)=sinint(x(i));end ...

matlab 做积分函数曲线
就数值积分函数quad或integral而言,其内部包含了对边界点出现NaN值的处理,例如quad采取的做法是把边界点进行微调eps*(b-a),以试图避免NaN。integral函数也有类似的处理。这也是类似下面的积分 quad(@(x)sin(x).\/x,0,1)能够计算的原因(否则在x=0处会出现NaN)。但数值积分函数对边界点所做的...

相似回答