Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/79: Рейтинг темы: голосов - 79, средняя оценка - 4.90
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
1

Построение графика движения тела, брошенного под углом к горизонту.

30.09.2013, 18:04. Показов 14828. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Запустил первый раз матлаб, чтобы выполнить задание. Задание следующее:

Без учета сил сопротивления уравнения движения тела, брошенного под углом 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).

Вроде все элементарно (для проверки не ввожу числа с клавиатуры):

Matlab M
1
2
3
4
5
6
7
8
9
10
11
%V0=input('Enter ');
%L0=input('Enter ');
 
V0=10;
L0=60;
 
t=[0,1,2,3,300,500,900,1000];
 
x=(V0*cos(L0))*t;
y=((V0*sin(L0))*t)-(10.*(t.^2))/2;
plot(y, x);
Проблема в том, что график из себя представляет нечто странное, он должен быть положительным, от нуля и в положительную сторону по обеим осям, но этого нет. Я не понимаю как правильно задать время (t -я его задал в виде массива значений, может совершенно не верно), ведь оно растет от нуля к бесконечности, ну или хотя бы до тех пор, пока y не станет нулем. Запутался я после первого запуска.(

График в приложении.
Миниатюры
Построение графика движения тела, брошенного под углом к горизонту.  
0
30.09.2013, 18:04
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
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
Цитата Сообщение от Heidegger Посмотреть сообщение
Угол – в радианах (L0 = pi/3), временной промежуток – поменьше (t = 0:0.1:1.5), абсциссу – вперёд (plot(x, y)).
Очень благодарен. Теперь мой график и вправду похож на физический процесс. Просто меня смутило описание задания функции x=F(y), поэтому наоборот и строил график)
0
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
30.09.2013, 19:27 4
Цитата Сообщение от Fasterovich Посмотреть сообщение
Просто меня смутило описание задания функции x=F(y)
Да, странная формулировка – для параболы в общем случае нельзя построить обратную функцию, поэтому для одного и того же значения 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);

Видимо, что-то не нравится по типу

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
L0=35;
V0=15;
L0=(L0*pi)/180;
t = 0:0.1:100;
x=(V0*cos(L0))*t;
y=((V0*sin(L0))*t)-(10.*(t.^2))/2;
plot(x,y);
axis([0 100 0 100]);
 
ymax=max(y); % при отладке реально выдает самую высокую точку, как я понял в double
xmax=max(x);  %не выдает самое большое значение x, 1.2287e+03 - такое число при отладке выдает
disp(ymax); 
disp(xmax);
График теперь выглядит так:
Миниатюры
Построение графика движения тела, брошенного под углом к горизонту.  
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
Цитата Сообщение от Heidegger Посмотреть сообщение
Это точно весь текст программы? Здесь нет строки 17.

Время (t = 0:0.1:100) задано слишком большое – за это время снаряд уйдёт глубоко под землю и пророет длинный тоннель (отсюда и огромные значения xmax).

Параметры параболы лучше искать по явным формулам. Или применять более изощрённые методы.

В начало программы можно добавить clear all.
Строка 17 - это строка 13, просто я не стал вставлять верхние закомментированные строки

Добавлено через 8 минут
Цитата Сообщение от Heidegger Посмотреть сообщение
Это точно весь текст программы? Здесь нет строки 17.

Время (t = 0:0.1:100) задано слишком большое – за это время снаряд уйдёт глубоко под землю и пророет длинный тоннель (отсюда и огромные значения xmax).

Параметры параболы лучше искать по явным формулам. Или применять более изощрённые методы.

В начало программы можно добавить clear all.
А есть ли возможность вычислить
Matlab M
1
xmax=max(x)
при y=0? Мне как раз и нужно это значение.
0
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
01.10.2013, 13:37 10
Где-то (в тексте программы или в командном окне), видимо, проскочило присваивание вида (disp = ...) – и теперь Matlab принимает disp за переменную. Инструкция clear all (или просто clear) очистит память от переменных, и disp снова станет функцией вывода на экран.

Можно так:

Matlab M
1
2
ixmax = find(y > 0, 1, 'last');
xmax = x(ixmax);
Ищем последнее положительное значение y и выводим соответствующее значение x.
0
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
01.10.2013, 13:43  [ТС] 11
Цитата Сообщение от Heidegger Посмотреть сообщение
Где-то (в тексте программы или в командном окне), видимо, проскочило присваивание вида (disp = ...) – и теперь Matlab принимает disp за переменную. Инструкция clear all (или просто clear) очистит память от переменных, и disp снова станет функцией вывода на экран.

Можно так:

Matlab M
1
2
ixmax = find(y > 0, 1, 'last');
xmax = x(ixmax);
Ищем последнее положительное значение y и выводим соответствующее значение x.
Если я правильно понимаю, то это будет предыдущая точка перед пересечением с абсциссой, т.к. в данном случае
Matlab M
1
y
должен быть равен нулю. но он равен нулю и в точке 0:0
0
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
01.10.2013, 13:53 12
Цитата Сообщение от Fasterovich Посмотреть сообщение
это будет предыдущая точка перед пересечением с абсциссой
Да.
Цитата Сообщение от Fasterovich Посмотреть сообщение
но он равен нулю и в точке 0:0
Он может быть ни в какой больше точке не равен нулю – вычисления ведь идут с определённым шагом.

Можно уменьшить шаг по времени до необходимой точности (t = 0:0.01:2) или вычислять среднее:

