Интервал значений - Сообщения
#1 Опубликовано: 03.02.2009 15:28:05
Доброго всем времени суток!
Во-первых, большое спасибо разработчикам за программу, особенно ее версию для КПК! Ведь всегда последние расчеты к докладу проводятся в поезде по дороге на конференцию:d
У меня такой вопрос:
Как задать интервал значений для переменной (т.е а:=1 - 10 с шагом 1)?
Во-первых, большое спасибо разработчикам за программу, особенно ее версию для КПК! Ведь всегда последние расчеты к докладу проводятся в поезде по дороге на конференцию:d
У меня такой вопрос:
Как задать интервал значений для переменной (т.е а:=1 - 10 с шагом 1)?
#2 Опубликовано: 03.02.2009 16:05:14
Приветствую.
Первое, что приходит в голову это использовать цикл для заполнения вектора

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

А как ввести (на КПК) a1j:=j?
И еще одно: можно ли где-то скачать более-менее подробную инструкцию, или хотя-бы мини-FAQ по основным функциям программы, способам ввода значений и т.д. Тогда глупых вопросов было бы поменьше.
#4 Опубликовано: 04.02.2009 15:29:54
Меню - Вставка -Функция - матрицы и векторы - el() (там ниже показан формат функций)
или просто с клавиатуры el(a;1;j)
или просто с клавиатуры el(a;1;j)
#5 Опубликовано: 04.02.2009 17:33:40
Позволю себе чуть дополнить: ещё для Desktop версии удобно использовать клавишу "[" (для КПК тоже можно, если позволяет экранная клавиатура).
А вот инструкция - больной вопрос. Её начало есть и она очень постепенно наполняется, но до публикации ещё очень далеко. На данный момент данный форум - максимум, что есть "о программе".
Далее не обращайте внимания - крик души: "Технические писатели альтруисты, где Вы? Отзовитесь!".
А вот инструкция - больной вопрос. Её начало есть и она очень постепенно наполняется, но до публикации ещё очень далеко. На данный момент данный форум - максимум, что есть "о программе".
Далее не обращайте внимания - крик души: "Технические писатели альтруисты, где Вы? Отзовитесь!".
#6 Опубликовано: 14.07.2009 11:48:05
WroteВ следующей версии программы будет выделенная функция для таких операций (1...10), т.ч. будет проще.
Уже есть? Извините, что сам не слежу

