|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
16.03.2007, 14:02 | #1 | |
Ребя, помогите, есть тут спецы по MathCad?
Khv
Регистрация: 16.03.2007
Сообщений: 16
|
||
Просмотров: 5404
|
|
||||
Конструктор по сути (машиностроитель) Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391
|
проблема, наверное в том, что есть нули как раз. Есть токо опыт по pascal, но суть одна. Я бы попробовал из этого массива сначала создать новый без нулей (объяснять профи, как это делается, не буду), а уже потом искать там.
__________________
Век живи, век учись - ... |
|||
|
||||
проектирование Регистрация: 01.11.2006
Кемерово
Сообщений: 2,891
|
Jam2006, суть программного блока такова:
a<- mТ(0) for i=1 to rows(mT)-1 a<- m(i) if m(i)<a Дома MathCAD не ставил, но если возникнут вопросы, могу подробнее.. Жирное Т транспонирование матрицы, если не соврал с названием, в общем, переворачивает матрицу. Вопрос будет, если есть отрицательные элементы массива, а минимум надо искать среди положительных, в данном примере я этого не вижу. |
|||
|
||||
Машиностроение, Проектирование Регистрация: 15.09.2003
Москва
Сообщений: 1,113
|
Плохо помню, а стандартной функции там разве нет?
|
|||
|
||||
проектирование, обследование Регистрация: 22.10.2006
Днепропетровск
Сообщений: 115
|
Есть конечно (спецы)
Стандартная функция, завется min(x), возвращает значение минимального элемента массива
__________________
Мосты важнее, чем дома, они более святы, чем церкви, ибо сильнее объединяют.. ..они возводятся именно в тех местах, где сходится множество человеческих потребностей, они долговечнее других строений и никогда не служат какой-то скрытой или злой цели.. |
|||
|
||||
проектирование, обследование Регистрация: 22.10.2006
Днепропетровск
Сообщений: 115
|
Цитата:
Мой вариант: a<- max(mT) for i=1 to rows(mT)-1 if (mT(i)>0)^(mT(i)<a) a<- mT(i) Т.е. заносим большое число в а, сравниваем, больше нуля и меньше ли а текущий элемент массива (он должен быть меньше а или же равен нулю, максимальному элементу), следующим циклом элементы массива сравниваются между собой и должны быть отличными от 0. Транспонировать матрицу нужно для того, чтобы не писать двойных индексов - к матрице строке необходимо обращаться m(0,i), а к матрице столбцу mT(i)
__________________
Мосты важнее, чем дома, они более святы, чем церкви, ибо сильнее объединяют.. ..они возводятся именно в тех местах, где сходится множество человеческих потребностей, они долговечнее других строений и никогда не служат какой-то скрытой или злой цели.. |
|||
|
||||
Регистрация: 16.03.2007
Khv
Сообщений: 16
|
Спасибо что так быстро откликнулись....
2Генадий - стандартная функция есть, min(M) и max(M) если вы это имели в виду, но они возвращают 0 Спасибо всем что предложиди решения проблемы, некоторые из них я не совсем понял но вчера написал алгоритм.... он правдаграмосткий и его можно было сделать проще... но вот он матрица s=(0 0 0 0 0 0 2 0 0 0 0 2.5) - повторяю размер не постоянный он получается в зависимости от другого алгоритма не представленного здесь воспользуемся встроеной функцией сортировки матрицы по возрастанию s:=rsort(s,0) получаем матрицу вида s=(0 0 0 0 0 0 0 0 0 0 2 2.5) определяем количество колонок матрицы, так как она одномерная, то мы найдем и кол-во элементов kl:=cols(s) считаем количесвто ненулевых членов sl:=| sl <- 0 | for i Е 0 .. (kl-1) | sl <- sl+1 if s(0,i) неравно 0 | sl sl=2 так как она у нас рассортирована то минимальное - не ноль находится так : smin:=s(0,kl-sl) smin=2 проверял работу функции на таком массиве (0 0 0 0 0 3 0 0 0 4 0 0 0 6) все работает возвращает значение 3 . .. . . . |
|||
|
||||
проектирование, обследование Регистрация: 22.10.2006
Днепропетровск
Сообщений: 115
|
Можно начать перебор с конца и поставить break когда нули в цикле пойдут
Сэкономишь пару квантов процессорного времени
__________________
Мосты важнее, чем дома, они более святы, чем церкви, ибо сильнее объединяют.. ..они возводятся именно в тех местах, где сходится множество человеческих потребностей, они долговечнее других строений и никогда не служат какой-то скрытой или злой цели.. |
|||
|
||||
Регистрация: 16.03.2007
Khv
Сообщений: 16
|
Возникла проблема:
существует нормальный ряд чисел ряд:=(3.2 3.4 3.6 ..... 25 26 28 ... 950) и есть результат d=27.4 Нужно что бы d принял ближайшее большее число из ряда т.е. стал 28 пишу алгоритм s:=|for i Е 1 .. 100 | s <-- ряд(0,i+1) if ряд(0,i) < d < ряд(0,i+1) |s алгоритм работать не хочет, подскажите что не так |
|||
|
||||
Регистрация: 10.03.2005
Кемерово
Сообщений: 277
|
Не стоит использовать программирование, если есть встроенные функции:
[ATTACH]1174272758.JPG[/ATTACH] Кстати, для решения более ранней задачи пользовательское программирование также не требуется. Можно обойтись функциями сортировки и Match |
|||
|
||||
Регистрация: 16.12.2007
Сообщений: 1
|
Народ!!! Огромная просьба! Помогите!!!
Проблема в следующем: Есть уравнения вида (см. скрин), а точнее система таких уравнений. Но мне бы разобраться как решать такие уравнения... [img]http://i026.***********/0712/16/9df894eb9536t.jpg[/img] В общем вся сложность в том, что это вектора, и блок Given find здесь не работает... Может кто знает другие методы реализации??? |
|||