Matlab M
1
2
ixmax = find(y > 0, 1, 'last');
xmax = (x(ixmax) + x(ixmax+1))/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
То есть, мне нужно взять диапазон значений начального угла и находить максимальное значение длины полета в зависимости от этих значений угла?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
L1 = 0:(pi/180):pi/2;
t1 = 0:0.1:100;
x1=(V0*cos(L1))*t1;
y1=((V0*sin(L1))*t1)-(10.*(t1.^2))/2;
 
ixmax1 = find(y1 >0, 11, 'last');
xmax1 = x1(ixmax1);
 
 
plot(L1, xmax1);
axis([-100 100 -100 100]);
Добавлено через 27 минут
Он так не считает, я не понимаю как сделать так, чтобы он мог считать это максимальное значение Xm, если у нас есть две не постоянные L1 и t1.
0
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
02.10.2013, 15:03 16
Цитата Сообщение от Fasterovich Посмотреть сообщение
То есть, мне нужно взять диапазон значений начального угла и находить максимальное значение длины полета в зависимости от этих значений угла?
Да, идея правильная, но реализацию нужно продумать – например, заполнять массив в цикле. И максимальное расстояние лучше искать в отдельной функции.

Но самый разумный вариант – рассчитывать по готовой формуле (если только заданием не предусмотрено непосредственное исследование параболы).
0
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
02.10.2013, 15:32  [ТС] 17
Цитата Сообщение от Heidegger Посмотреть сообщение
Да, идея правильная, но реализацию нужно продумать – например, заполнять массив в цикле. И максимальное расстояние лучше искать в отдельной функции.

Но самый разумный вариант – рассчитывать по готовой формуле (если только заданием не предусмотрено непосредственное исследование параболы).
А как я могу получить готовую формулу, если у меня xmax вычисляется в самом конце и отдельно
0
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
02.10.2013, 15:51 18
Цитата Сообщение от Fasterovich Посмотреть сообщение
А как я могу получить готовую формулу
Я выше приводил ссылку на явные формулы:

Matlab M
1
xmax = V0^2/g*sin(2*L0);
Можно посчитать обоими методами и сравнить.

Если считать программно, нужно для каждого значения L0 рассчитать xmax и результаты поместить в матрицу.
0
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3413 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
02.10.2013, 15:59 19
Цитата Сообщение от Fasterovich Посмотреть сообщение
t=[0,1,2,3,300,500,900,1000];
Цитата Сообщение от Fasterovich Посмотреть сообщение
не понимаю как правильно задать время (t -я его задал в виде массива значений, может совершенно не верно), ведь оно растет от нуля к бесконечности, ну или хотя бы до тех пор, пока y не станет нулем
Вся задача - яркая иллюстрация тезиса: компьютер - зло для неграмотных, поскольку внушает ложную уверенность в том, что теперь можно не думать головой.
Решение и полное исследование (задачка известна уже много веков) есть в любом школьном учебнике, стоило бы сначала туда посмотреть, прежде чем вычислять (с компьютером) бессмыслицу.
Практический совет: прежде, чем включить компьютер, нужно сделать расчет вручную (одну, две точки траектории, калькулятора достаточно). Многое стало бы понятным. Напр., необходимый интервал времени.
1
0 / 0 / 1
Регистрация: 30.09.2013
Сообщений: 15
02.10.2013, 17:27  [ТС] 20
Цитата Сообщение от Heidegger Посмотреть сообщение
Я выше приводил ссылку на явные формулы:

Matlab M
1
xmax = V0^2/g*sin(2*L0);
Можно посчитать обоими методами и сравнить.

Если считать программно, нужно для каждого значения L0 рассчитать xmax и результаты поместить в матрицу.
Я правильно понимаю, график Xmax(L0) будет прямая, параллельная оси абсцисс?

Добавлено через 7 минут
Ох нет, это бред

Добавлено через 43 минуты
Вопрос по поводу инициализации массива.

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
L1 = 0;
i=1;
 
while L1>(pi/2)
  [xmax, ymax, tFlying] = calculateParameters(L1, V0);
   xmax1(i)=xmax;
    L2(i)=L1;
  
    L1 = L1+pi/180;  
++i;
 
end
 
plot(L2, xmax1);
В цикле хочу заполнить массивы L2 и массив xmax1. Не получается, выдает ошибку.

Undefined function or variable 'L2'.

Error in Untitled4 (line 39)
plot(L2, xmax1);
0
02.10.2013, 17:27
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.10.2013, 17:27
Помогаю со студенческими работами здесь

Сделать блок-схему к курсовой работе (движения тела, брошенного под углом к горизонту)
Есть готовая курсовая работа. Нужно вот сделать блок-схему с метода решения . Уже есть написанная с программы. Документ вышлю лично .

Движение тела, брошенного под углом к горизонту
нужно выполнить задание на платформе Wolfram: движение тела, брошенного под углом к горизонту. чтобы был график и элементы...

Движение тела , брошенного под углом к горизонту
Здравствуйте , нужно помощь в редактирование кода. Анимация движения шара, тело не летит по заданной формулой пораболе . Формула:...

Полет тела, брошенного под углом к горизонту
Реализация модели «Полет тела, брошенного под углом к горизонту» Помогите,пожалуйста, переделать код на Паскаль ABC. Program Pod...

Движение тела, брошенного под углом к горизонту
Здравствуйте было задание: построить траекторию полета тела массой 1 кг, брошенного по углом 45 градусов к горизонту с начальной скоростью...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией через Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru