C# 如何在C语言中划分两个复数
我正试图用C语言将两个复数除法,但无法使其工作!我很确定是我的公式错了,但我不明白它有什么问题 我尝试过几次修改公式,但都没有成功。这是因为我从未学过复数或任何类似的数学,因此我很迷茫。 我尝试了这个公式:但在将其转换为代码时遇到了困难 我非常感谢您的回复!多谢各位C# 如何在C语言中划分两个复数,c#,division,complex-numbers,C#,Division,Complex Numbers,我正试图用C语言将两个复数除法,但无法使其工作!我很确定是我的公式错了,但我不明白它有什么问题 我尝试过几次修改公式,但都没有成功。这是因为我从未学过复数或任何类似的数学,因此我很迷茫。 我尝试了这个公式:但在将其转换为代码时遇到了困难 我非常感谢您的回复!多谢各位 public Komplex div(Komplex a, Komplex b) { Komplex resDiv = new Komplex(); resDiv.re =
public Komplex div(Komplex a, Komplex b)
{
Komplex resDiv = new Komplex();
resDiv.re = a.re / b.re - a.im / a.im;
resDiv.im = a.re / b.im + a.im / b.re;
return resDiv;
}
编辑:程序应该采用如下输入示例:3+2i/1-4i根据变量和类型名称进行调整:
public static Komplex div(Komplex a, Komplex b)
{
// Division : Smith's formula.
double a = a.re;
double b = a.im;
double c = b.re;
double d = b.im;
Komplex resDiv = new Komplex();
// Computing c * c + d * d will overflow even in cases where the actual result of the division does not overflow.
if (Math.Abs(d) < Math.Abs(c))
{
double doc = d / c;
resDiv.re = (a + b * doc) / (c + d * doc);
resDiv.im = (b - a * doc) / (c + d * doc);
}
else
{
double cod = c / d;
resDiv.re = (b + a * cod) / (d + c * cod);
resDiv.im = (-a + b * cod) / (d + c * cod);
}
return resDiv;
}
根据变量和类型名称进行了调整:
public static Komplex div(Komplex a, Komplex b)
{
// Division : Smith's formula.
double a = a.re;
double b = a.im;
double c = b.re;
double d = b.im;
Komplex resDiv = new Komplex();
// Computing c * c + d * d will overflow even in cases where the actual result of the division does not overflow.
if (Math.Abs(d) < Math.Abs(c))
{
double doc = d / c;
resDiv.re = (a + b * doc) / (c + d * doc);
resDiv.im = (b - a * doc) / (c + d * doc);
}
else
{
double cod = c / d;
resDiv.re = (b + a * cod) / (d + c * cod);
resDiv.im = (-a + b * cod) / (d + c * cod);
}
return resDiv;
}
你从中得到的结果到底是什么?你预期的输入是什么,预期的输出是什么?为什么不使用C类型,或者你是有意重新发明轮子来练习?你的数学是错误的。必须首先学习数学,只有当数学起作用时,你才能继续编写代码。阅读:你从中得到的结果到底是什么?你预期的输入是什么,预期的输出是什么?为什么不使用C类型,或者你是有意重新发明轮子来练习?你的数学是错误的。必须首先学习数学,只有当数学起作用时,你才能继续编写代码。读这篇文章:谢谢你的快速回答。我不使用.NET的类型,因为我正在学习编程,希望尽可能少地做幕后工作。有了这段代码片段,我可以检查它并了解发生了什么!谢谢你的快速回答。我不使用.NET的类型,因为我正在学习编程,希望尽可能少地做幕后工作。有了这段代码片段,我可以检查它并了解发生了什么!