Форум программистов, компьютерный форум, киберфорум
MathCAD
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
3 / 3 / 0
Регистрация: 13.05.2013
Сообщений: 34
1

Округление значения по ряду Е24

13.05.2013, 15:35. Показов 4979. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такой ряд Е24:
1,0; 1,1; 1,2; 1,3; 1,5; 1,6; 1,8;
2,0; 2,2; 2,4; 2,7
3,0; 3,3; 3,6; 3,9
4,3; 4,7
5,1; 5,6
6,2; 6,8
7,5
8,2
9,1
Результат можно множить на 10 в n-ной степени, в зависимости от порядка входного значения.

Нужно сделать такую функцию или формулу, чтобы результат округлялся с погрешность +-5%, если больше 5%, то в большую сторону.
Например:
На входе 27052 , на выходе 27000
На входе 25481 , на выходе 27000
На входе 6,3 , на выходе 6,2

Нашел формулу под EXCEL:
Русский: =10^ОТБР(LOG($C$65)) * ВЫБОР(1,25 + 24 * (LOG($C$65) - ОТБР( LOG($C$65) ) );1;1,1;1,2;1,3;1,5;1,6;1,8;2;2,2;2,4;2,7;3;3,3;3,6;3,9;4,3;4,7;5,1;5,6;6,2;6,8; 7,5;8,2;9,1;10)
Английский: =10^TRUNC(LOG(С65))*CHOOSE(1.5+12*(LOG(С65)-TRUNC(LOG(С65))),1,1.2,1.5,1.8,2.2,2.7,3.3,3.9,4.7,5.6,6.8,8.2,10)
Только формула работает не особо точно, то есть при значении 25481 она округляет его в меньшею сторону, в результате чего превышается погрешность +5%, да и в случае с округлением в большую сторону погрешность будет хоть и больше чем -5%, но всё же меньше чем при округлении в меньшую сторону

Также нашел код на бейсике походу, но я в нем почти ничего не шарю.
Кликните здесь для просмотра всего текста
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function R24C(rin) As Single 
Dim RvL, RvH, rout, Mult As Single
Dim rv24(25) As Single 
rv24 = Array(1,1.1,1.2,1.3,1.5,1.6,1.8,2,2.2,2.4,2.7,3,3.3,3.6,3.9,4.3,4.7,5.1,5.6,6.2,6.8,7.5,8.2,9.1,10) 
Mult = 1 
While (rin >= 10) 
  rin = rin / 10 
  Mult = Mult * 10 
Wend 
For j=1 to 24 
  RvH = rv24(j) 
  If (rin <= RvH) Then 
    RvL = rv24(j - 1) 
    j = 24 
  Endif 
Next j 
If ((RvH - rin) < (rin - RvL)) Then 
  rout = RvH 
Else 
  rout = RvL 
Endif 
R24C = rout * Mult 
End Function

Хочу всё это сделать под MathCAD Prime 2.0, но пример для MathCAD 15 тоже не помешает.

Заранее спасибо за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2013, 15:35
Ответы с готовыми решениями:

Как привести к номинальному ряду Е24?
Как привести к стандартному ряду Е-24 по резисторам? Например, у меня получились значения: 249,25;...

Присвоение одного значения ряду переменных
ошибку выдает, а так-то очень удобно было-бы, там их штук 5 сразу обнулять надо, хочется в одной...

Количество чисел в ряду более определенного значения
Друзья, добрый день. Помогите, пожалуйста, с созданием формулы (или выбором функции). Задача...

Нужно чтоб текст который вводится появлялся в 15 ряду и начал двигаться по горизонтали пока не появится в 16 ряду в начале
Нужно чтоб текст который вводится появлялся в 15 ряду и начал двигаться по горизонтали пока не...

11
Модератор
Эксперт по математике/физике
5240 / 4027 / 1385
Регистрация: 30.07.2012
Сообщений: 12,288
13.05.2013, 16:36 2
Насколько я понял Вашу задачу... (для начала)
Вложения
Тип файла: rar pahan35.rar (8.2 Кб, 22 просмотров)
1
3 / 3 / 0
Регистрация: 13.05.2013
Сообщений: 34
13.05.2013, 17:16  [ТС] 3
Цитата Сообщение от VSI Посмотреть сообщение
Насколько я понял Вашу задачу... (для начала)
Вложения
pahan35.rar (8.2 Кб, 0 просмотров)
Спасибо за старания. Но либо я не понял как пользоваться документом, либо задача не была понята.
В конце вы написали
Ваша функция: a + b * c^x , где
. Вместо чего и куда я должен поставить значение переменной, чтобы оно выдало мне необходимый результат - округление? Если вместо х ставить, то там просто возрастающая функция получается. Возможно вы меня неправильно поняли. Для большего понимания это вопрос рассматривался здесь здесь.

Должно быть почти так, как в екселе, только там есть некоторые моменты, когда происходят ошибки

P.S: Посоветуйте хорошую книжку по маткаду (прайм или такой не особо важно, хотя если можно, то по обоим). Книжек в интернете полно, а времени в обрез.
Вложения
Тип файла: xlsx E24.xlsx (10.0 Кб, 12 просмотров)
0
3 / 3 / 0
Регистрация: 13.05.2013
Сообщений: 34
13.05.2013, 17:53  [ТС] 4
2303 неверно округляет в екселе =2200 , а надо 2400
Вложения
Тип файла: xlsx E24.xlsx (10.0 Кб, 15 просмотров)
0
3 / 3 / 0
Регистрация: 13.05.2013
Сообщений: 34
14.05.2013, 17:27  [ТС] 5
VSI, Есть ли в MathCAD циклы сравнения аналогичные прописанным в бейсиковском коде?

