matlab中进行数值积分时出现了错误

对f=exp(-(log(t)-u).^2./(2.*d.^2))./d进行数值积分,其中u,d为未知参数,积分结果中带着u,d即可,积分上下限0,4

d=0.05
t=0:d:4
Q(i)=d*cumtrapz(t,f)
这样写,出现错误:
Undefined function 'max' for input arguments of type 'sym'.

Error in cumtrapz (line 45)
perm = [dim:max(length(size(y)),dim) 1:dim-1];

Error in Untitled6 (line 12)
Q(i)=d*cumtrapz(t,f)

第1个回答  2015-12-12

对于你的问题,可以这样来进行进行数值积分,但未知参数u,d应各事先假设某一数值。然后在计算f值。

syms t

u=1, d=0.05

z=int(exp(-(log(t)-u).^2./(2.*d.^2))./d,0,4)

f=vpa(z,5)

追问

我后面还要计算u d,所以不能提前赋值,我想要结果是含u d的式子

追答

要么这样,保留变量u,给定d,进行数值计算。即

syms t u,d=0.05;y=int(exp(-(log(t)-u).^2./(2.*d.^2))./d,'t',0,4)

y =

1/2*pi^(1/2)*exp(u)*exp(1/800)*2^(1/2)-1/2*erf(-20*2^(1/2)*log(2)+10*2^(1/2)*u+1/40*2^(1/2))*pi^(1/2)*exp(u)*exp(1/800)*2^(1/2)

要么这样,保留变量u,给定d,进行数值计算。即

syms t u,d=0.05;y=int(exp(-(log(t)-u).^2./(2.*d.^2))./d,'t',0,4)

y =

1/2*pi^(1/2)*exp(u)*exp(1/800)*2^(1/2)-1/2*erf(-20*2^(1/2)*log(2)+10*2^(1/2)*u+1/40*2^(1/2))*pi^(1/2)*exp(u)*exp(1/800)*2^(1/2)

第2个回答  推荐于2016-08-03
你好!

clc
syms t u
f=exp(-(log(t)-u)^2/(2*d^2))/d;
t=0.05;
x=0:t:4;s=0;
for i=2:length(x)
s=s+exp(-(log(t)-u)^2/(2*x(i)^2))/x(i);
end
simplify(s)追问

s是我定义的f吗,d为什么换成x(i)

追答

积分用的是矩形积分,s就是你想要的

追问

我想问d哪里去了,t是自变量,u,d是参数,结果中应该带u,d的。

本回答被提问者采纳
相似回答