trl-008 发表于 2007-4-21 10:29

带很多参数的数值积分问题

原函数:f=exp(-(n.*w.^4+e).*(t-h)).*sin(sqrt(1./m.*(EI.*w.^4+K)-(n.*w.^4+e).^2).*(t-h)).*cos(w.*(x-v.*h))./sqrt(1./m.*(EI.*w.^4+K)-(n.*w.^4+e).^2)
其中w,n,h,t,EI,K,E,v,x,m,e是参数,并且只有w,x,t,h是未知的,剩下的是已知常量。我现在相对这个函数作二重积分。
w的变化范围:h的变化范围是,积出来的结果是带有x,t的函数表达式。
我用的是dblquad,结果老出错!
请教高手们,帮帮忙啊!!

dc1hawk 发表于 2007-4-21 10:42

你试试MAPLE 看行不?符号运算maple比较擅长

trl-008 发表于 2007-4-21 10:45

回复 #2 dc1hawk 的帖子

我刚接触MATLAB,我找找看,试一试吧,谢谢了

xjzuo 发表于 2007-4-21 14:44

用inline函数定义你的积分函数,注意参数传递就行了.

trl-008 发表于 2007-4-21 20:17

回复 #4 xjzuo 的帖子

我现在是别的参数都带进去了,就剩下四个参数,可是积分的时候老说有错误
你能不能给我编个例子,简单的就行,里面含有四个参数,对其中的两个积分!!并且其中一个的积分上限是另外两个中的一个!!
耽误你时间了,我已经整了好长时间了!谢谢了

xjzuo 发表于 2007-4-22 09:41

请先将你的处理及出错信息给出.
提示: 不要想着定义符号变量x,t,而是应该作它们的循环,求出f(x,t)矩阵, 即为所求.

trl-008 发表于 2007-4-22 12:32

回复 #6 xjzuo 的帖子

谢谢你啊!
作他们的循环!!还没做过,我查查看!!
我一直用 定义那些符号常量,然后直接积分!!然后老是出错

trl-008 发表于 2007-4-22 16:02

回复 #6 xjzuo 的帖子

clear;
>> syms w h t x;
>>f=@(w,h)5368709120000*exp((-78187/10000*w^4-3541/2500)*(t-h))*sin(7378697629483821/39614081257132168796771975168*(-525716783414231957084569600*w^4+13822958527618982820741906432-1762011944168135634699943936*w^8)^(1/2)*(t-h))*cos(w*(x-1667/100*h))/(-525716783414231957084569600*w^4+13822958527618982820741906432-1762011944168135634699943936*w^8)^(1/2);
>>Q = dblquad(f,pi,2*pi,0,pi)
??? Error using ===> innerintegral
Inputs to innerintegral must be floats, namely single or double.

Error in ==> dblquad>innerintegral at 79
Q = zeros(size(y), superiorfloat(fcl, xmax, y));

Error in ==> quad at 71
y = f(x, varargin{:});

Error in ==> dblquad at 58
Q = quadf(@innerintegral, ymin, ymax, tol, trace, intfcn, ...
高手,你能不能再帮我看看,我刚开始学,你说得方法我不太懂!能不能详细说一下,在此谢谢 你了

sffei 发表于 2007-4-22 17:00

dblquad是数值积分,函数里的参数要赋值

[ 本帖最后由 eight 于 2007-4-22 21:29 编辑 ]

trl-008 发表于 2007-4-23 16:16

回复 #9 sffei 的帖子

谢谢了!
那参数就是变量!!
这样的话是不是不可以用dblquad的方法了!
那用什么方法?
高手,帮帮忙
页: [1]
查看完整版本: 带很多参数的数值积分问题