Здесь входное число делиться до тех пор пока, оно не станет меньше 10.
PureBasic
1
2
3
4
While (rin >= 10) 
  rin = rin / 10 
  Mult = Mult * 10 
Wend
Также нужно учесть вариант когда оно мешьше 1 чтобы оно умножалось на 10

Здесь ищут между какими элементами массива находится входное значение
PureBasic
1
2
3
4
5
6
7
For j=1 to 24 
  RvH = rv24(j) 
  If (rin <= RvH) Then 
    RvL = rv24(j - 1) 
    j = 24 
  Endif 
Next j
Здесь сравнивают к какому из двух элементов массива входное значение ближе всего.
PureBasic
1
2
3
4
If ((RvH - rin) < (rin - RvL)) Then 
  rout = RvH 
Else 
  rout = RvL
Помогите записать это маткадовским языком.
0
Модератор
Эксперт по математике/физике
5240 / 4027 / 1385
Регистрация: 30.07.2012
Сообщений: 12,288
14.05.2013, 19:00 6
Цитата Сообщение от pahan35
VSI, Есть ли в MathCAD циклы сравнения аналогичные прописанным в бейсиковском коде?
Есть
Также нужно учесть вариант когда оно мешьше 1 чтобы оно умножалось на 10
Можно
Есть
Здесь сравнивают к какому из двух элементов массива входное значение ближе всего.
Помогите записать это маткадовским языком.
Через пол часика... Хорошо?
0
3 / 3 / 0
Регистрация: 13.05.2013
Сообщений: 34
14.05.2013, 21:35  [ТС] 7
Цитата Сообщение от VSI Посмотреть сообщение
Через пол часика... Хорошо?
ОК. Поподробнее, если можно
0
Модератор
Эксперт по математике/физике
5240 / 4027 / 1385
Регистрация: 30.07.2012
Сообщений: 12,288
14.05.2013, 22:41 8
Что непонятно, ЗАПИТУЙ...
Вложения
Тип файла: rar pahan35.rar (8.1 Кб, 7 просмотров)
2
3 / 3 / 0
Регистрация: 13.05.2013
Сообщений: 34
15.05.2013, 00:57  [ТС] 9
Цитата Сообщение от VSI Посмотреть сообщение
Что непонятно, ЗАПИТУЙ...
Вложения
pahan35.rar (8.1 Кб, 0 просмотров)
Дякую за допомогу. У меня не получается собрать всё в кучу. Ошибка при подборе ближайших RvL, RvH. Мне кажется что циклы While и/или For как-то неправильно себя ведут. Посмотри может ты разберешься где у меня ошибка.
Вложения
Тип файла: rar pahan35_edited.rar (35.7 Кб, 4 просмотров)
0
3 / 3 / 0
Регистрация: 13.05.2013
Сообщений: 34
16.05.2013, 14:50  [ТС] 10
Итак, я разобрался с циклами и написал функцию, которая подбирает значения по ряду Е24. С помощью этой функции можно подбирать номиналы элементов(резисторов, конденсаторов, индуктивностей) для радиосхем. Спасибо VSI за помощь в понимании синтаксиса циклов в маткаде. Пользуйтесь на здоровье

VSI, тему можно закрывать во избежание флуда, ведь вопрос решен.
Вложения
Тип файла: rar E24_by_pahan35.rar (16.4 Кб, 26 просмотров)
1
R2D2
16.05.2013, 16:57
  #11

Не по теме:

Эх, товарищи! Где Вы были, когда я писал курсач по схемачу, и после расчетов номиналов ВСЕХ(!) элементов трехкаскадного усилка надо было эти элементы подогнать под Е24 и расчитать токи и напряжения еще раз :wall::wall::wall:

0
3 / 3 / 0
Регистрация: 13.05.2013
Сообщений: 34
17.05.2013, 01:17  [ТС] 12
Цитата Сообщение от Dimka_rtf Посмотреть сообщение
Эх, товарищи! Где Вы были, когда я писал курсач по схемачу, и после расчетов номиналов ВСЕХ(!) элементов трехкаскадного усилка надо было эти элементы подогнать под Е24 и расчитать токи и напряжения еще раз
А я сейчас сижу считаю. Стало впадло всё вручную подгонять. Решил пошевелить извилинами.

В предыдущей версии файла был баг. Переделал, теперь нормально работает. В архиве файлы как для mathCAD Prime 2.0, так и MathCAD 15
Вложения
Тип файла: rar E24_by_pahan35.rar (19.4 Кб, 43 просмотров)
2
17.05.2013, 01:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2013, 01:17
Помогаю со студенческими работами здесь

Значения столбцов и строк в выбранном ряду матрицы поменять на противоположные
Привет,нужна подсказка.Пишу алгоритм.Есть какая-то матрица из 0 и 1 произвольного...

Не могу найти ошибку в подсчете значения функции и разложения ее по ряду
Нужно сделать табулирование функции y=e(-(x*x)/2) и ее разложение по ряду s на . Есть исходный код,...

Округление значения в ячейке
Здравствуйте. Формируя из нескольких файлов exel один с помощью python и библиотеки openpyxl...

Округление полученного значения
при щелчке на элемент button происходит считывание введенных в элементах textbox значений, которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru