Решение уравнений в Маткад
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > Решение уравнений в Маткад

Решение уравнений в Маткад

Ответ
Поиск в этой теме
Непрочитано 20.04.2007, 11:51 #1
Решение уравнений в Маткад
Fag
 
СПб
Регистрация: 30.03.2007
Сообщений: 140

Здравствуйте.
Дана функция y=f(x). Необходимо найти ВСЕ корни f(x)=0 на участке от 0 до +бесконечности?
Просмотров: 36620
 
Непрочитано 20.04.2007, 17:13
#2
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Правильно будет так как на рисунке. Для примера выбрал бесконечную неразрывную функцию
обрати внимание на знаки равно=, их там три вида, и на две точки x:= (0.. 5пи) чтобы они появились надо жать ";".
Передать массив напрямую в функцию find не получается поэтому пришлось делать дополнительную функцию.

Такое решение не панацея, и еще столько всяких подводных камней вас ждет. например функции с разрывом вам будут стопудово выдавать постоянно ошибки изза неправильно оформленного массива, если между элементами массива лежит три корня то средний корень будет потерян.Например: уравнение имеет три корня (0,1 0,2 0,3) в массиве значения (1 2 3 4 5), поидее корни будут (0,1 0,3 0,3 0,3 0,3)таккак числа 2 3 4 5 наиболее приближены к числу 0,3, а наиболее приближенное к 0,2 число в масииве отсутствует. если приближенное число лежит в разрыве, то и вовсе ошибка, несмотря на то что оно всеравно является наиболее близким.

рекомендуется построить график функции для того чтобы можно было видеть в каких диапазонах лежат корни и создать соответствующие массивы
[ATTACH]1177079644.jpg[/ATTACH]
mmax вне форума  
 
Непрочитано 20.04.2007, 19:48
#3
ander

проектирование
 
Регистрация: 01.11.2006
Кемерово
Сообщений: 2,891


Fag, может, экстремумы надо поискать через производные, поднимите курс математики.
ander вне форума  
 
Непрочитано 21.04.2007, 17:25
#4
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


ander
Чтобы найти экстремумы нада всеравно найти корни уравнений dy/dx = 0 а для точек перегиба их квадраты.

В любом случае маткадовским функциям решений уравнений (find root minner) в качестве аргументов надо задать число и будет найден самый ближайший корень. И если вам надо несколько корней то соответственно надо задать несколько приближенных к этим корням чисел СМ пост2.
minner возвратит значение даже если корней не существует, это будет наиболее приближенное значение х при f(x)=0
mmax вне форума  
 
Автор темы   Непрочитано 22.04.2007, 19:56
#5
Fag


 
Регистрация: 30.03.2007
СПб
Сообщений: 140


Как найти локальные корни я знаю. Предполагалось, что существует способ нахождения решения без потери корней.
Fag вне форума  
 
Непрочитано 23.04.2007, 22:12
#6
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от Fag
Предполагалось, что существует способ нахождения решения без потери корней.
По идее такого способа нет. Но. Обычно функции имеют либо 2 корня либо бесконечное множество. При бесконечном множестве обычно есть определенный шаг между значениями под который можно подстроиться.
А вообще в моем руководстве сказано что надо строить график функции, чтобы посмотреть сколько корней и какие они приблизительно.
mmax вне форума  
 
Непрочитано 24.04.2007, 10:32
#7
Jeka

конструктор
 
Регистрация: 17.03.2005
Украина, Донецк
Сообщений: 786


Цитата:
Сообщение от mmax
Но. Обычно функции имеют либо 2 корня либо бесконечное множество.
Почему же так. Может и 3 и 10 . Например многочлен n-ой степени может иметь n корней.

Цитата:
Сообщение от mmax
При бесконечном множестве обычно есть определенный шаг между значениями под который можно подстроиться.
тоже нет.
например sinx*shx=1


Цитата:
Сообщение от Fag
Необходимо найти ВСЕ корни f(x)=0 на участке от 0 до +бесконечности?
Для того что бы найти все корни нада сначала знать, что их количество конечно, а не бесконечно. Если так, то найти их количество n. А затем найти n интервалов, где функция f(x) меняет знак.
Jeka вне форума  
 
Автор темы   Непрочитано 24.04.2007, 14:10
#8
Fag


 
Регистрация: 30.03.2007
СПб
Сообщений: 140


Все это так или иначе связано с ручным исследованием уравнения (функции). Я же предполагал, что существует для n-мерного многочленна поиск всех n корней.
К примеру нужно решить задачу с нахождением всех корней с последующим их использованием в автоматическом режиме, не заморачиваясь с ручным поиском локальных областей.
Fag вне форума  
 
Непрочитано 24.04.2007, 16:45
#9
cyberkolbasa

дискретизатор континуума (бывший)
 
Регистрация: 28.09.2005
Уфа
Сообщений: 299


Используйте другой математический пакет, например Maple.

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

Например вот так выглядит решение с периодической функцией
[ATTACH]1177418912.jpg[/ATTACH]
__________________
я еще не волшебник, я только учусь
cyberkolbasa вне форума  
 
Автор темы   Непрочитано 02.05.2007, 14:01
#10
Fag


 
Регистрация: 30.03.2007
СПб
Сообщений: 140


