Интервал значений - Messages
Доброго всем времени суток!
Во-первых, большое спасибо разработчикам за программу, особенно ее версию для КПК! Ведь всегда последние расчеты к докладу проводятся в поезде по дороге на конференцию:d
У меня такой вопрос:
Как задать интервал значений для переменной (т.е а:=1 - 10 с шагом 1)?
Во-первых, большое спасибо разработчикам за программу, особенно ее версию для КПК! Ведь всегда последние расчеты к докладу проводятся в поезде по дороге на конференцию:d
У меня такой вопрос:
Как задать интервал значений для переменной (т.е а:=1 - 10 с шагом 1)?
Приветствую.
Первое, что приходит в голову это использовать цикл для заполнения вектора

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

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

Да, уже есть. Функция называется 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]
Большое спасибо!!!! И за оперативный ответ, и за функцию.

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

Т.е. в Маткаде возведение вектора в степень не равно умножению вектора на себя самого указанное степенью количество раз! Это для меня новость. Попробую разобраться подробнее в чём тут дело...
Странно другое - я проверил аналогичные вычисления в Mathcad и такого не ожидал - посмотрите на скриншот:
Т.е. в Маткаде возведение вектора в степень не равно умножению вектора на себя самого указанное степенью количество раз! Это для меня новость. Попробую разобраться подробнее в чём тут дело...
Хочу немножко уточнить. Во-первых, я не математик, а химик. А данная программа мне интересна с точки зрения альтернативы Маткаду. Во-вторых, я имею дело со следующей задачей (в основном): задан интервал значений 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) от х.
Извините за сумбурное изложение.
Не уверен, что точно понял, что требуется, но вот пример, от которого можно будет отталкнуться:

Скачать: multi_fun_plot.sm.
Скачать: multi_fun_plot.sm.
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 и во многих книгах, был сразу отвергнут.
OchkovVF, большое спасибо за интересную информацию.
Range (просто Range, т.к. в программе это просто функция) была введена в нашу программу тоже, можно сказать, для обеспечения совместимости... совместимости пользователей Mathcad в работе со SMath Studio
Думаю, не секрет, насколько важно это для популяризации проекта.
Знаю, что в Mathcad с помощью Range Variable можно решить множество задач помимо простой генерации массивов, т.ч. в дальнейшем эта возможность всё же будет совершенствоваться и здесь.
На текущий момент понятия "массив" (Array) в SMath Studio нет, а потому все действия по работе с коллекциями данных я предложил выполнять с помощью векторов (и матриц), что автоматически исключает проблему несовместимости типов данных. Однако очень важно, что бы пользователи понимали, что арифметические действия над векторами и матрицами подчиняются правилам математики, а потому, для проведения действий над выражениями в элементах векторов и матриц нужно использовать циклы. На текущий момент другого способа нет. А что б упростить работу, с моей стороны, нужно вводить настоящие массивы и мысли по реализации массивов у меня есть, но пока не знаю, стоит ли усложнять программу ими (взвешиваю все "за" и "против").
Range (просто Range, т.к. в программе это просто функция) была введена в нашу программу тоже, можно сказать, для обеспечения совместимости... совместимости пользователей Mathcad в работе со SMath Studio

Знаю, что в Mathcad с помощью Range Variable можно решить множество задач помимо простой генерации массивов, т.ч. в дальнейшем эта возможность всё же будет совершенствоваться и здесь.
На текущий момент понятия "массив" (Array) в SMath Studio нет, а потому все действия по работе с коллекциями данных я предложил выполнять с помощью векторов (и матриц), что автоматически исключает проблему несовместимости типов данных. Однако очень важно, что бы пользователи понимали, что арифметические действия над векторами и матрицами подчиняются правилам математики, а потому, для проведения действий над выражениями в элементах векторов и матриц нужно использовать циклы. На текущий момент другого способа нет. А что б упростить работу, с моей стороны, нужно вводить настоящие массивы и мысли по реализации массивов у меня есть, но пока не знаю, стоит ли усложнять программу ими (взвешиваю все "за" и "против").
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 программа не хочет

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

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]
-
New Posts
-
No New Posts