Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline _Andrey_  
#1 Оставлено : 3 февраля 2009 г. 21:28:05(UTC)
_Andrey_

Статус: Newbie

Группы: Registered
Зарегистрирован: 03.02.2009(UTC)
Сообщений: 7

Доброго всем времени суток!

Во-первых, большое спасибо разработчикам за программу, особенно ее версию для КПК! Ведь всегда последние расчеты к докладу проводятся в поезде по дороге на конференциюBiggrin

У меня такой вопрос:
Как задать интервал значений для переменной (т.е а:=1 - 10 с шагом 1)?
Offline smath  
#2 Оставлено : 3 февраля 2009 г. 22:05:14(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
Приветствую.
Первое, что приходит в голову это использовать цикл для заполнения вектора

(скачать пример)

В следующей версии программы будет выделенная функция для таких операций (1...10), т.ч. будет проще.
Offline _Andrey_  
#3 Оставлено : 4 февраля 2009 г. 20:38:37(UTC)
_Andrey_

Статус: Newbie

Группы: Registered
Зарегистрирован: 03.02.2009(UTC)
Сообщений: 7

Спасибо за быстрый ответ!
Но у меня появился другой вопрос (сразу извиняюсь за тупость Confusion ):
А как ввести (на КПК) a1j:=j?
И еще одно: можно ли где-то скачать более-менее подробную инструкцию, или хотя-бы мини-FAQ по основным функциям программы, способам ввода значений и т.д. Тогда глупых вопросов было бы поменьше.

Отредактировано пользователем 4 февраля 2009 г. 20:47:47(UTC)  | Причина: Не указана

Offline XroM  
#4 Оставлено : 4 февраля 2009 г. 21:29:54(UTC)
XroM


Статус: Member

Группы: Registered
Зарегистрирован: 19.11.2008(UTC)
Сообщений: 19
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 2 раз
Меню - Вставка -Функция - матрицы и векторы - el() (там ниже показан формат функций)
или просто с клавиатуры el(a;1;j)
Offline smath  
#5 Оставлено : 4 февраля 2009 г. 23:33:40(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
Позволю себе чуть дополнить: ещё для Desktop версии удобно использовать клавишу "[" (для КПК тоже можно, если позволяет экранная клавиатура).

А вот инструкция - больной вопрос. Её начало есть и она очень постепенно наполняется, но до публикации ещё очень далеко. На данный момент данный форум - максимум, что есть "о программе".

Далее не обращайте внимания - крик души: "Технические писатели альтруисты, где Вы? Отзовитесь!".
Offline _Andrey_  
#6 Оставлено : 14 июля 2009 г. 18:48:05(UTC)
_Andrey_

Статус: Newbie

Группы: Registered
Зарегистрирован: 03.02.2009(UTC)
Сообщений: 7

smath написал:
В следующей версии программы будет выделенная функция для таких операций (1...10), т.ч. будет проще.


