Ios 我如何使用;我";作为Objective-C中等式中的虚数

Ios 我如何使用;我";作为Objective-C中等式中的虚数,ios,objective-c,complex-numbers,Ios,Objective C,Complex Numbers,假设我想计算Vout,其中Vout=(Vin/((I*w*R*C)+1)); 其中,“i”应定义为sqrt(-1)。如何在Objective-C中实现这一点?您可以\include然后使用\u Complex\u I或I宏(注意大写)。包含复数值的变量类型用\u complex属性表示,也可以简单地编写complex double complex c1 = 1.0 + 2.0 * I; // 1+2i double complex c2 = 2.0 + 3.0 * I; // 2+3i doub

假设我想计算Vout,其中Vout=(Vin/((I*w*R*C)+1)); 其中,“i”应定义为sqrt(-1)。如何在Objective-C中实现这一点?

您可以
\include
然后使用
\u Complex\u I
I
宏(注意大写)。包含复数值的变量类型用
\u complex
属性表示,也可以简单地编写
complex

double complex c1 = 1.0 + 2.0 * I; // 1+2i
double complex c2 = 2.0 + 3.0 * I; // 2+3i
double complex sum = c1 + c2;
double complex mul = c1 * c2;
然后可以使用
creal
cimag
函数来获取复数的实部和虚部

因此,在你的情况下:

double Vin = 20; // in Volts
double w = 60; // frequency of your sinusoidal source (60Hz)
double R = 50; // 50 ohms
double C = 20e-6; // 20 µF
double complex invertZc = I*w*C; // Zc = 1/jwC, invertZc = jwC
double complex Vout = Vin / (1. + R*invertZc); // Vout = Vin * 1.0 / (1+Zr/Zc)


请注意,所有这些都是由GNU C(Objective-C是C的超集)及其扩展(由Xcode使用的GCC和LLVM编译器支持)提供的,并且不是Objective-C本身的一部分。

Objective C没有任何用于处理复数的内置功能。你必须自己计算。创建包含实部和虚部的struct imaginaryNumber的typedef。编写函数,将这些结构相加和相乘,并返回另一个结构作为结果。(乘以2个复数(a1+b1i)•(a2+b2i)将这些数字视为多项式,并使用FOIL方法计算结果。两个虚项的乘积变成实数,因为i•i=-1。

将复数视为复数平面中的向量。是的,它是GNU C超集的一部分。请参阅Cool。我不知道复数库。感谢分享这个nug从C99开始,get(Vote)Complex是标准C的一部分。Cherry on the cake:Xcode调试器(LLDB和Xcode接口)本机支持/集成了这种复杂类型。如果您有一个变量
complex double z=1+2*I;
,并在该赋值后放置一个断点,然后在LLDB控制台中键入
p z
,以打印其值,它将打印
(\u complex double)例如,$0=1+2i
。如果将鼠标悬停在代码中的
z
变量上,等待工具提示显示其值,它也会显示“1+2i:)