Ошибка вычисления функции пользователя?

Ошибка вычисления функции пользователя? - Messages

#1 Posted: 11/28/2014 1:01:33 AM
Neuropriest

Neuropriest

0 likes in 19 posts.

Group: User

Имеется некий расчет, представленный по ссылке: Лист2.sm

Алгоритм выбирает ту, или иную функцию по заданному условию, после чего вычисляет её значения в точках с заданным шагом l.

Проблема: значения, полученные в матрице Y -не верны, однако, прямое обращение к функции уКП(10*'м,C)=0.003*'м -даёт правильный ответ. Правильный ответ даёт и прямое обращение к функции уРС(L,С)...

Что идёт не так?
Лист3.sm (6 KiB) downloaded 41 time(s).
#2 Posted: 11/28/2014 1:58:36 AM
Mike Kaganski

Mike Kaganski

184 likes in 434 posts.

Group: User

Возведение в степень скаляра и вектора дают разные результаты
С уважением, Михаил Каганский
#3 Posted: 11/28/2014 2:06:16 AM
Neuropriest

Neuropriest

0 likes in 19 posts.

Group: User

Wrote

Возведение в степень скаляра и вектора дают разные результаты


Согласен с такой трактовкой.
Но ведь в функцию в обоих случаях (основном и проверочном) попадают образмеренные переменные? Можно-ли как-то проверить: что туда попадает?
#4 Posted: 12/1/2014 12:54:31 PM
Neuropriest

Neuropriest

0 likes in 19 posts.

Group: User

Подкинем свеженькое поленце: тот-же файл без единиц измерений добавлен к головному посту...
#5 Posted: 12/9/2014 3:25:28 PM
Neuropriest

Neuropriest

0 likes in 19 posts.

Group: User

Окончательное доказательство правоты mikekaganski см. файл Лист3

Что ставит на повестку дня извечный русский вопрос: Что делать?
#6 Posted: 12/10/2014 6:24:33 AM
Mike Kaganski

Mike Kaganski

184 likes in 434 posts.

Group: User

Для SMath, похоже, возведение вектора в степень равно последовательному скалярному умножению вектора самого на себя соответствующее число раз.

Квадрат вектора, таким образом - это скаляр, равный сумме квадратов элементов (что и следовало ожидать).
Куб вектора - это квадрат вектора (скаляр), умноженный на вектор - то есть, результат - это вектор. Хм. Я не специалист, но мне почему-то не нравится.
Четвёртая степень - это третья степень вектора (вектор), умноженная на вектор -> результат - скаляр...

Ну, не знаю, не знаю. Мне почему-то казалось, что это должны быть все скаляры, равные сумме соответственных степеней элементов...

Как бы то ни было, это - никак не поэлементное возведение в степень, требующаяся уважаемому OP. Для поэлементного возведения нужна отдельная функция.

Прикреплённый пример использует функцию IsArray(#var) (автор w3b5urf3r_reloaded) из этой темы.
Лист3.sm (9 KiB) downloaded 37 time(s).
С уважением, Михаил Каганский
#7 Posted: 2/2/2015 8:16:18 PM
nik

nik

0 likes in 8 posts.

Group: User

я столкнулся с такой же проблемой, когда возведение в степень меняет размерность и преодолеть это невозможно( в частности при работе с ^2 и ^4 в одной формуле, что странно, производим действия над значением, а не его размерностью, понимаю иногда это оправдано, но иногда попадаешь в тупик, бывает, что такой единицы измерения нет в программе, не удалять же из-за одной формулы единицы измерения у всех остальных.
единицы измерения.sm (4 KiB) downloaded 39 time(s).
#8 Posted: 2/2/2015 11:55:05 PM
Mike Kaganski

Mike Kaganski

184 likes in 434 posts.

Group: User

Как Вам уже указал w3b5urf3r_reloaded здесь, у Вас совсем другая проблема. Возведение в степень меняет размерность? А Вы что хотели? Это как бы нормально. Если Вы умножаете длину на длину (это и есть возведение длины в квадрат), вы получаете площадь. Чтобы сложить несколько равных отрезков, нужно длину умножить на безразмерную величину "число отрезков". И возникновение таких "ошибок" свидетельствует, что написанная формула не имеет физического смысла.

А если формула, используемая Вами, получена не аналитически, а эмпирически (в таких формулах часто перемножают всё на всё), то есть в ней действительно не физический, а чисто математический смысл, то в неё и передавать физические величины (например, длины) нельзя, и уж извините, Вам придётся при работе с математическими пакетами вручную предусматривать "костыли" для обхода таких "кривых" формул. Ведь только Вы знаете, как именно длина должна быть преобразована к безразмерной величине: это должно быть 200 (миллиметров) или 0,2 (метра)? Как длина это одно и то же, а как безразмерное число для возведения в степень - совсем не одно и то же. Например, если Вы знаете, что в Вашу формулу будут передавать длины, это можно сделать так:
1.png
С уважением, Михаил Каганский
#9 Posted: 2/3/2015 12:49:10 AM
Neuropriest

Neuropriest

0 likes in 19 posts.

Group: User

Wrote

я столкнулся с такой же проблемой, не удалять же из-за одной формулы единицы измерения у всех остальных.



С той, да не с той.
В вашей формуле, внутри скобок, три слагаемых. Третье слагаемое- имеет размерность мм, второе мм, а вот первое (альфа)- безразмерное.


Что делать: либо везде размерности снимать, но я-бы, наоборот, альфу образмерил.

Wrote

вручную предусматривать "костыли" для обхода таких "кривых" формул.



Для нас, технарей, снятие/возвращение размерностей лучше делать на полях документа, дабы формулы не теряли привычный коллегам вид.
#10 Posted: 2/3/2015 7:00:25 AM
Mike Kaganski

Mike Kaganski

184 likes in 434 posts.

Group: User

Wrote

Третье слагаемое- имеет размерность мм, второе мм, а вот первое (альфа)- безразмерное


Ну, не совсем так: второе - 1/мм², третье - 1/мм⁴.

Wrote

Что делать: либо везде размерности снимать, но я-бы, наоборот, альфу образмерил


Кстати, да. Только одну альфу недостаточно. Придётся образмеривать и бету, и гамму. Они все должны быть длинами.
С уважением, Михаил Каганский
  • New Posts New Posts
  • No New Posts No New Posts