0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
||||||
1 | ||||||
Построение графика движения тела, брошенного под углом к горизонту.30.09.2013, 18:04. Показов 14574. Ответов 22
Метки нет (Все метки)
Всем доброго времени суток. Запустил первый раз матлаб, чтобы выполнить задание. Задание следующее:
Без учета сил сопротивления уравнения движения тела, брошенного под углом L к горизонту с начальной скоростью V , задаются формулами: x=(V*cos(L))*t; y=((V*sin(L))*t)-(10.*(t.^2))/2; Написать программу 1 расчета траектории движения тела x=F(y) при различных значениях угла L и начальной скорости V . Ввод угла (в градусах) и начальной скорости осуществлять с помощью команды input. Для построения графика использовать функцию plot(x,y). Вроде все элементарно (для проверки не ввожу числа с клавиатуры):
График в приложении.
0
|
30.09.2013, 18:04 | |
Ответы с готовыми решениями:
22
Моделирование движения упругого мяча, брошенного под углом к горизонту Построение графика движения тела под углом к горизонту Изучение движения тела, брошенного под углом к горизонту с некоторой начальной скоростью Сделать блок-схему к курсовой работе (движения тела, брошенного под углом к горизонту) |
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
|
30.09.2013, 18:40 | 2 |
Угол – в радианах (L0 = pi/3), временной промежуток – поменьше (t = 0:0.1:1.5), абсциссу – вперёд (plot(x, y)).
2
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
|
30.09.2013, 19:03 [ТС] | 3 |
Очень благодарен. Теперь мой график и вправду похож на физический процесс. Просто меня смутило описание задания функции x=F(y), поэтому наоборот и строил график)
0
|
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
|
30.09.2013, 19:27 | 4 |
Да, странная формулировка – для параболы в общем случае нельзя построить обратную функцию, поэтому для одного и того же значения y возможны 2 различных значения x. Возможно, просто опечатка.
1
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
|
01.10.2013, 12:19 [ТС] | 5 |
У меня еще один вопрос:
Нашел максимум высоты полета: ymax=max(y); но никак не могу с помощью команды disp(ymax) вывести на экран максимальную высоту полета (но число выдает при отладке верное), ругается компилятор, а если вычислить длину полета xmax=max(x) - то выдает какое-то число в экспонициальной форме(.
0
|
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
|
01.10.2013, 12:59 | 6 |
А что пишет компилятор? Лучше привести полный код.
Тег [MATLAB][/MATLAB] вверху справа под значком динамика.
1
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
||||||
01.10.2013, 13:05 [ТС] | 7 | |||||
Вот что выдает:
Subscript indices must either be real positive integers or logicals. Error in First (line 17) disp(ymax); Видимо, что-то не нравится по типу
0
|
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
|
01.10.2013, 13:21 | 8 |
Это точно весь текст программы? Здесь нет строки 17.
Время (t = 0:0.1:100) задано слишком большое – за это время снаряд уйдёт глубоко под землю и пророет длинный тоннель (отсюда и огромные значения xmax). Параметры параболы лучше искать по явным формулам. Или применять более изощрённые методы. В начало программы можно добавить clear all.
1
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
||||||
01.10.2013, 13:33 [ТС] | 9 | |||||
Строка 17 - это строка 13, просто я не стал вставлять верхние закомментированные строки
Добавлено через 8 минут А есть ли возможность вычислить
0
|
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
||||||
01.10.2013, 13:37 | 10 | |||||
Где-то (в тексте программы или в командном окне), видимо, проскочило присваивание вида (disp = ...) – и теперь Matlab принимает disp за переменную. Инструкция clear all (или просто clear) очистит память от переменных, и disp снова станет функцией вывода на экран.
Можно так:
0
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
||||||
01.10.2013, 13:43 [ТС] | 11 | |||||
Если я правильно понимаю, то это будет предыдущая точка перед пересечением с абсциссой, т.к. в данном случае
0
|
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
||||||
01.10.2013, 13:53 | 12 | |||||
Да.
Он может быть ни в какой больше точке не равен нулю – вычисления ведь идут с определённым шагом. Можно уменьшить шаг по времени до необходимой точности (t = 0:0.01:2) или вычислять среднее:
1
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
|
02.10.2013, 13:05 [ТС] | 13 |
Еще есть вопрос. В задании сказано, что нужно построить график Xmax(L0), где Xmax -длина полета, а L- это начальный угол броска. Это же две постоянные, каким образом можно построить график? Наверное, я не совсем верно понимаю задание( Ни у кого нет мыслей?
0
|
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
|
02.10.2013, 13:12 | 14 |
Максимальная длина полёта Xmax меняется в зависимости от начального угла броска L, так что график вполне можно построить. Функцию можно задать либо явно, выразив из уравнений движения, либо на основе анализа параболы, как это было сделано выше.
1
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
||||||
02.10.2013, 14:10 [ТС] | 15 | |||||
То есть, мне нужно взять диапазон значений начального угла и находить максимальное значение длины полета в зависимости от этих значений угла?
Он так не считает, я не понимаю как сделать так, чтобы он мог считать это максимальное значение Xm, если у нас есть две не постоянные L1 и t1.
0
|
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
|
02.10.2013, 15:03 | 16 |
Да, идея правильная, но реализацию нужно продумать – например, заполнять массив в цикле. И максимальное расстояние лучше искать в отдельной функции.
Но самый разумный вариант – рассчитывать по готовой формуле (если только заданием не предусмотрено непосредственное исследование параболы).
0
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
|
02.10.2013, 15:32 [ТС] | 17 |
А как я могу получить готовую формулу, если у меня xmax вычисляется в самом конце и отдельно
0
|
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
|
||||||
02.10.2013, 15:51 | 18 | |||||
Я выше приводил ссылку на явные формулы:
Если считать программно, нужно для каждого значения L0 рассчитать xmax и результаты поместить в матрицу.
0
|
4217 / 3412 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
|
|
02.10.2013, 15:59 | 19 |
Вся задача - яркая иллюстрация тезиса: компьютер - зло для неграмотных, поскольку внушает ложную уверенность в том, что теперь можно не думать головой.
Решение и полное исследование (задачка известна уже много веков) есть в любом школьном учебнике, стоило бы сначала туда посмотреть, прежде чем вычислять (с компьютером) бессмыслицу. Практический совет: прежде, чем включить компьютер, нужно сделать расчет вручную (одну, две точки траектории, калькулятора достаточно). Многое стало бы понятным. Напр., необходимый интервал времени.
1
|
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
|
||||||
02.10.2013, 17:27 [ТС] | 20 | |||||
Я правильно понимаю, график Xmax(L0) будет прямая, параллельная оси абсцисс?
Добавлено через 7 минут Ох нет, это бред Добавлено через 43 минуты Вопрос по поводу инициализации массива.
Undefined function or variable 'L2'. Error in Untitled4 (line 39) plot(L2, xmax1);
0
|
02.10.2013, 17:27 | |
02.10.2013, 17:27 | |
Помогаю со студенческими работами здесь
20
Движение тела, брошенного под углом к горизонту Движение тела , брошенного под углом к горизонту Полет тела, брошенного под углом к горизонту Движение тела, брошенного под углом к горизонту Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |