
matlab多参数数值积分
quadl()这个函数积分能有几个参数呀如y=3*x.^2+t给定t这个quadl肯定能求,但是y=3*x.^2+t1+t2+t3;用quadl积分总是报错,Tooman...
quadl()这个函数积分能有几个参数呀
如y=3*x.^2+t
给定t这个quadl肯定能求,
但是y=3*x.^2+t1+t2+t3;
用quadl积分总是报错,
Too many input arguments.怎么才能实现多参数的数值积分
z=quadl(@(x)myfun(x,t1,t2,t3),0,1,[],[],t1,t2,t3);
function y=mufunction(x,t1,t2,t3)
y=y=3*x.^2+t1+t2+t3; 展开
如y=3*x.^2+t
给定t这个quadl肯定能求,
但是y=3*x.^2+t1+t2+t3;
用quadl积分总是报错,
Too many input arguments.怎么才能实现多参数的数值积分
z=quadl(@(x)myfun(x,t1,t2,t3),0,1,[],[],t1,t2,t3);
function y=mufunction(x,t1,t2,t3)
y=y=3*x.^2+t1+t2+t3; 展开
1个回答
展开全部
你要是只对x做一维积分,只需要给出x的范围就行,就是只需要给出积分限
可以改成
z=quadl(@(x)myfun(x,t1,t2,t3),0,1);
当然t1,t2,t3前面也需要给出定值
我说的定值,就是代入参数,就是子函数mufunction的输入参数,就是说t1,t2,t3不要也是积分变量就可以
另外,你的子函数是mufunction
而你quadl调用时,用的是myfun
你看我的例子
子函数是:
function Exf = Exfun(theta,k,rp,thetap )
Exf=sqrt(cos(theta)).*sin(theta).*(1+cos(theta)).*exp(-1i*k*rp.*cos(thetap).*cos(theta)).*besselj(0,-k*rp.*sin(theta).*sin(thetap))...
+sqrt(cos(theta)).*sin(theta).*(1-cos(theta)).*exp(-1i*k*rp.*cos(thetap).*cos(theta)).*besselj(2,-k*rp.*sin(theta).*sin(thetap));
end
调用时:
>> x=quadl(@(theta)Exfun(theta,5,7,pi),0,pi)
x =
-0.0256 + 0.0517i
可以改成
z=quadl(@(x)myfun(x,t1,t2,t3),0,1);
当然t1,t2,t3前面也需要给出定值
我说的定值,就是代入参数,就是子函数mufunction的输入参数,就是说t1,t2,t3不要也是积分变量就可以
另外,你的子函数是mufunction
而你quadl调用时,用的是myfun
你看我的例子
子函数是:
function Exf = Exfun(theta,k,rp,thetap )
Exf=sqrt(cos(theta)).*sin(theta).*(1+cos(theta)).*exp(-1i*k*rp.*cos(thetap).*cos(theta)).*besselj(0,-k*rp.*sin(theta).*sin(thetap))...
+sqrt(cos(theta)).*sin(theta).*(1-cos(theta)).*exp(-1i*k*rp.*cos(thetap).*cos(theta)).*besselj(2,-k*rp.*sin(theta).*sin(thetap));
end
调用时:
>> x=quadl(@(theta)Exfun(theta,5,7,pi),0,pi)
x =
-0.0256 + 0.0517i
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询