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

Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > Ребя, помогите, есть тут спецы по MathCad?

Ребя, помогите, есть тут спецы по MathCad?

Ответ
Поиск в этой теме
Непрочитано 16.03.2007, 14:02 #1
Ребя, помогите, есть тут спецы по MathCad?
Jam2006
 
Khv
Регистрация: 16.03.2007
Сообщений: 16

Суть проблемы

имеется массив m=(0 0 0 0 0 0 0 0 0 0 2 2.5)

как из этого массива выделеть самый маленький член, но не 0

вся загвостка в том, что массив m может быть разной длинны

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

версия маткада 13
Просмотров: 5405
 
Непрочитано 16.03.2007, 17:21
#2
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


проблема, наверное в том, что есть нули как раз. Есть токо опыт по pascal, но суть одна. Я бы попробовал из этого массива сначала создать новый без нулей (объяснять профи, как это делается, не буду), а уже потом искать там.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 16.03.2007, 17:35
#3
ander

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


Jam2006, суть программного блока такова:
a<- mТ(0)
for i=1 to rows(mT)-1
a<- m(i) if m(i)<a

Дома MathCAD не ставил, но если возникнут вопросы, могу подробнее..
Жирное Т транспонирование матрицы, если не соврал с названием, в общем, переворачивает матрицу. Вопрос будет, если есть отрицательные элементы массива, а минимум надо искать среди положительных, в данном примере я этого не вижу.
ander вне форума  
 
Непрочитано 16.03.2007, 17:41
#4
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


Плохо помню, а стандартной функции там разве нет?
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 16.03.2007, 18:18
#5
vasea

инженер
 
Регистрация: 16.11.2005
Кишинев
Сообщений: 79
Отправить сообщение для vasea с помощью Skype™


попробуи в хелп там дольжен быть раздел с примеры
vasea вне форума  
 
Непрочитано 16.03.2007, 18:18
#6
GlebbI4

проектирование, обследование
 
Регистрация: 22.10.2006
Днепропетровск
Сообщений: 115
<phrase 1=


Есть конечно (спецы)
Стандартная функция, завется min(x), возвращает значение минимального элемента массива
__________________
Мосты важнее, чем дома, они более святы, чем церкви, ибо сильнее объединяют.. ..они возводятся именно в тех местах, где сходится множество человеческих потребностей, они долговечнее других строений и никогда не служат какой-то скрытой или злой цели..
GlebbI4 вне форума  
 
Непрочитано 16.03.2007, 19:46
#7
GlebbI4

проектирование, обследование
 
Регистрация: 22.10.2006
Днепропетровск
Сообщений: 115
<phrase 1=


Цитата:
Сообщение от ander
Jam2006, суть программного блока такова:
a<- mТ(0)
for i=1 to rows(mT)-1
a<- mT(i) if mT(i)<a
Если попробовать посчитать по приведенному выше скрипту, то в а будут заноситься только отрицательные числа - ведь только они могут быть меньше чем mT(0), в случае, если 0 элемент находится в первом элементе.
Мой вариант:
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)
__________________
Мосты важнее, чем дома, они более святы, чем церкви, ибо сильнее объединяют.. ..они возводятся именно в тех местах, где сходится множество человеческих потребностей, они долговечнее других строений и никогда не служат какой-то скрытой или злой цели..
GlebbI4 вне форума  
 
Автор темы   Непрочитано 17.03.2007, 03:04
#8
Jam2006


 
Регистрация: 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 . .. . . .
Jam2006 вне форума  
 
Непрочитано 17.03.2007, 09:41
#9
GlebbI4

проектирование, обследование
 
Регистрация: 22.10.2006
Днепропетровск
Сообщений: 115
<phrase 1=


Можно начать перебор с конца и поставить break когда нули в цикле пойдут
Сэкономишь пару квантов процессорного времени
__________________
Мосты важнее, чем дома, они более святы, чем церкви, ибо сильнее объединяют.. ..они возводятся именно в тех местах, где сходится множество человеческих потребностей, они долговечнее других строений и никогда не служат какой-то скрытой или злой цели..
GlebbI4 вне форума  
 
Автор темы   Непрочитано 17.03.2007, 11:51
#10
Jam2006


 
Регистрация: 16.03.2007
Khv
Сообщений: 16


Угу можно но зачем?
Jam2006 вне форума  
 
Автор темы   Непрочитано 19.03.2007, 05:01
#11
Jam2006


 
Регистрация: 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

алгоритм работать не хочет, подскажите что не так
Jam2006 вне форума  
 
Непрочитано 19.03.2007, 05:52
#12
novinkov


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


Не стоит использовать программирование, если есть встроенные функции:
[ATTACH]1174272758.JPG[/ATTACH]

Кстати, для решения более ранней задачи пользовательское программирование также не требуется. Можно обойтись функциями сортировки и Match
novinkov вне форума  
 
Автор темы   Непрочитано 19.03.2007, 09:37
#13
Jam2006


 
Регистрация: 16.03.2007
Khv
Сообщений: 16


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

Jam2006 вне форума  
 
Непрочитано 19.03.2007, 09:54
#14
novinkov


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


Например:
[ATTACH]1174287261.JPG[/ATTACH]
novinkov вне форума  
 
Непрочитано 16.12.2007, 22:52
#15
allonim


 
Регистрация: 16.12.2007
Сообщений: 1


Народ!!! Огромная просьба! Помогите!!!
Проблема в следующем: Есть уравнения вида (см. скрин), а точнее система таких уравнений. Но мне бы разобраться как решать такие уравнения...
[img]http://i026.***********/0712/16/9df894eb9536t.jpg[/img]
В общем вся сложность в том, что это вектора, и блок Given find здесь не работает...
Может кто знает другие методы реализации???
allonim вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > Ребя, помогите, есть тут спецы по MathCad?

Размещение рекламы