Перейти к публикации

Решение нелинейного уравнения методом бисекции


Рекомендованные сообщения

 
 Доброго времени суток всем участникам форума. За неимением опыта работы со скриптами на apdl в Ansys обращаюсь за помощью к знатокам. Задача в следующем: необходимо написать макрос решения нелинейного уравнения с помощью метода бисекции. Суть метода известна, для меня вопрос каким образом это записать в скрипте? Само уравнение: X^3-cos(x)+1=0 взято из примера решения в mathcad для сравнения результатов. Заданная точность  Е=10^-10,  интервал поиска [-0,6 ; -0,4].  Заранее благодарен за помощь!
Ссылка на сообщение
Поделиться на других сайтах


1 час назад, Pavel.V. сказал:

Суть метода известна, для меня вопрос каким образом это записать в скрипте?

APDL - это язык из последовательных команд примерно одинакового синтаксиса:

NAME,ARG1,ARG2,ARG3

где NAME  - имя команды, а дальше идут ее аргументы, которые могут быть условно произвольными, в зависимости от команды.

Вас, пожалуй, отдельно будут интересовать такие команды как

*IF

*ELSE

*DO

*ENDDO

*WHILE

звездочка (*) здесь - это часть имени команды.

Подробности по командам есть в полной мере в справке.

Изменено пользователем soklakov
Ссылка на сообщение
Поделиться на других сайтах

@soklakov

Успехи налицо.

 

Файл с функцией FNC.txt

!=================================

FNC=ARG**3-cos(ARG)+1

!=================================

 

Файл с солвером. Результат содержится в переменной SOL если не достигнуто ограничение по итерациям.

!=================================

*afun,rad

x1=-0.6
x2=-0.4

MaxIter=100

*do,i,1,MaxIter,1

     *if,abs(x1-x2),lt,1e-10,then
         SOL=(x1+x2)/2
         *exit
     *endif

     dx=(x2-x1)/2
     xi=x1+dx

     ARG=x1
     /INPUT,FNC.txt
     RES1=FNC

     ARG=xi
     /INPUT,FNC.txt
     RESi=FNC


     *if,RES1*RESi,lt,0,then
         x2=xi
     *else
         x1=xi
     *endif

*enddo

ARG=
DX=
FNC=
MAXITER=
RES1=
RESi=
Xi=

!=================================

 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, soklakov сказал:

Успехи? В чем?

Твои в механикл "мать его" апдле. А ты про что подумал?

Ссылка на сообщение
Поделиться на других сайтах

- Как выучить основные команды на апдл?

- Попить пиваса с Борманом!

 

:biggrin:

 



- А что будет, если с Боманом дунуть? :g:

 

Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Борман сказал:

Твои в механикл "мать его" апдле. А ты про что подумал?

Про то и подумал. Только думаю... успехи мои в апдле за последние десять лет мало изменились, как и сам апдл. А циклы и условные переходы писать еще в школе учат.

Ссылка на сообщение
Поделиться на других сайтах

Только следует знать, что для расчётов apdl оооочень медленный, медленнее того же визуал бейсика на порядки (даже не в разы), так что решение примерно 100000 уравнений в нём занимает часы. Так что может придётся выносить код при больших вычислениях наружу, на c++ или каком другом быстром языке писать и организовывать обмен информацией

Ссылка на сообщение
Поделиться на других сайтах

Скриптовые языки не для того придумывают. Еще бы на змеюке скорость искали :) 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...