我希望得到Matlab中以下积分的解析(封闭形式)解决方案 . 但是,Matlab给出了一个实部和虚部的答案 . 如何通过“真实”部分来获得答案 . 这是完整的代码 .
close all;
clear all;
clc;
syms t real;
syms thetak real;
syms sik real;
syms tbar real;
syms sjk real;
expr = exp(-thetak*((t-sik)^2 + (t-sjk)^2));
Bijk_raw = int(expr,t,0,1);
Bijk = simplify(collect(expand(Bijk_raw)));
fprintf('Bijk is as follows...\n');
pretty(Bijk);
2 回答
你得到的答案(如果你有类似我的Matlab版本),我在这里重现:
给人的印象是你到处都有复杂的数字 .
但事实上,由于(-thetak)^(1/2),这是一种错误的印象 .
实际上,取负数的平方根将产生“i”,而“i”又“杀死”与其“接触”的其他“i” . 由于可以找到(-thetak)^(1/2)这一事实,这种取消将发生在不同的地方:
1)在erf表达式和
2)作为共同点(最后一行) .
验证规则i ^ 2 = -1适用于任何地方,没有机会生存任何“我”......
最后给出(我已设置thetak = s ^ 2,其中s> 0):
编辑:你可能已经逃脱了整合 . 我的想法是在所谓的“规范形式”下转换$ exp(-thetak *((t-sik)^ 2(t-sjk)^ 2))$中的二次方,在你的情况下是:$ exp( -thetak *(((tA)^ 2 B))/ C); $其中$ A,B,C $可以表示为sik和sjk的形式(例如$ A =(sik sjk)/ 2 $);通过这种方式,设置$ T = t-A $,您将被带回具有公式的经典高斯积分:
$$ \ frac {2} / {\ sqrt {\ pi}} \ int_a ^ b exp(-t ^ 2} dt)(erf(b) - erf(a))$$
你得到了什么(取决于一些常数因素)的形式
这包括表格的两个术语
这也称为假想误差函数
erfi()
. 事实证明因此,对于
x
的实际值,您的表达式实际上是真实的,如果thetak >= 0
和sik
和sjk
是实数,则情况就是如此 .你开始使用的积分可以减少到
exp(-t^2)
的积分(使用一些仿射变换),这个着名的没有"closed form",但它通常写成我强烈建议您阅读error function上的维基百科文章 .
此外,我建议使用比MATLAB符号工具箱更友好的CAS . 我想推荐的一个免费和开源CAS是Maxima .
(由于SO上缺少LaTeX,因此全部用MATLAB表示法编写 . )