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