Уже есть? Извините, что сам не слежуConfusion
Offline smath  
#7 Оставлено : 14 июля 2009 г. 19:20:32(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
Да, уже есть. Функция называется range(..). Пишите с клавиатуры "range(;" и получите:
range(#;#)
или "range(;;" - получите:
range(#;#;#)

Ну а вот примеры:
Открыть в Облаке SMath

Отредактировано пользователем 14 июля 2009 г. 19:22:51(UTC)  | Причина: Не указана

Offline _Andrey_  
#8 Оставлено : 14 июля 2009 г. 19:23:42(UTC)
_Andrey_

Статус: Newbie

Группы: Registered
Зарегистрирован: 03.02.2009(UTC)
Сообщений: 7

Большое спасибо!!!! И за оперативный ответ, и за функцию.
Offline _Andrey_  
#9 Оставлено : 14 июля 2009 г. 20:26:02(UTC)
_Andrey_

Статус: Newbie

Группы: Registered
Зарегистрирован: 03.02.2009(UTC)
Сообщений: 7

Blush Опять проблемка:

вводим x:=1; 2 .. 3
дальше y(x):=x^2
результат y(x)=14.
Программа просумировала квадраты значений. А как получить интервал значений y(x)?
Offline smath  
#10 Оставлено : 14 июля 2009 г. 20:56:43(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
И снова хороший вопрос. Боюсь вот тут становится заметно, что ошибочным было моё решение использовать векторы в качестве массивов. Но ничего... к следующему разу введу массивы как отдельный тип данных + добавлю функции для конвертирования векторов/массивов/систем между собой.

Спасибо, продолжим совершенствовать программу.
Offline _Andrey_  
#11 Оставлено : 14 июля 2009 г. 21:00:51(UTC)
_Andrey_

Статус: Newbie

Группы: Registered
Зарегистрирован: 03.02.2009(UTC)
Сообщений: 7

Кстати, проверил: если задавать y(x):=x+2, то получаем масив
Offline smath  
#12 Оставлено : 14 июля 2009 г. 21:23:28(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
Не совсем так. Дело в том, что при сложении вектора со скаляром каждый элемент вектора складывается с этим скаляром, т.е. в данном случае результат операции просто аналогичен результату операции между массивом и скаляром.

Странно другое - я проверил аналогичные вычисления в Mathcad и такого не ожидал - посмотрите на скриншот:


Т.е. в Маткаде возведение вектора в степень не равно умножению вектора на себя самого указанное степенью количество раз! Это для меня новость. Попробую разобраться подробнее в чём тут дело...
Offline _Andrey_  
#13 Оставлено : 14 июля 2009 г. 21:33:08(UTC)
_Andrey_

Статус: Newbie

Группы: Registered
Зарегистрирован: 03.02.2009(UTC)
Сообщений: 7

Хочу немножко уточнить. Во-первых, я не математик, а химик. А данная программа мне интересна с точки зрения альтернативы Маткаду. Во-вторых, я имею дело со следующей задачей (в основном): задан интервал значений x, потом с КАЖДЫМ этим x проводятся операции, иногда для каждого вычисляется интеграл, потом все это - на график.
Схематически это выглядит так:
x(от 1 до 10) -> y(x) -> z(y(x), x) -> gz (y(x)), y(x), x)

И график зависимости g(z (y(x)), y(x), x) от х.

Извините за сумбурное изложение.
Offline smath  
#14 Оставлено : 14 июля 2009 г. 22:16:06(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
Не уверен, что точно понял, что требуется, но вот пример, от которого можно будет отталкнуться:

Скачать: multi_fun_plot.sm.
Offline OchkovVF  
#15 Оставлено : 19 июля 2009 г. 14:24:48(UTC)
OchkovVF


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 03.06.2009(UTC)
Сообщений: 156
Мужчина
Откуда: Moscow

Сказал «Спасибо»: 3 раз
Поблагодарили: 3 раз в 3 постах
_Andrey_ написал:
У меня такой вопрос:
Как задать интервал значений для переменной (т.е а:=1 - 10 с шагом 1)?


Некоторые соображения по поводу переменной-интервала (Range Variable).
Она была введена в самую первую версию Mathcad, где не было программирования, в первую очередь для построения графиков:
y(x):=...
x:=-10,-9.9..10
далее строим график (нажимаем @)
Пример twt.mpei.ac.ru/ochkov/Mathcad_12/1_64_Plot_Y1_Y2.png
Или для создания вектора или матрицы:
i:=0..99 V[i:=123*i-0.124
Потом (Mathcad 6) в пакет было введено программирование и график стало возможным строить, создав программированием (цикл for) два вектора X (дискретные значения аргумента x) и Y(дискретные значения функции y)
Пример графика без пограммирования, но любые вектора можно создать циклом for: twt.mpei.ac.ru/ochkov/Mathcad_14/Chapter1rus/68.png
В этой ситуации переменная-интервал стала излишней, но ее оставили, учитывая правило совместимости со старыми версиями Mathcad. Более того, эти два типа данных часто конфликтуют: перевод переменной-интервала в вектор - это "целая песня" и с этой проблемой многие намучались: в расчете, например, есть два объекта, имеющие вид вектора (собственно вектор и переменная-интервал одной длины), но сложить их элементы очень сложно, а для многих просто невозможно...
В Smath программирование есть изначально и, следовательно, от переменной-интервала (более слабый инструмент, конфликтующий с более мощным) можно сразу отказаться, "не перегружая корабль".
А мы-то знаем, что такая перегрузка, связанная с требованием совместимости, погубила не один "корабль"!

Кстати, когда русифицировался Mathcad 14, то по поводу перевода термина Range Variable были самые горячие споры. Остановились на термине "переменная-интервал", хотя это в какой-то мере компромисс. Термин-калька "ранжированная переменная", фигурирующий во многих неофициальных русских версиях Mathcad и во многих книгах, был сразу отвергнут.

Отредактировано пользователем 19 июля 2009 г. 14:55:36(UTC)  | Причина: Не указана

Offline smath  
#16 Оставлено : 21 июля 2009 г. 6:56:42(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
OchkovVF, большое спасибо за интересную информацию.

Range (просто Range, т.к. в программе это просто функция) была введена в нашу программу тоже, можно сказать, для обеспечения совместимости... совместимости пользователей Mathcad в работе со SMath Studio Good Думаю, не секрет, насколько важно это для популяризации проекта.

Знаю, что в Mathcad с помощью Range Variable можно решить множество задач помимо простой генерации массивов, т.ч. в дальнейшем эта возможность всё же будет совершенствоваться и здесь.

На текущий момент понятия "массив" (Array) в SMath Studio нет, а потому все действия по работе с коллекциями данных я предложил выполнять с помощью векторов (и матриц), что автоматически исключает проблему несовместимости типов данных. Однако очень важно, что бы пользователи понимали, что арифметические действия над векторами и матрицами подчиняются правилам математики, а потому, для проведения действий над выражениями в элементах векторов и матриц нужно использовать циклы. На текущий момент другого способа нет. А что б упростить работу, с моей стороны, нужно вводить настоящие массивы и мысли по реализации массивов у меня есть, но пока не знаю, стоит ли усложнять программу ими (взвешиваю все "за" и "против").

Отредактировано пользователем 3 августа 2009 г. 20:54:28(UTC)  | Причина: Не указана

Offline sun3  
#17 Оставлено : 2 декабря 2009 г. 12:33:11(UTC)
sun3


Статус: Member

Группы: Registered
Зарегистрирован: 02.12.2009(UTC)
Сообщений: 11
Женщина
Откуда: Юрга

smath написал:
Да, уже есть. Функция называется range(..). Пишите с клавиатуры "range(;" и получите:
range(#;#)
или "range(;;" - получите:
range(#;#;#)

Ну а вот примеры:
Открыть в Облаке SMath




Получилось ввести диапазон x←range(1;10). Но вычислять введенную формулу f(x)←nthroot(exp(2,2*x);3)-abs(sin((π*x)/{x+2/3}))+1,7 программа не хочет Sad Как быть?
Странно: функцию не хочет считать, а график построил, хм...

Отредактировано пользователем 2 декабря 2009 г. 14:36:12(UTC)  | Причина: Не указана

Offline smath  
#18 Оставлено : 2 декабря 2009 г. 19:36:11(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
sun3 написал:
Как быть? Странно: функцию не хочет считать, а график построил, хм...

Дело в том, что нельзя посчитать заданную Вами функцию от вектора, коим является результат работы функции range. Однако не сложно организовать цикл для просчёта функции от каждого элемента вектора в отдельности:


(скачать файл)
Offline sun3  
#19 Оставлено : 3 декабря 2009 г. 8:46:01(UTC)
sun3


Статус: Member

Группы: Registered
Зарегистрирован: 02.12.2009(UTC)
Сообщений: 11
Женщина
Откуда: Юрга

Скачала решение, спасибо Вам большое! Только у меня ответ не выводится Sad "Длина выражения слишком велика для корректного его отображения," - это подпись к циклу. В чём может быть проблема? Программу скачала с этого сайта, версия 0,85 (сборка 3531), дата 01.09.09.
Offline smath  
#20 Оставлено : 3 декабря 2009 г. 14:42:20(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 592 раз
Поблагодарили: 262 раз в 102 постах
sun3 написал:
Только у меня ответ не выводится

Ответ выведен после надписи y= под циклом. То, что у Вас не отображается - лишь подсказка.
sun3 написал:
В чём может быть проблема?

Ну собственно в этом и проблема: "Длина выражения слишком велика для корректного его отображения" Good В подсказках программа отображает символьное решение, а оно, в данном случае, получается очень длинным. Программа понимает, что слишком большая подсказка всё равно никому ничем не поможет (особенно если её размер больше размера дисплея) и не отрисовывает её. Если символьное решение необходимо увидеть, то просто посчитайте интересующие Вас значения под циклом символьно. Вот пример:
y—mat({17+10*(nthroot(exp(11/5);3)-abs(sin({3*π}/5)))}/10;{17*sqrt(2)+10*(-1+nthroot(exp(22/5);3)*sqrt(2))}/{10*sqrt(2)};{17+10*(nthroot(exp(33/5);3)-abs(sin({9*π}/11)))}/10;{17+10*(nthroot(exp(44/5);3)-abs(sin({6*π}/7)))}/10;{17+10*(nthroot(exp(11);3)-abs(sin({15*π}/17)))}/10;{17+10*(nthroot(exp(66/5);3)-abs(sin({9*π}/10)))}/10;{17+10*(nthroot(exp(77/5);3)-abs(sin({21*π}/23)))}/10;{17+10*(nthroot(exp(88/5);3)-abs(sin({12*π}/13)))}/10;{17+10*(nthroot(exp(99/5);3)-abs(sin({27*π}/29)))}/10;{17+10*(nthroot(exp(22);3)-abs(sin({15*π}/16)))}/10;10;1)
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.