1 Pages (7 items)
Why I have no - Normal and Tangent - Messages
#1 Posted: 9/23/2023 1:38:17 PM
#3 Posted: 9/23/2023 5:14:50 PM
The original algorithm is not robust in the vicinity of x=0 and not suited for x<0.
Alternative approach:
![2023-09-23 22_05_12-SMath Solver - [Krivizna-x3-metry.sm_].png](/en-US/file/UNLToH/2023-09-23-22_05_12-SMath-Solver---_Krivizna-x3-metry_sm___png)
Krivizna-x3-metry_Kr.sm (20 KiB) downloaded 27 time(s).
Alternative approach:
Krivizna-x3-metry_Kr.sm (20 KiB) downloaded 27 time(s).
Martin Kraska
Pre-configured portable distribution of SMath Studio: https://en.smath.info/wiki/SMath%20with%20Plugins.ashx
3 users liked this post
Valery Ochkov 9/24/2023 12:33:00 AM, Oscar Campo 9/23/2023 6:01:00 PM, Вячеслав Мезенцев 9/24/2023 3:14:00 AM
#4 Posted: 9/24/2023 12:37:27 AM
#5 Posted: 9/24/2023 1:50:16 AM
Дело тут в том, что изначально XY Plot не поддерживал единицы измерений и сейчас не очень поддерживает. В отличие от Mathcad, где их можно задать на самой оси графика, здесь этого сделать нельзя. По этой причине по оси X у нас в свойствах компонента задан безразмерный диапазон чисел от xmin до xmax.
XY Plot честно подставляет число из этого диапазона. Если это сделать для функции, которая работает с размерностями, то будет ошибка в вычислениях:

XY Plot устроен так, что он пытается отобразить всё, что сможет из того, что задано. Если при вычислении какого-то выражения возникли ошибки, то оно не отображается. Это помогает искать ошибки, т.к. можно понять по графикам что именно не отобразилось, а значит - не вычислилось.
Поскольку в XY Plot нет места, где можно указать размерность, я ввёл возможность делать подсказку для компонента - можно писать размерность рядом с неизвестным аргументом у функции. Но это работает только в некоторых простейших случаях.
Теперь представьте себя на месте компонента XY Plot. У вас есть диапазон по X, он безразмерный. Вы видите на входе выражение для нормали fN(x) и пытаетесь подставить туда число, чтобы получить значение по y. Выражение не вычислится. Будет "тихая" ошибка и график не построится.
f(x) не имеет такой проблемы, потому что некоторые выражения работают с безразмерными аргументами.
По этой же причине вам приходится уравнение окружности делать безразмерным, т.к. иначе будут ошибки в вычислениях и окружность не построится. Добавить размерность к x и y аргументам по аналогии не получится, т.к. это слишком сложный случай для разбора в общем случае и компонент XY Plot не может этого сделать.
Можно решить эту проблему так, как это сделано в Mathcad - путём явного указания размерности для каждой оси. Но для этого нужно изменить сам компонент, что для меня не тривиально, т.к. у меня нет опыта добавления новых placeholder'ов. Их трудно программировать.
XY Plot честно подставляет число из этого диапазона. Если это сделать для функции, которая работает с размерностями, то будет ошибка в вычислениях:
XY Plot устроен так, что он пытается отобразить всё, что сможет из того, что задано. Если при вычислении какого-то выражения возникли ошибки, то оно не отображается. Это помогает искать ошибки, т.к. можно понять по графикам что именно не отобразилось, а значит - не вычислилось.
Поскольку в XY Plot нет места, где можно указать размерность, я ввёл возможность делать подсказку для компонента - можно писать размерность рядом с неизвестным аргументом у функции. Но это работает только в некоторых простейших случаях.
Теперь представьте себя на месте компонента XY Plot. У вас есть диапазон по X, он безразмерный. Вы видите на входе выражение для нормали fN(x) и пытаетесь подставить туда число, чтобы получить значение по y. Выражение не вычислится. Будет "тихая" ошибка и график не построится.
f(x) не имеет такой проблемы, потому что некоторые выражения работают с безразмерными аргументами.
По этой же причине вам приходится уравнение окружности делать безразмерным, т.к. иначе будут ошибки в вычислениях и окружность не построится. Добавить размерность к x и y аргументам по аналогии не получится, т.к. это слишком сложный случай для разбора в общем случае и компонент XY Plot не может этого сделать.
Можно решить эту проблему так, как это сделано в Mathcad - путём явного указания размерности для каждой оси. Но для этого нужно изменить сам компонент, что для меня не тривиально, т.к. у меня нет опыта добавления новых placeholder'ов. Их трудно программировать.
Russia ☭ forever, Viacheslav N. Mezentsev
1 users liked this post
Valery Ochkov 9/24/2023 8:45:00 AM
#6 Posted: 9/24/2023 7:07:28 AM
In Maxima graphics, the base units are set to 1. Units like cm and mm are respected because they are properly converted to base units.
This is not the same as activating the "ignore units" context menu item. If that is activated, 1 cm is the same as 1 m.
![2023-09-24 11_53_21-SMath Solver - [Krivizna-x3-metry_Kr.sm_].png](/en-US/file/TqPyvQ/2023-09-24-11_53_21-SMath-Solver---_Krivizna-x3-metry_Kr_sm___png)
Krivizna-x3-metry_Draw_Kr.sm (190 KiB) downloaded 14 time(s).
units.sm (55 KiB) downloaded 22 time(s).

This is not the same as activating the "ignore units" context menu item. If that is activated, 1 cm is the same as 1 m.
Krivizna-x3-metry_Draw_Kr.sm (190 KiB) downloaded 14 time(s).
units.sm (55 KiB) downloaded 22 time(s).
Martin Kraska
Pre-configured portable distribution of SMath Studio: https://en.smath.info/wiki/SMath%20with%20Plugins.ashx
1 users liked this post
Valery Ochkov 9/24/2023 8:45:00 AM
#7 Posted: 9/24/2023 8:48:45 AM
Thanks to all!
About this problem in English
Tramway.pdf (1 MiB) downloaded 33 time(s).
I will be glad to hear your comments and additions!
My solution for real street cab with units
Krivizna-x3-metry.sm (18 KiB) downloaded 21 time(s).


About this problem in English
Tramway.pdf (1 MiB) downloaded 33 time(s).
I will be glad to hear your comments and additions!
My solution for real street cab with units
Krivizna-x3-metry.sm (18 KiB) downloaded 21 time(s).
1 users liked this post
Oscar Campo 9/25/2023 6:38:00 AM
1 Pages (7 items)
-
New Posts
-
No New Posts