Софтуерно Инженерство
Loading...
Filkolev avatar Filkolev 4501 Точки

High-School Maths - Lecture and Exercise

Отварям темата основно за обсъждане на задачата за чертаене на кръг, защото е малко по-предизвикателна от предходните. Според мен обаче няма смисъл да се правят отделни теми за тези задачки (изключение е може би последната), затова я слагам като обща за лекцията.

 

Проблем 8.2 - plot_circle()

Ето докъде стигнах с решението на 8-ма задача. Нарочно слагам снимка, а не самото решение, защото смятам, че ще е по-полезно за всички ако обсъждаме подходи и идеи с минимално споделяне на код: https://ibb.co/j5K5bn. Някой ако знае най-кадърния начин да се качи снимка тук да сподели, понеже не помня някога да съм го правил.

Линкът може да изчезне, затова кратко обяснение на резултата от изпълнението на plot_circle(3, 1, 1.5): кръгът е с верни кординати на центъра (3, 1) и правилен радиус (1.5), пропорциите му са правилни визуално, горната и долната половина са с различни цветове (обяснение след малко), а координатните оси са разчленени (т.е. не се пресичат, което е малко грозно).

Решението ми използва написаната в задача 7 функция plot_math_functions(), тъй като окръжността не може да се опише с една функция. По дефиниция функцията съпоставя на всеки аргумент точно една стойност, докато при окръжността се вижда, че за всички стойности на х освен крайните, имаме по две стойности за у. На практика ползвам две функции, които чертаят горната и долната част поотделно, затова са с различни цветове в изходното изображение.

Самите функции могат да се изведат от уравнението на окръжността, което е: (x - x_c)^2 + (y - y_c)^2 = r^2. Коментарът към самата задача е малко подвеждащ, понеже дадената там формула е за окръжност с център в центъра на равнината. При коренуването се получава модулно уравнение; в зависимост от стойността на израза (у - y_c) имаме два случая, които представляват въпросните две функции - y > y_c е горната част на окръжността, а y < y_c е долната.

Допълнително се налага да се уеднаквят пропорциите на координатните оси, защото в противен случай кръгът изглежда като елипса.

Предстои да дооправя нещата (ако мога), въпреки че става дума основно за разкрасяване, което твърде много ми напомня на мъките ми със CSS, та мотивацията ми не е особено висока:

  • Цялата окръжност да е в един цвят
  • Осите да са съединени
  • Да има една нула в центъра, вместо по една за всяка ос (важи и за предходните задачи)

 

Доста ми е интересно дали някой е избрал/намерил различен начин да реши задачата. Видях, че pyplot има вграден Circle, но ползването на функция, която съм написал в рамките на упражнението, ми се стори по-интересно предизвикателство от четенето на малко документация.

0
Math Concepts for Developers 12/04/2018 19:10:05
Atanasov.Am avatar Atanasov.Am 1 Точки

Здравейте,

не ми е много ясна 8 задача, какво трябва да се направи? Условието е Use the plotting function you wrote above to plot the inverse trigonometric functions (arcsin, arccos,arctam arccot) и после отдолу има функция за кръг plot_circle()

Аз направих графика на функцията на кръга и после всичките 4 обърнати функции едно по-друго. Вижте този линк

Така ли трябва да се направи задачата?

Също така коя Python функция използвате за аркус котангенс ? В numpy няма такава, аз намерих тази sympy.acot

 

0
Filkolev avatar Filkolev 4501 Точки

Две отделни задачи са - едната е да начертаеш тригонометричните функции, а другата е за кръга. Има и две отделни клекти за целта, но може би объркването идва от факта, че няма подробни обяснения на втората част.

Аз доколкото намерих решения, arccot(x) = arctan(1/x) е коректно и е доста лесно в случая. По различните източници и софтуери има разминавания, за повече инфо може да погледнеш тук и тук. Разликите идват от разглеждането на cot(x) в ралични интервали, в единия случай от 0 до пи, в другия от -пи/2 до пи/2, което води до различни резултати при чертаенето на аркус котангенс.

0
16/04/2018 23:12:44