Sage: строим полиномы Цернике

В данной заметке, мы, забавы ради, построим в системе Sage полиномы Цернике, которые даны в виде функций в полярных координатах.

Форма и порядок полиномов Цернике (взято из книги Л.И. Балашевича Клиническая корнеотопография и аберрометрия):

 

p

 

По данной таблице можно определить номер полинома:

 

p2

 

И формулы разных полиномов в полярной системе координат:

 

p3

 

Использовать мы будем облачную версию Sage, создаем аккаунт, заходим и создаем новый проект.

Для начала декларируем переменные (просто копируйте в Ваш проект строка за строкой):

r, theta, z = var('r theta z')

Затем создаем трансформацию для полярных координат:

T = Cylindrical('height', ['radius', 'azimuth'])
T.transform(radius=r, azimuth=theta, height=z)

Строим 1й наш график:

plot3d(2 * r * sin (theta), (r, 0, 1), (theta, 0, 2*pi), transformation=T)

Нажимаем на Run, смотрим что получилось:

 

sage1

 

Построим полином №3 (астигматизм), чтобы график был менее растянутым, r возьмем от 0 до 0.5:

plot3d(sqrt(6) * r^2 * sin (2*theta), (r, 0, 0.5), (theta, 0, 2*pi), transformation=T)

 

sage2

 

И, например, полином №7 (кома):

plot3d(sqrt( 8 ) * (3 * r^3 - 2 * r) * sin (theta), (r, 0, 1), (theta, 0, 2*pi), transformation=T)

 

sage3

 

В целом, ничего сложного. Самое главное, что ничего для этого устанавливать не нужно, все можно делать онлайн.