|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Решение уравнений в Маткад
СПб
Регистрация: 30.03.2007
Сообщений: 140
|
||
Просмотров: 36620
|
|
||||
Программист широкого профиля. Регистрация: 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] |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
ander
Чтобы найти экстремумы нада всеравно найти корни уравнений dy/dx = 0 а для точек перегиба их квадраты. В любом случае маткадовским функциям решений уравнений (find root minner) в качестве аргументов надо задать число и будет найден самый ближайший корень. И если вам надо несколько корней то соответственно надо задать несколько приближенных к этим корням чисел СМ пост2. minner возвратит значение даже если корней не существует, это будет наиболее приближенное значение х при f(x)=0 |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
А вообще в моем руководстве сказано что надо строить график функции, чтобы посмотреть сколько корней и какие они приблизительно. |
|||
![]() |
|
||||
конструктор Регистрация: 17.03.2005
Украина, Донецк
Сообщений: 786
|
Цитата:
Цитата:
например sinx*shx=1 Цитата:
|
|||
![]() |
|
||||
Регистрация: 30.03.2007
СПб
Сообщений: 140
|
Все это так или иначе связано с ручным исследованием уравнения (функции). Я же предполагал, что существует для n-мерного многочленна поиск всех n корней.
К примеру нужно решить задачу с нахождением всех корней с последующим их использованием в автоматическом режиме, не заморачиваясь с ручным поиском локальных областей. |
|||
![]() |
|
||||
дискретизатор континуума (бывший) Регистрация: 28.09.2005
Уфа
Сообщений: 299
|
Используйте другой математический пакет, например Maple.
На мой взгляд маткад все таки больше предназначен для численного решения уже заданных соотношений нежели для матанализа и символьных преобразований (тут конечно многие возразят, ну и пусть, это мое имхо). Короче маткад он для инженерных расчетов. Например вот так выглядит решение с периодической функцией [ATTACH]1177418912.jpg[/ATTACH]
__________________
я еще не волшебник, я только учусь |
|||
![]() |
|
||||
Регистрация: 30.03.2007
СПб
Сообщений: 140
|
Господа, подскажите кто знает! Дано уравнение f(x)=0. Ищу локальный корень посредством встроенной в маткад функции root. Т.е. получаю ответ s:=root(f(x),x). Вопрос: как сделать так, чтобы он давал только действительное значение? Т.к. в отдельных случаях он дает ближайшее мнимое значение.[/u]
|
|||
![]() |
|
||||
В экселе есть такая команда, как подбор параметра (в меню сервис). В одной ячейке устанавливаете значение ноль, во второй набираете функцию, которая в уравнении приравнивается к нулю. В подборе параметра устанавливаете следующее: установить во второй ячейке значение 0, изменяя значение в первой ячейке. Оно вам найдёт первый корень. Дальше значение в первой ячейке чуть-чуть увеличиваете и повторяете попоытку-найдётся второй корень и т.д. Не получится-пришлите мне своё уравнение на эмэйл leo-semenko@yandex.ru Я сам попробую решить.
|
||||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Fag,
Вообщето вы интересуетесь вполне обычной вещью. Вы спрашиваете: Где у компьютера кнопка на которую нажал и проэкт готов. Здесь, на этом форуме ее называют красной кнопкой. Так вот, красной кнопки не существует, но форумчане в нее верят. и некоторые даже надеются дожить до момента когда появится хотябы псевдоКрасная кнопка. На данный момент для идеального поиска корней уравнения, кроме головы еще ничего не придумали. :wink: |
|||
![]() |
|
||||
Регистрация: 10.03.2005
Кемерово
Сообщений: 277
|
А почему нельзя использовать root с диапазоном поиска?
root(f(x),x,a+eps,b), где a - очередное решение eps - смещение от очередного решения для нового диапазона При желании через цикл можно вытащить все корни, если их число конечно. Там же можно организовать проверку на действительность (функции if(), Im()) |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
>novinkov
Это не то, нужна идеальная функция. А нахождение перечня приближенных значений это посути и есть само решение. Если бы можно было сделать такую функцию, то разработчики маткада обязательно ее бы сделали |
|||
![]() |
|
||||
Регистрация: 30.03.2007
СПб
Сообщений: 140
|
Маткад и иже с ним - это все в целом и есть преславутая "красная псевдокнопка". Мы нажимаем и... получаем ответ, экономя при этом n-е количество времени. Тут вопрос не поиска "абсолютной" кнопки, а вопрос использования ста процентов возможности программы. Зачастую пользуясь тем или иным пакетом, мы напоминаем туземцов, к-е сложным прибором колят орехи. ИМХО. Хотя это все лирика.
У меня вопрос! Пользуясь встроенным в маткад языком программирования, можно ли в программном модуле (например цикла) использовать операторы root, либо Given-Find. Если есть у кого опыт- поделитесь. |
|||
![]() |
|
||||
Регистрация: 10.03.2005
Кемерово
Сообщений: 277
|
1.
Цитата:
![]() ![]() 2. root (и любая другая функция) может использоваться в теле функции пользователя. Ограничения мне не известны. 3. Использование блока Given-Find в теле функции пользователя невозможно. Но возможны иные пути многократного решения систем нелинейных уравнений. См. например: http://forum.exponenta.ru/viewtopic....ighlight=given http://forum.exponenta.ru/viewtopic....&highlight=vfo |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Fag
Еще раз повторяю. Если бы все было так просто, то разработчики маткада обязательно бы это сделали. Сами подумайте, кому надо таким кривым способом решать уравнения. Конечно былобы лучше без всяких там приближений получить матрицу со всеми корнями. Если вы хотите сделать это сами, то маткад для этого не самый подходящий инструмент. Во первых встроенные функции либо выдают результат либо ошибку. А значений типа NIL NULL непредусмотрено, хотя безрезультатный результат, для человека тоже результат. А они бы непомешали. Во вторых там нет логических TRUE FALSE. Без них тоже будет сложновато. Втретих для решения уравнений надо определить где функция меняет знак, тоесть пересекает ось Х, потом надо искать где она касается оси (возрастает-убывает, экстреммум). И учесть тот факт , что поменять знак функция может в точке или промежутке разрыва непересекая ось и иметь экстреммум который не касается оси. Вобщем есть над чем голову поломать. Такчто на данный момент, самое лучшее средство для решения уравнений и прочих математических задач это MathType. Никогда не глючит, не ругается, имеет удобные средства форматирования, работает прямо в MS Word и без оного. ![]() ![]() |
|||
![]() |