#7 Опубликовано: 14.07.2009 12:20:32
Да, уже есть. Функция называется range(..). Пишите с клавиатуры "range(;" и получите:
[MATH]range(#;#)[/MATH]
или "range(;;" - получите:
[MATH]range(#;#;#)[/MATH]
Ну а вот примеры:
[LIVE width=369 height=222]http://smath.info/live/?file=544[/LIVE]
[MATH]range(#;#)[/MATH]
или "range(;;" - получите:
[MATH]range(#;#;#)[/MATH]
Ну а вот примеры:
[LIVE width=369 height=222]http://smath.info/live/?file=544[/LIVE]
#8 Опубликовано: 14.07.2009 12:23:42
Большое спасибо!!!! И за оперативный ответ, и за функцию.
#9 Опубликовано: 14.07.2009 13:26:02

вводим x:=1; 2 .. 3
дальше y(x):=x^2
результат y(x)=14.
Программа просумировала квадраты значений. А как получить интервал значений y(x)?
#10 Опубликовано: 14.07.2009 13:56:43
И снова хороший вопрос. Боюсь вот тут становится заметно, что ошибочным было моё решение использовать векторы в качестве массивов. Но ничего... к следующему разу введу массивы как отдельный тип данных + добавлю функции для конвертирования векторов/массивов/систем между собой.
Спасибо, продолжим совершенствовать программу.
Спасибо, продолжим совершенствовать программу.
#11 Опубликовано: 14.07.2009 14:00:51
Кстати, проверил: если задавать y(x):=x+2, то получаем масив
#12 Опубликовано: 14.07.2009 14:23:28
Не совсем так. Дело в том, что при сложении вектора со скаляром каждый элемент вектора складывается с этим скаляром, т.е. в данном случае результат операции просто аналогичен результату операции между массивом и скаляром.
Странно другое - я проверил аналогичные вычисления в Mathcad и такого не ожидал - посмотрите на скриншот:

Т.е. в Маткаде возведение вектора в степень не равно умножению вектора на себя самого указанное степенью количество раз! Это для меня новость. Попробую разобраться подробнее в чём тут дело...
Странно другое - я проверил аналогичные вычисления в Mathcad и такого не ожидал - посмотрите на скриншот:
Т.е. в Маткаде возведение вектора в степень не равно умножению вектора на себя самого указанное степенью количество раз! Это для меня новость. Попробую разобраться подробнее в чём тут дело...
#13 Опубликовано: 14.07.2009 14:33:08
Хочу немножко уточнить. Во-первых, я не математик, а химик. А данная программа мне интересна с точки зрения альтернативы Маткаду. Во-вторых, я имею дело со следующей задачей (в основном): задан интервал значений x, потом с КАЖДЫМ этим x проводятся операции, иногда для каждого вычисляется интеграл, потом все это - на график.
Схематически это выглядит так:
x(от 1 до 10) -> y(x) -> z(y(x), x) -> gz (y(x)), y(x), x)
И график зависимости g(z (y(x)), y(x), x) от х.
Извините за сумбурное изложение.
Схематически это выглядит так:
x(от 1 до 10) -> y(x) -> z(y(x), x) -> gz (y(x)), y(x), x)
И график зависимости g(z (y(x)), y(x), x) от х.
Извините за сумбурное изложение.
#14 Опубликовано: 14.07.2009 15:16:06
Не уверен, что точно понял, что требуется, но вот пример, от которого можно будет отталкнуться:

Скачать: multi_fun_plot.sm.
Скачать: multi_fun_plot.sm.
#15 Опубликовано: 19.07.2009 07:24:48
WroteУ меня такой вопрос:
Как задать интервал значений для переменной (т.е а:=1 - 10 с шагом 1)?
Некоторые соображения по поводу переменной-интервала (Range Variable).
Она была введена в самую первую версию Mathcad, где не было программирования, в первую очередь для построения графиков:
y(x):=...
x:=-10,-9.9..10
далее строим график (нажимаем @)
Пример http://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: http://twt.mpei.ac.ru/ochkov/Mathcad_14/Chapter1rus/68.png
В этой ситуации переменная-интервал стала излишней, но ее оставили, учитывая правило совместимости со старыми версиями Mathcad. Более того, эти два типа данных часто конфликтуют: перевод переменной-интервала в вектор - это "целая песня" и с этой проблемой многие намучались: в расчете, например, есть два объекта, имеющие вид вектора (собственно вектор и переменная-интервал одной длины), но сложить их элементы очень сложно, а для многих просто невозможно...
В Smath программирование есть изначально и, следовательно, от переменной-интервала (более слабый инструмент, конфликтующий с более мощным) можно сразу отказаться, "не перегружая корабль".
А мы-то знаем, что такая перегрузка, связанная с требованием совместимости, погубила не один "корабль"!
Кстати, когда русифицировался Mathcad 14, то по поводу перевода термина Range Variable были самые горячие споры. Остановились на термине "переменная-интервал", хотя это в какой-то мере компромисс. Термин-калька "ранжированная переменная", фигурирующий во многих неофициальных русских версиях Mathcad и во многих книгах, был сразу отвергнут.
#16 Опубликовано: 20.07.2009 23:56:42
OchkovVF, большое спасибо за интересную информацию.
Range (просто Range, т.к. в программе это просто функция) была введена в нашу программу тоже, можно сказать, для обеспечения совместимости... совместимости пользователей Mathcad в работе со SMath Studio
Думаю, не секрет, насколько важно это для популяризации проекта.
Знаю, что в Mathcad с помощью Range Variable можно решить множество задач помимо простой генерации массивов, т.ч. в дальнейшем эта возможность всё же будет совершенствоваться и здесь.
На текущий момент понятия "массив" (Array) в SMath Studio нет, а потому все действия по работе с коллекциями данных я предложил выполнять с помощью векторов (и матриц), что автоматически исключает проблему несовместимости типов данных. Однако очень важно, что бы пользователи понимали, что арифметические действия над векторами и матрицами подчиняются правилам математики, а потому, для проведения действий над выражениями в элементах векторов и матриц нужно использовать циклы. На текущий момент другого способа нет. А что б упростить работу, с моей стороны, нужно вводить настоящие массивы и мысли по реализации массивов у меня есть, но пока не знаю, стоит ли усложнять программу ими (взвешиваю все "за" и "против").
Range (просто Range, т.к. в программе это просто функция) была введена в нашу программу тоже, можно сказать, для обеспечения совместимости... совместимости пользователей Mathcad в работе со SMath Studio

Знаю, что в Mathcad с помощью Range Variable можно решить множество задач помимо простой генерации массивов, т.ч. в дальнейшем эта возможность всё же будет совершенствоваться и здесь.
На текущий момент понятия "массив" (Array) в SMath Studio нет, а потому все действия по работе с коллекциями данных я предложил выполнять с помощью векторов (и матриц), что автоматически исключает проблему несовместимости типов данных. Однако очень важно, что бы пользователи понимали, что арифметические действия над векторами и матрицами подчиняются правилам математики, а потому, для проведения действий над выражениями в элементах векторов и матриц нужно использовать циклы. На текущий момент другого способа нет. А что б упростить работу, с моей стороны, нужно вводить настоящие массивы и мысли по реализации массивов у меня есть, но пока не знаю, стоит ли усложнять программу ими (взвешиваю все "за" и "против").
#17 Опубликовано: 02.12.2009 06:33:11
WroteДа, уже есть. Функция называется range(..). Пишите с клавиатуры "range(;" и получите:
[MATH]range(#;#)[/MATH]
или "range(;;" - получите:
[MATH]range(#;#;#)[/MATH]
Ну а вот примеры:
[LIVE width=369 height=222]http://smath.info/live/?file=544[/LIVE]
Получилось ввести диапазон x←range(1;10). Но вычислять введенную формулу f(x)←nthroot(exp(2,2*x);3)-abs(sin((π*x)/{x+2/3}))+1,7 программа не хочет

Странно: функцию не хочет считать, а график построил, хм...
#18 Опубликовано: 02.12.2009 13:36:11
WroteКак быть? Странно: функцию не хочет считать, а график построил, хм...
Дело в том, что нельзя посчитать заданную Вами функцию от вектора, коим является результат работы функции range. Однако не сложно организовать цикл для просчёта функции от каждого элемента вектора в отдельности:
(скачать файл)
#19 Опубликовано: 03.12.2009 02:46:01
Скачала решение, спасибо Вам большое! Только у меня ответ не выводится
"Длина выражения слишком велика для корректного его отображения," - это подпись к циклу. В чём может быть проблема? Программу скачала с этого сайта, версия 0,85 (сборка 3531), дата 01.09.09.

#20 Опубликовано: 03.12.2009 08:42:20
WroteТолько у меня ответ не выводится
Ответ выведен после надписи y= под циклом. То, что у Вас не отображается - лишь подсказка.
WroteВ чём может быть проблема?
Ну собственно в этом и проблема: "Длина выражения слишком велика для корректного его отображения"

[MATH]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)[/MATH]
-
Новые сообщения
-
Нет новых сообщений