c++ Максимальную дальность полета S тела

Тема в разделе "WASM.BEGINNERS", создана пользователем not1, 11 мар 2010.

  1. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    Доброе время суток вопрос к математикам, сабж найти максимальную дальность полета S тела
    имеем формулу
    S = V02 sin2α/g, (S - дальность, V02-скорость в квадрате, sin2a - угол, g - вес тела)
    т.к функция sin(числа) принимает в радианах, а не в градусах, пишу функцию:
    int a;//градус
    Код (Text):
    1. double GradusFun(double gradus)
    2. {
    3.        double rad;
    4.        double pi=3.14;
    5.        rad=gradus*pi/180;
    6.        return sin(rad);//return a;//возвращаем градусы
    7.        }
    возврощает правильно.
    далее...
    вводим скорость допустим V0=3 ; // т.к в квадрате то получиться 9
    вводим угол a=3 возратит синус a;// т.к GradusFun(double gradus)
    вводим вес тела g=3;
    Код (Text):
    1.         a=GradusFun(a);
    2.         result=pow(v2,2)*pow(a,2)/g;
    получаем 0.00820884;
    //Pow - Вычисляет значение числа х в степени у.
    double pow(double x, double y);
    //----------
    вопросы:
    1) result=pow(v2,2)*pow(a,2)/g; правильно ли я расчитал дальность полета? а именно возращает 0.00820884
    2) g-вес тела или ускорение свободного падения?
    Дополнительная инфа :
    Движение тела, брошенного под углом к горизонту
    http://www.home-edu.ru/user/f/00000693/mehanika/par_12.htm
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    not1
    Вам есчо нужно сопротивление воздуха учесть, введя силу -β*X', коэф. вычисляется опытным путём.
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    not1,
    школота не знающая ни программирования, ни математики, ни физики - иди читай учебник =\
     
  4. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    Clerk
    не мне нуно узнать всеголишь правильный расчет формулы при v0=3;g=3;a=3;
    вот по поводу воздуха, предпологаеться что есть пространство без силы трений и т.д просто формула - ответ.
    Clerk а вообще спс
     
  5. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    GoldFinch иди учи своих детей че им надо делать, я и без тебя знаю свои слабые стороны, ты лучшеб о себе побеспокоился, выявил свои траблы?
     
  6. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    not1
    Вообще я против возрастной дискриминации, но в данном случае полностью согласен с GoldFinch.

    Итак, начнем.
    Уравнение движения, для тела, перемещающегося с ускорением:
    r=r0+V0*t+a*t^2/2
    тут r0 - начальная координата, V0 - начальная скорость, a - ускорение, t - время.
    Тогда для тела, запущенного под углом к горизонту можно записать 2 уравнения:
    x=x0+v0x*t (по оси x тело движется без ускорения)
    y=y0+v0y*t-g*t^2/2 (по оси y тело движется с ускорением свободного падения, взятого со знаком минус, т.к. ось y направлена вверх, а ускорение - вниз)
    Тут x0, y0 - начальные координаты тела, v0x=v0*cos(a), v0y=v0*sin(a) - горизонтальная и вертикальная составляющие начальной скорости, t -время, g - ускорение свободного падения. a - угол, под которым запускают тело.
    Т.к. приняли, что тело запускается из точки с координатами (0, 0), то:
    x=v0*cos(a)*t
    y=v0*sin(a)*t-g*t^2/2


    Когда тело приземлится, координата y у него примет значение 0, отсюда можно вычислить время движения тела:
    0=v0*sin(a)*t-g*t^2/2
    0=t*(v0*sin(a)-g*t/2)
    Корни уравнения: t=0 (не устраивает) и t=2*v0*sin(a)/g
    Подставляем выражение для времени полета в уравнение для координаты x:
    x=v0*cos(a)*2*v0*sin(a)/g
    Как известно, 2*sin(a)*cos(a)=sin(2*a), тогда:
    x=v0^2*sin(2*a)/g
    Как теперь видно, формула, приведенная на сайте для домашнего обучения, неправильная. Соответственно, зачаду Вы решаете неправильно.

    Это не угол, а синус угла (судя по материалу, на который Вы опирались, он еще и в квадрате).

    Посмею сделать заявление, что от массы(а не веса) тела, уравнение движения не зависит.

    Верное решение:
    result=v0*v0*sin((float)a*PI/90)/g;
    тут v0 - начальная скорость, a - угол в градусах, g - ускорение свободного падения.
     
  7. not1

    not1 Member

    Публикаций:
    0
    Регистрация:
    6 окт 2009
    Сообщения:
    137
    KeSqueer ок спс тему мона закрыть.