黎曼曲面:计算F( z) =∫z0dX磷( × )√f(z)=∫0zdxP(x)

计算科学 数值分析 计算几何 麻木的
2021-12-17 08:53:07

我正在尝试验证Schwartz-Christoffel 映射确实占据了上半平面H={z:Re(z)>0} 到一个多边形。

这涉及类型函数的积分和每个点的计算。

f(z)=0zdx(xa)(xb)

在哪里a<bR.

我想要这个案子a=1,b=1. 我知道这个积分可以精确计算,但如果分母不能P(z)是三次方或四次方x41.

这是我写的一个 numpy 脚本......如果它错了,对不起。

import numpy as np
impott matplotlib.pyplot as plt

f = lambda z: np.cumsum(z, axis=1) + 1j*np.cumsum(z, axis=0)    
n = 200
dt = 1.0/n
y = (np.ones((n,2*n)))/n
y = f(y)-1
w = y[(y.imag > 0.001)] # semicircle of radius 1

g = lambda t: np.sqrt(1 - t**2)**-0.5 # function to be integrated

plt.plot((g(w)).real, g(w).imag, 'b.')

plt.axis("Equal")
plt.show()

这是我想出的图片......绝对不是多边形。也许我必须改变原来的网格?

在此处输入图像描述


我不想精确计算反导数,因为我希望它适用于更复杂的例子,比如0zdx(x1)(x2)(x3). 相反,我提出了两种策略:

  • 建立一个代表值的网格1P(z)
  • 将网格转换为0z在每个点
  • 如果根P(z)是真实的,我们坚持Re(z)>0平方根至少仍然是单值的
1个回答

注意积分是

zdxxaxb,
通常对于复杂变量
xaxb(xa)(xb).

我不确定你想用你的代码做什么,所以我无法帮助你。我看不到您在代码中的哪个位置进行了集成,它似乎完全绘制了一些其他功能:问题不在于网格。当我在 Mathematica 中做你的例子时,,我得到了这个:a=b=1

-((I \[Pi])/2) + 2 ArcSinh[Sqrt[-1 + z]/Sqrt[2]] /. z -> x + I y;
ParametricPlot[{Re@%, Im@%}, {x, -8, 8}, {y, 0, 8}, PlotRange -> {{-1, 4}, {-2, 2}}]

在此处输入图像描述