Решение кубического уравнения

Подробно останавливаясь на двух предыдущих ответах, если Вы просто хотите Objective C, но не какую-либо из платформ Какао, тогда gcc будет работать над любой платформой. Можно использовать его через Cygwin или получить MinGW. Однако, если Вы хотите платформы Какао или по крайней мере разумное подмножество их, затем GNUStep и Cocotron являются Вашими лучшими выборами.

Cocotron реализует много материала, который GNUStep не делает, такие как CoreGraphics и CoreData, хотя я не могу ручаться за то, насколько завершенный их реализация находится на определенной платформе. Их цель состоит в том, чтобы держать Cocotron в курсе последней версии OS X так, чтобы любая жизнеспособная программа OS X могла работать на Windows. Поскольку GNUStep обычно использует последнюю версию gcc, они также добавляют в поддержке Objective C ++ и много функций Objective-C 2.0.

я не протестировал те функции с GNUStep, но если Вы используете достаточно новую версию gcc, Вы могли бы быть в состоянии использовать их. Я не смог использовать Objective C ++ с GNUStep несколько лет назад. Однако GNUStep действительно компилирует с примерно любой платформы. Cocotron является очень центральным Mac проектом. Хотя, вероятно, возможно скомпилировать его на других платформах, это прибывает файлы проекта XCode, не make-файлы, таким образом, можно только скомпилировать его платформы из поля на OS X. Это также идет с инструкциями относительно компиляции Приложений Windows на XCode, но не любой другой платформы. В основном, вероятно, возможно настроить среду разработки Windows для Cocotron, но это не столь легко как установка той для GNUStep, и Вы будете самостоятельно, таким образом, GNUStep будет определенно способом пойти, если Вы разрабатываете в Windows в противоположность только для Windows.

Если это имеет значение, Cocotron лицензируют в соответствии с лицензией MIT, и GNUStep лицензируется под LGPL.

9
задан P i 20 July 2015 в 12:32
поделиться

2 ответа

Обозначение Википедии (rho ^ (1/3), theta / 3) не означает, что rho ^ (1/3) является действительная часть, а theta / 3 - мнимая часть. Скорее это в полярных координатах. Таким образом, если вам нужна реальная часть, вы должны взять rho ^ (1/3) * cos (theta / 3) .

Я внес эти изменения в ваш код, и у меня это сработало:

theta = arccos(r/rho)
s_real = rho**(1./3.) * cos( theta/3)
t_real = rho**(1./3.) * cos(-theta/3)

(Конечно, здесь s_real = t_real , потому что cos четное.)

24
ответ дан 4 December 2019 в 09:36
поделиться

Я просмотрел статью в Википедии и вашу программу.

Я также решил уравнение, использующее Wolfram Alpha , и результаты там не соответствуют тому, что вы получаете.

Я бы просто просмотрел вашу программу на каждом этапе, использовал множество операторов печати и получил каждый промежуточный результат . Затем воспользуйтесь калькулятором и сделайте это самостоятельно.

Я не могу найти, что происходит, но там, где ваши ручные вычисления и программа расходятся, это хорошее место.

3
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: