为什么我得到想象的数字而不是简单的答案

时间:2013-12-19 17:12:18

标签: matlab

这只是重要且需要修复的代码的一部分。我不知道我在这里做错了什么。所有的变量都是简单的数字,对于那个变量来说确实需要一个,但是不应该有任何错误。我得到虚数的答案应该是循环的一部分,所以重要的是我做对了。请忽略不需要的变量,因为我刚写了一部分代码

我得到的答案是:

KrInitialFirstPart = 0.000000000000000e + 00 - 1.466747615972368e + 05i

clear all;
clc;
% the initial position components
rInitial= 10; %kpc
zInitial= 0; %kpc
% the initial velocity components
vrInitial= 0; %km/s
vzInitial= 150; %tangential velocity component
vtInitial= 150; %not used
% the height
h= rInitial*vzInitial; %angulan momentum constant
tInitial=0;
Dt=1e-3;

    e=0.99;
    pc=11613.5;

    KrInitialFirstPart= -4*pi*pc*sqrt( 1-(e^2) / (e^3) )*rInitial
    format long

1 个答案:

答案 0 :(得分:2)

下面

sqrt( 1-(e^2) / (e^3) )

你在这里

e=0.99;

所以e< 1等等e ^ 3小于e ^ 2.

因此

(e^2)/(e^3) > 1.

除法运算比减法更紧密(即在前面进行评估),因此你取一个负数的平方根。因此,结果中的虚构成分。

也许你需要

sqrt( (1-(e^2)) / (e^3) )

保证从

生成实数结果
 1 - e^2 > 0

指定的e