Господа, подскажите кто знает! Дано уравнение f(x)=0. Ищу локальный корень посредством встроенной в маткад функции root. Т.е. получаю ответ s:=root(f(x),x). Вопрос: как сделать так, чтобы он давал только действительное значение? Т.к. в отдельных случаях он дает ближайшее мнимое значение.[/u]
Fag вне форума  
 
Непрочитано 03.05.2007, 03:40
#11
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Для root никак. Если только построить график и визуально убедиться, что от x до корня нет минимумов.
Только функция find выдает реальный корень или ошибку.
mmax вне форума  
 
Непрочитано 03.05.2007, 10:14
#12
leon-lv

Проектирование
 
Регистрация: 03.05.2007
Украина, Полтава
Сообщений: 62
Отправить сообщение для leon-lv с помощью Skype™


В экселе есть такая команда, как подбор параметра (в меню сервис). В одной ячейке устанавливаете значение ноль, во второй набираете функцию, которая в уравнении приравнивается к нулю. В подборе параметра устанавливаете следующее: установить во второй ячейке значение 0, изменяя значение в первой ячейке. Оно вам найдёт первый корень. Дальше значение в первой ячейке чуть-чуть увеличиваете и повторяете попоытку-найдётся второй корень и т.д. Не получится-пришлите мне своё уравнение на эмэйл leo-semenko@yandex.ru Я сам попробую решить.
leon-lv вне форума  
 
Непрочитано 04.05.2007, 02:24
#13
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Fag,
Вообщето вы интересуетесь вполне обычной вещью. Вы спрашиваете: Где у компьютера кнопка на которую нажал и проэкт готов.
Здесь, на этом форуме ее называют красной кнопкой.
Так вот, красной кнопки не существует, но форумчане в нее верят. и некоторые даже надеются дожить до момента когда появится хотябы псевдоКрасная кнопка.

На данный момент для идеального поиска корней уравнения, кроме головы еще ничего не придумали. :wink:
mmax вне форума  
 
Непрочитано 04.05.2007, 06:01
#14
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


А почему нельзя использовать root с диапазоном поиска?

root(f(x),x,a+eps,b),

где a - очередное решение
eps - смещение от очередного решения для нового диапазона

При желании через цикл можно вытащить все корни, если их число конечно. Там же можно организовать проверку на действительность
(функции if(), Im())
novinkov вне форума  
 
Непрочитано 04.05.2007, 19:30
#15
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


>novinkov

Это не то, нужна идеальная функция.
А нахождение перечня приближенных значений это посути и есть само решение. Если бы можно было сделать такую функцию, то разработчики маткада обязательно ее бы сделали
mmax вне форума  
 
Автор темы   Непрочитано 04.05.2007, 21:27
#16
Fag


 
Регистрация: 30.03.2007
СПб
Сообщений: 140


Маткад и иже с ним - это все в целом и есть преславутая "красная псевдокнопка". Мы нажимаем и... получаем ответ, экономя при этом n-е количество времени. Тут вопрос не поиска "абсолютной" кнопки, а вопрос использования ста процентов возможности программы. Зачастую пользуясь тем или иным пакетом, мы напоминаем туземцов, к-е сложным прибором колят орехи. ИМХО. Хотя это все лирика.

У меня вопрос! Пользуясь встроенным в маткад языком программирования, можно ли в программном модуле (например цикла) использовать операторы root, либо Given-Find. Если есть у кого опыт- поделитесь.
Fag вне форума  
 
Непрочитано 05.05.2007, 10:20
#17
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


1.
Цитата:
Это не то, нужна идеальная функция.
Оценил, браво

2. root (и любая другая функция) может использоваться в теле функции пользователя. Ограничения мне не известны.

3. Использование блока Given-Find в теле функции пользователя невозможно. Но возможны иные пути многократного решения систем нелинейных уравнений. См. например:
http://forum.exponenta.ru/viewtopic....ighlight=given
http://forum.exponenta.ru/viewtopic....&highlight=vfo
novinkov вне форума  
 
Непрочитано 06.05.2007, 19:29
#18
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Fag
Еще раз повторяю. Если бы все было так просто, то разработчики маткада обязательно бы это сделали. Сами подумайте, кому надо таким кривым способом решать уравнения. Конечно былобы лучше без всяких там приближений получить матрицу со всеми корнями.

Если вы хотите сделать это сами, то маткад для этого не самый подходящий инструмент.
Во первых встроенные функции либо выдают результат либо ошибку. А значений типа NIL NULL непредусмотрено, хотя безрезультатный результат, для человека тоже результат. А они бы непомешали.
Во вторых там нет логических TRUE FALSE. Без них тоже будет сложновато.
Втретих для решения уравнений надо определить где функция меняет знак, тоесть пересекает ось Х, потом надо искать где она касается оси (возрастает-убывает, экстреммум).
И учесть тот факт , что поменять знак функция может в точке или промежутке разрыва непересекая ось и иметь экстреммум который не касается оси. Вобщем есть над чем голову поломать.

Такчто на данный момент, самое лучшее средство для решения уравнений и прочих математических задач это MathType. Никогда не глючит, не ругается, имеет удобные средства форматирования, работает прямо в MS Word и без оного.
mmax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > Решение уравнений в Маткад