Math 作为一名程序员,你会如何解释虚数?
作为一名程序员,我认为我的工作是擅长数学,但我很难理解虚数。我尝试过谷歌,但运气不佳,所以我希望程序员能向我解释一下,给我举一个平方数的例子,这是一个问题:我不仅是程序员,还是数学家。 解决方案:无论如何都要继续前进 复数并没有什么神奇之处。他们最初的想法是实数有问题。如果你有一个方程x^2+4,这永远不是零,而x^2-2是零的两倍。因此数学家们非常生气,希望总是有至少一次多项式的零(想要一个“代数闭合”域),并创建了一些任意数j,使得j=sqrt(-1)。所有的规则都是从这里开始的(尽管它们被更准确地以不同的方式重新组织——特别是,你不能正式地说“嘿,这个数字是负一的平方根”)。如果有这个数字j,你可以得到j的倍数。你可以把实数加到j上,得到复数。复数运算类似于二项式运算(有意如此) 复合物的真正问题不在于所有这些,而在于你不能定义一个系统,通过这个系统,你可以以小于或大于的价格获得普通规则。所以说真的,你到达了一个你根本没有定义它的地方。这在二维空间中没有意义。所以老实说,我不能回答“给我一个数平方的例子,我想这是一个很好的解释: 关键词是旋转(与负数的方向相反,负数和虚数一样陌生:小于零?)Math 作为一名程序员,你会如何解释虚数?,math,complex-numbers,Math,Complex Numbers,作为一名程序员,我认为我的工作是擅长数学,但我很难理解虚数。我尝试过谷歌,但运气不佳,所以我希望程序员能向我解释一下,给我举一个平方数的例子,这是一个问题:我不仅是程序员,还是数学家。 解决方案:无论如何都要继续前进 复数并没有什么神奇之处。他们最初的想法是实数有问题。如果你有一个方程x^2+4,这永远不是零,而x^2-2是零的两倍。因此数学家们非常生气,希望总是有至少一次多项式的零(想要一个“代数闭合”域),并创建了一些任意数j,使得j=sqrt(-1)。所有的规则都是从这里开始的(尽管它们被
与负数模拟翻转一样,虚数可以模拟在二维“X”和“Y”之间旋转的任何东西。或任何具有循环、循环关系的事物主要的一点是,添加一些数字,这些数字被定义为二次方程的解,如x2=-1。为方程i指定一个解,然后根据该方程计算i的规则
这类似于当你只知道正数时,将负数定义为方程的解,如2+x=1;当你只知道整数时,将分数定义为方程的解,如2x=1。可能最容易的方法是停止尝试理解一个数如何可以是负数的平方根,而只需继续使用as这是一种奢望 因此(使用i作为-1的平方根):
根据数学的标准规则工作(记住第四行我的平方等于-1).你可能还会问为什么会有负数?负数的存在是因为你想表示某些方程的解,如:x+5=0。同样的道理也适用于虚数,你想简洁地表示形式为:x^2+1=0的方程的解 这是我在实践中看到的一种方法。在EE中,您经常处理正弦波函数,或者可以分解为正弦波的函数(参见示例) 因此,您经常会看到以下形式的方程的解: f(t)=A*cos(wt) 此外,您通常希望表示从该函数移相某个相位的函数。90度相移将给出sin函数 g(t)=B*sin(wt) 通过组合这两个函数(称为同相分量和正交分量),可以获得任意相移 h(t)=Acos(wt)+iB*sin(wt) 这里的关键是,在线性系统中:如果f(t)和g(t)解一个方程,h(t)也会解同一个方程。所以,现在我们有了方程h(t)的一般解 h(t)的优点是它可以简洁地写成 h(t)=Cexp(wt+theta) 使用exp(iw)=cos(w)+i*sin(w)这一事实
这其实没有什么特别深刻的地方。它只是利用一个数学恒等式来简洁地表示各种方程的共同解。虚数是一个实数乘以虚数单位。
i
i
的定义如下:
i == sqrt(-1)
因此:
使用此定义可以获得负数的平方根,如下所示:
sqrt(-3)
== sqrt(3 * -1)
== sqrt(3 * i * i) // Replace '-1' with 'i squared'
== sqrt(3) * i // Square root of 'i squared' is 'i' so move it out of sqrt()
你的最终答案是实数
sqrt(3)
乘以虚单位i
一个简短的回答:实数是一维的,虚数给方程增加了一个第二维度,如果你想找到一个简单的应用程序,如果你熟悉矩阵,就会发生一些奇怪的事情…,
在复数空间中,使用复数将一个完美的实矩阵转换成一个三角形矩阵有时是有用的,并且它使计算变得更容易
结果当然是完全真实的。到目前为止,答案很好(真的像Devin的!)
还有一点:
复数的最初用途之一(尽管当时没有这样称呼)是作为求解三次方程的中间步骤。
同样,这是一种纯粹的工具,用于回答具有物理意义的实数的实际问题。对于程序员来说:
class complex {
public:
double real;
double imaginary;
complex(double a_real) : real(a_real), imaginary(0.0) { }
complex(double a_real, double a_imaginary) : real(a_real), imaginary(a_imaginary) { }
complex operator+(const complex &other) {
return complex(
real + other.real,
imaginary + other.imaginary);
}
complex operator*(const complex &other) {
return complex(
real*other.real - imaginary*other.imaginary,
real*other.imaginary + imaginary*other.real);
}
bool operator==(const complex &other) {
return (real == other.real) && (imaginary == other.imaginary);
}
};
基本上就是这样。复数就是实数对,对它们定义了+、*和==的特殊重载。这些运算实际上就是这样定义的。结果发现,这些带有这些运算的数对与数学的其余部分非常吻合,所以它们有一个特殊的名称
它们不像“计数”中的数字,更像是“可以用+,-,*。。。和“conventi”混在一起不会引起问题
sqrt(-3)
== sqrt(3 * -1)
== sqrt(3 * i * i) // Replace '-1' with 'i squared'
== sqrt(3) * i // Square root of 'i squared' is 'i' so move it out of sqrt()
class complex {
public:
double real;
double imaginary;
complex(double a_real) : real(a_real), imaginary(0.0) { }
complex(double a_real, double a_imaginary) : real(a_real), imaginary(a_imaginary) { }
complex operator+(const complex &other) {
return complex(
real + other.real,
imaginary + other.imaginary);
}
complex operator*(const complex &other) {
return complex(
real*other.real - imaginary*other.imaginary,
real*other.imaginary + imaginary*other.real);
}
bool operator==(const complex &other) {
return (real == other.real) && (imaginary == other.imaginary);
}
};