matlab解积分方程

请问下面的程序哪里出错了,该怎么改?clearsymstyxy=int(9*6.02*10^23*(t/300)^3*int(t^4*exp(x)/(exp(x)-1)^... 请问下面的程序哪里出错了,该怎么改?
clear
syms t y x
y=int(9*6.02*10^23*(t/300)^3*int(t^4*exp(x)/(exp(x)-1)^2,0,645/t),0,300)
solve(y-0)
double(ans)
y=int(9*6.02*10^23*(t/300)^3*int(t^4*exp(x)/(exp(x)-1)^2,0,645/t),0,300)
这行中的x全为t,而不是x
展开
 我来答
lhmhz
高粉答主

2019-10-27 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7263 获赞数:16990

向TA提问 私信TA
展开全部

题主给出的积分方程,可以用数值的方法来求出其数值解,然后绘出其图形。

现用辛普森法(Simpson numerical integration)和矩形法(Trapezoidal numerical integration)求出其数值解,然后进行比较。实现过程如下:

1、首先建立自定义函数

a=10.^(0.1*x);

fun=@(t,a)qfunc(sqrt(t))./a.*exp(-t./a);

2、利用for循环语句和quad积分函数,求出yi(xi)值。

for i=1:length(xdB)

。。。

y1(i)=quad(@(t)fun(t,a),0,100000); %辛普森法,用100000代替inf

。。。

t=linspace(0,100000,100000);

。。。

y2(i)=trapz(t,y); %矩形法

end

3、利用semilogy函数绘制图形

semilogy(x,y1,'r*-',x,y2,'k-')

4、求匹配度

5、按上述方法,编程程序,运行可得到如下结果

6、从图形可以看到,其匹配度为0.85043,XdB从0到30,其两条曲线愈来愈接近,其数值愈趋向于一致。

guigui134567
推荐于2016-03-07 · TA获得超过100个赞
知道答主
回答量:65
采纳率:0%
帮助的人:102万
展开全部

错误非常多!!!

  1. int(t^4*exp(x)/(exp(x)-1)^2,0,645/t) 这个积分的记过是inf,无穷大,直接导致

y=int(9*6.02*10^23*(t/300)^3*int(t^4*exp(x)/(exp(x)-1)^2,0,645/t),0,300)的结果为nan,即不确定

2.solve(y-0)  没有这种调用格式,一般是solve(y)

3.分析一下你这个积分

里面的积分int(t^4*exp(x)/(exp(x)-1)^2,0,645/t),对x进行积分,得到一个关于t的表达式(实际上为inf)

外层积分y=int(9*6.02*10^23*(t/300)^3*int(t^4*exp(x)/(exp(x)-1)^2,0,645/t),0,300),对t进行积分,得到的是一个数(实际上为nan),根本不是关于x的表达式,自然没有结果。

最有可能是你的积分表达式写错了。

希望采纳,设置为满意答案,谢谢。

追问
即使把积分区域改一下,改成如下式子
clear
syms t x
y=int(9*6.02*10^23*(t/300)^3*int(x^4*exp(x)/(exp(x)-1)^2,1,645/t),1,300)
solve(y)
double(ans)
这样仍然不对啊
追答
clear
syms t x
y=int(9*6.02*10^23*(t/300)^3*int(x^4*exp(x)/(exp(x)-1)^2,1,645/t),1,300)
double(y)
你可以看一下这个y的值:
ans =
2.0957e+27
是一个数,不是关于x的表达式。
估计是你的积分式子写错了。
希望采纳,设置为满意答案,谢谢。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式