Matlab求解未知数包含在定积分中的一元非线性方程,怎么写代码?

方程表达式如下,未知数x包含在积分表达式中,如何用MATLAB解出x的值?各路大神们,求指导!... 方程表达式如下,未知数x包含在积分表达式中,如何用MATLAB解出x的值?

各路大神们,求指导!
展开
 我来答
tianxiawulang
2014-01-12 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2600万
展开全部

1、因被积函数的形式,使用符号积分的方法应该不可行。

 

2、使用数值方法方法,定义函数

f=@(x)quadl(@(E)E.^2./(exp((E-x)/0.026)-1),0.9,3.4)-quadl(@(E)E.^2./(exp((E+x-3.04)/0.026)-1),2.5,3.4)-0.1527

这时x不宜出现在积分区间内,否则分母出现0,导致积分结果为无穷大(其实未必为无穷大,但数值积分方法存在这样的弊病)。

 

3、经试探,取x=0.85~0.9,绘制曲线

x=0.85:0.001:0.9;
plot(x,arrayfun(f,x))

可见在此区间内存在解。

 

4、使用fsolve求解得到的结果为0.9

>> fsolve(f,0.85,optimset('TolFun',1e-14,'TolX',1e-8))
Optimization terminated: relative function value changing by less
 than max(options.TolFun^2,eps) and sum-of-squares of function
 values is less than sqrt(options.TolFun).
ans =
    0.9000

使用fzero求解失败(得到NaN)。

 

5、经多次手工试探,较为准确的解为

>> f(0.8999796679293)
ans =
 -1.6582e-011

这种方法总感觉有些问题,但毕竟花了一些时间,写出来供楼主参考吧。

changjiaochong
2014-01-12 · TA获得超过201个赞
知道答主
回答量:96
采纳率:50%
帮助的人:25万
展开全部
warning:explicit integral could not be found.
很抱歉告诉你求不出来。。。也许你要用maple才行。只能把代码告诉你了:
syms a x
y=x*x/(exp((x-a)/0.026)-1);
int(y,x,0.9,3.4)
这里参数x变成了a,被积自变量E为x。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自肖帝岩单纯的海雀
2014-01-12 · TA获得超过483个赞
知道答主
回答量:49
采纳率:100%
帮助的人:23.8万
展开全部
把x用sym定义成符号变量,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式