Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Универсальная помощь пользователю ПО


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Алексеев Владимир Николаевич
Статус: Советник
Рейтинг: 575
∙ повысить рейтинг »
solowey
Статус: 9-й класс
Рейтинг: 146
∙ повысить рейтинг »
CradleA
Статус: Профессионал
Рейтинг: 72
∙ повысить рейтинг »

∙ Другие программы

Номер выпуска:1651
Дата выхода:26.03.2018, 13:45
Администратор рассылки:Цикалов Игорь Константинович (Модератор)
Подписчиков / экспертов:44 / 35
Вопросов / ответов:1 / 1

Консультация # 192945: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Добрый день! Прошу помощи в написании программы в программе МАТКАД 14. Программа в свободном практически доступе,вешает копейки. Условие задачи: Написать программу с использованием оператора while, определяющую коэффициент продольного изгиба ϕ для стальных элементов в зависимости от ...

Консультация # 192945:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Добрый день! Прошу помощи в написании программы в программе МАТКАД 14. Программа в свободном практически доступе,вешает копейки.
Условие задачи: Написать программу с использованием оператора while,
определяющую коэффициент продольного изгиба ϕ для стальных элементов в зависимости от гибкости λ и расчетного сопротивления стали Ry.Для определения промежуточных значений использовать линейную интерполяцию.Написать программу с использованием оператора while,
определяющую коэффициент продольного изгиба ϕ для стальных элементов в зависимости от гибкости λ и расчетного сопротивления стали Ry.Для определения промежуточных значений использовать линейную интерполяцию.
Присоединяю файл программы МАТКАД с моей попыткой,и необходимыми данными

Дата отправки: 16.03.2018, 13:29
Вопрос задал: lexa77 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Алексеев Владимир Николаевич (Советник):

Здравствуйте, lexa77!
Вы просили "Написать программу с использованием оператора while…" в приложении Маткад14. Мне удалось скачать и установить это приложение. Код написанной мною программы с подробными комментариями, скриншот и поясняющий рисунок прилагаю.

В пункте3 приложенной Вами Методички для выполнения Вашей Лабораторной работы N4 предписано: Вычислить значения коэффициента продольного изгиба, используя программы задания N1 и 2 при следующих исходных данных:
λ = 63 , 74 , 82 , … 119
Ry = 2450 , 2450 , 2550 … 2550

Чтоб Вы не запутались в большом коде, я в качестве исходных данных чуть изменил имена переменных на λi и Ri , поскольку при выборке данных из большой таблицы N3 с Ф(λ,Ry) имена переменных λ и Ry уже используются.
Далее, угождая Вашему пожеланию нумеровать ячейки таблицы, начиная с 1, я добавил оператор ORIGIN:=1
Но Вам пол езно помнить, что большинство прог-языков и программистов используют нумерацию массивов и таблиц начиная с нуля. В том числе и в Вашем любимом Маткаде в Методичке для Вашей будущей лабы N8 предложен код с нумерацией от нуля. И Вам в лабе8 придётся либо прекратить использовать оператор ORIGIN:=1 , либо поправить код.

При выборке из таблицы редко удаётся найти в ней нужное сочетание аргументов λ и Ry . Поэтому для получения функции Ф мы на первом этапе выбираем имеющиеся в таблице значения из ближайшего окружения искомого аргумент-сочетания.

Алгоритм поиска окружения прост: Начинаем читать ячейки верхней строки таблицы со столбца N3 . Цикл while либо не выполняется либо многократно инкрементирует (увеличивает на 1) значение счётика n (в зависимости от заданного значения Ri ).
Как только значение Ry очередной ячейки становится больше, чем выше-заданное Ri , условие правее слова while становится ложным, и цикл прекращается. Найденный номер n выводится из п рог-модуля в переменную NR .

Аналогично в следующем цикле с оператором while ищем в левом столбце таблицы ячейку сверху-вниз, в которой значение λ становится больше, чем выше-заданное λi . Начинаем поиск со строки номер n=3 .Найденный номер выводится из прог-модуля в переменную Nλ .

В результате поиска мы нашли 4 ячейки, окружающие искомый аргумент λ,Ry . 2 ячейки справа (точки 1 и 2 на рисунке Интерполяция.png ) имеют табличные номера Nλ-1,NR и Nλ,NR , а 2 ячейки слева (точки 3 и 4) - Nλ-1,NR-1 и Nλ,NR-1 .

В Маткаде14 отсутствует функция дву-мерного интерполирования (сразу по 2м аргументам). Поэтому придётся трижды применить функцию одномерного интерполирования
linterp(x,y,t)
где x - вектор опытных значений аргумента; y - вектор опытных значений функции; t - значение аргумента, при котором вычисляется интерполирующее значение функции.
Сначала интерполируем опытные значения м-ду точками 1 и 2 согласно прил агаемому рисунку, потом м-ду точками 3 и 4. В конце получаем готовый результат Фi интерполяцией м-ду точками ФЛев и ФПрав.

Преподаватель может задать Вам каверзный вопрос: "А зачем делать лишние действия по интерполяции в случае, если из таблицы будут выбраны существующие в ней значения?". Ответ прост: Существующие значения не нуждаются в интерполяции, но они выбираются из таблицы очень редко. Линейная интерполяция существующих значений НЕ портит эти значения и происходит достаточно быстро в современном компьютере. Но отказ от этой избыточной операции вынуждает усложнять код программы, добавлять условные операторы if , увеличивает вероятность ошибки для начинающих программистов.

Этот упрощённый код НЕ содержит также так называемую "Защиту от дурака", которая в случае использования неправильных аргументов λ и Ry (текст вместо числа) должна прекратить выполнение программы и выдать соответствующее сообщение на экран. Поэтому, на данном эта пе если Вы введёте значения λ>220 , или Ry>6550 (вне табличные), то программа выдаст ошибку. Дополнить код программы можно будет потом при необходимости. =Успехов!

Консультировал: Алексеев Владимир Николаевич (Советник)
Дата отправки: 25.03.2018, 10:09
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное