如何象征性地整合f (T) = exp (E / (8.314 * T)通过分部积分或梯形方法?

7视图(30天)
我有一个函数在T必须集成的梯形。Eα是一个常数。谁能建议如何执行这样一个集成在matlab ?
因为这是一个指数inteagral没有唯一解,另一个选择是分部积分到n次,忽略第n个积分和假设条件到n - 1的解决方案。这是在matlab完成吗?
提前谢谢:)
5个评论
拉胡尔·拉梅什
拉胡尔·拉梅什 2021年8月6日
嗨,约翰。对不起。最后一个问题我想我删除之前问这个。我现在已经删除了。谢谢你的指出。

登录置评。

接受的答案

约翰D 'Errico
约翰D 'Errico 2021年8月6日
编辑:约翰D 'Errico 2021年8月6日
它是完全不真实的,没有唯一解。没有确切,解析解,可以写在根据代数形式只使用一个简单的加法,乘法,等等。这是一个非常不同的事情。
也是不真实的,它必须使用梯形集成方法。例如,它是微不足道的完成更准确地使用工具,如积分。然而,Ea必须被赋予一个值。只是说,Ea是一个常数是不够的。任何工具如梯形法则在这里也没有意义如果Ea不是一个已知的常数。你不可能知道如何近似的解决方案,如果你不知道这个常数的值。例如,如果Ea是一个相对大量与一个非常小的数,然后在结果有任何程度的准确性,您将需要使用不同的近似。
做一些分部积分是愚蠢的,当你决定放弃一些任意条款。我很抱歉,但它是。我认为这只是误解了分部积分等工具。
但要做到计算很简单,只要Ea可以指定。
格式长g
K = @ (T, Ea) exp (Ea. / (8.314 * T));
intval中=积分(@ (T) K (T) 3), 270290)
intval中=
20.0258016842926
所以相当准确,当Ea = = 3,积分是如图所示。没有什么非唯一的解决方案。和没有需要用梯形法则。我也可以这样做。但精度低得多的结果将是,除非我们使用大量的分approoximation梯形规则。以上是正确的吗?有多近?
信谊T
Ea =信谊(3);
vpaintegral (exp (Ea. /(信谊(“8.314”)* 270290 (T)),“reltol”1 e-20)
ans =
20.025801684292594502
所以结果所提供的积分似乎准确与双精度运算一样,可以报告。需要超过5位有效数字是愚蠢的,因为8.314肯定不是被称为完全的价值。
你会做什么如果Ea是未知常数?解决方案使用一个名为ei的函数,指数积分。这是一个良好定义的函数,就像就是罪(x), cos (x)。也许你知道罪恶,因为,但不是ei。这并不意味着它不存在。
信谊Ea T
vpa (int (exp (Ea. /(信谊(“8.314”)* 270290 (T))), 5)
ans =
intEa = matlabFunction (int (exp (Ea. /(信谊(“8.314”)* 270290 (T))));
现在我们可以评估函数对任何Ea的价值。
intEa (3 100 [1])
ans = 1×4
20.0085968640238 20.0258016842926 20.0861351906965 20.8782458224677
3个不需要使用任何幻想。用MATLAB。
2的评论
拉胡尔·拉梅什
拉胡尔·拉梅什 2021年8月11日
谢谢。它工作。然而,当积分下限为0,0到293,它返回一个表达式与限制。猜,Ea的限制应该最小化之前删除吗?

登录置评。

答案(1)

j·亚历克斯。李
j·亚历克斯。李 2021年8月6日
应用程序仍然还不清楚我……
如果你只是想要的数值积分,看看函数“积分”,如下实现。
它可能是值得注意的是,“精确”可以表示不定积分
Ei指数积分,这似乎有一个相关的内置在matlab数值算法: expint
如果你有疯狂的Ea的值,你双笔的顶部和底部的表达式可能会疯了,然后你将不得不处理有限精度问题的比率。如果这个表达式已经一些离散化的结果soemthing别的,可能值得回到,更详细地看问题在数学上。
Ta = 270;
结核病= 290;
R = 8.314;
Ea = 1 e + 3;
num_soln =积分(@ (T) intKrnl (T, R, Ea),助教,结核病,“AbsTol”1 e-16“RelTol”1 e-16);
san_soln = indefInt(结核病、R, Ea) -indefInt (Ta, R, Ea);
fplot (@ (T) intKrnl (T, R, Ea),(助教、结核病))
函数= indefInt (T, R, Ea)
Ei = (expint (ea / (R (T)) + 1我*π);
= T * exp (Ea / (R (T)) - Ea / R * Ei;
结束
函数= intKrnl (T, R, Ea)
= exp (Ea. / (R (T));
结束

下载188bet金宝搏


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!