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

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

#1 Опубликовано: 28.11.2014 01:01:33
Neuropriest

Neuropriest

0 сообщений из 19 понравились пользователям.

Группа: User

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

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

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

Что идёт не так?
Лист3.sm (6 КиБ) скачан 41 раз(а).
#2 Опубликовано: 28.11.2014 01:58:36
Mike Kaganski

Mike Kaganski

184 сообщений из 434 понравились пользователям.

Группа: User

Возведение в степень скаляра и вектора дают разные результаты
С уважением, Михаил Каганский
#3 Опубликовано: 28.11.2014 02:06:16
Neuropriest

Neuropriest

0 сообщений из 19 понравились пользователям.

Группа: User

Wrote

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


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

Neuropriest

0 сообщений из 19 понравились пользователям.

Группа: User

Подкинем свеженькое поленце: тот-же файл без единиц измерений добавлен к головному посту...
#5 Опубликовано: 09.12.2014 15:25:28
Neuropriest

Neuropriest

0 сообщений из 19 понравились пользователям.

Группа: User

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

Что ставит на повестку дня извечный русский вопрос: Что делать?
#6 Опубликовано: 10.12.2014 06:24:33
Mike Kaganski

Mike Kaganski

184 сообщений из 434 понравились пользователям.

Группа: User

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

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

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

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

Прикреплённый пример использует функцию IsArray(#var) (автор w3b5urf3r_reloaded) из этой темы.
Лист3.sm (9 КиБ) скачан 37 раз(а).
С уважением, Михаил Каганский
#7 Опубликовано: 02.02.2015 20:16:18
nik

nik

0 сообщений из 8 понравились пользователям.

Группа: User

я столкнулся с такой же проблемой, когда возведение в степень меняет размерность и преодолеть это невозможно( в частности при работе с ^2 и ^4 в одной формуле, что странно, производим действия над значением, а не его размерностью, понимаю иногда это оправдано, но иногда попадаешь в тупик, бывает, что такой единицы измерения нет в программе, не удалять же из-за одной формулы единицы измерения у всех остальных.
единицы измерения.sm (4 КиБ) скачан 39 раз(а).
#8 Опубликовано: 02.02.2015 23:55:05
Mike Kaganski

Mike Kaganski

184 сообщений из 434 понравились пользователям.

Группа: User

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

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

Neuropriest

0 сообщений из 19 понравились пользователям.

Группа: User

Wrote

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



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


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

Wrote

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



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

Mike Kaganski

184 сообщений из 434 понравились пользователям.

Группа: User

Wrote

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


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

Wrote

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


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