繁体   English   中英

Matlab与Real的符号集成给出了一个复杂的答案

[英]matlab symbolic integration with real gives a complex answer

我希望对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);

您得到的(具有某些恒定因素)的形式

 1i * (c * erf(1i * a) - erf(c * 1i * (a - 2)))

这由形式的两个术语组成

- 1i * erf(1i * x)

也称为虚数误差函数 erfi() 原来是

erfi(x) = - 1i * erf(1i * x) = 2/sqrt(pi) * integral(@(t)exp(t.^2),0,x)

因此,对于x的实际值,您的表达式实际上是真实的,如果thetak >= 0siksjk是实数,就是这种情况。

您开始使用的积分可以简化为exp(-t^2)的积分(使用某种仿射变换),该积分通常没有“封闭形式”,但通常写为

erf(x) = 2/sqrt(pi) * integral(@(t)exp(-t.^2),0,x)

我强烈建议阅读有关错误函数的Wikipedia文章。

此外,我建议使用比MATLAB符号工具箱更适合初学者的CAS 我要推荐的一个免费的开源CAS是Maxima

(由于SO上缺少LaTeX,因此全部以MATLAB表示法编写。)

您获得的答案(如果您有与我的Matlab版本相似的答案),我在这里复制了该答案:

  /               /                     2 \ 
  |  1/2   1/2    |   thetak (sik - sjk)  | 
- | 2    pi    exp| - ------------------- | 
  \               \            2          / 
 /    /  1/2          1/2                 \ 
 |    | 2    (-thetak)    (sik i + sjk i) | 
 | erf| --------------------------------- | i - 
 \    \                 2                 / 

    /  1/2          1/2                       \   \ \ 
    | 2    (-thetak)    (sik i + sjk i - 2 i) |   | | 
 erf| --------------------------------------- | i | | / 
    \                    2                    /   / / 
             1/2 
 (4 (-thetak)   )

给人的印象是,我到处都有复数。

但是实际上,由于(-thetak)^(1/2),这是一个错误的印象。

实际上,取负数的平方根将生成一个“ i”,这反过来将“杀死”与其“接触”的其他“ i”。 由于可以找到(-thetak)^(1/2)的事实,所以这种取消将在不同的位置发生:

1)在erf表达式中

2)作为公分母(最后一行)。

验证规则i ^ 2 = -1适用于所有地方,不留任何生存“ i”的机会...

最终给出(我已将thetak = s ^ 2设置为s> 0):

  /               /                      \ 
  |  1/2   1/2    |   s^2 (sik - sjk)^2   |   
- | 2    pi    exp| - ------------------- | 
  \               \            2          / 
 /    /  1/2                   \ 
 |    | 2    s    (sik  + sjk ) | 
 | erf| ----------------------- |  - 
 \    \           2            / 

    /  1/2                          \   \ \ 
    | 2    s   (sik  + sjk  - 2 )   |   | | 
 erf| ----------------------------- |   | |   /   (4 s)
    \             2                 /   / / 

编辑:您可能已经摆脱了整合。 这个想法是将$ exp(-thetak *((t-sik)^ 2 +(t-sjk)^ 2))$中的平方转换为所谓的“规范形式”,在您的情况下为:$ exp (-thetak *(((tA)^ 2 + B))/ C); $其中$ A,B,C $可以表示为sik和sjk的函数(例如$ A =(sik + sjk)/ 2 $); 这样,设置$ T = tA $,您将返回到具有公式的经典高斯积分:

$$ \\ frac {2} / {\\ sqrt {\\ pi}} \\ int_a ^ b exp(-t ^ 2} dt)(erf(b)-erf(a))$$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM