Примеры решения задач к
Главе 1
Координаты брошенного под
углом
тела
Средняя скорость
движения мотоциклиста
Колебания маятника
Комплексные числа
Прыгающий мячик
Умножение на два в
степени
Решение простого
уравнения
Атака подводной лодки
Высота орбиты
спутника
Следующая задача, которую рассмотрим, состоит в
определении высоты
орбиты спутника h над
поверхностью Земли, если известны масса М≈5.96*1024 (кг) и
радиус R≈6.37*106
(м) Земли, масса спутника m,
период его обращения Т.
Масса
спутника в данном случае при расчете высоты орбиты не нужна, а период
обращения вводится пользователем. При решении этой задачи воспользуемся
тем, что сила гравитационного притяжения между Землей и спутником равна
F=GmM/(R+h)2, где G≈6.672*10-11(Нм2/кг2)
-
универсальная
гравитационная
постоянная.
С
другой
стороны,
эту
же
силу
по второму закону Ньютона можно записать как F=ma, где а=ω2(R+h)
есть
центростремительное
ускорение,
а
частота
ω
связана
с
периодом
Т
соотношением
ω=2п/Т.
Из
этих
соотношений получаем 4п2m(R+h)/T2=GmM/(R+h)2,
что
дает
h=(GMT2)1/3*/4п2-R. Соответствующий
программный код приведен в листинге 1.12
==========>Листинг 1.12 Высота орбиты
спутника
#include<iostream>
#include <cmath>
using namespace std;
int main(){
//Гравитационная постоянная:
const double G=6.672E-11;
//Масса Земли:
const double M=5.96E24;
//Радиус Земли:
const double R=6.37E6;
//Число pi:
const double pi=3.1415;
//Период и высота орбиты:
double T,h;
//Ввод периода (в часах):
cout<<"Введите T = ";
cin>>T;
//Перевод часов в секунды:
T=T*3600;
//Определение высоты:
h=pow(G*M*T*T/4/pi/pi,(double)1/3)- R;
//Перевод в километры:
h=h/1000;
cout<<"Высота орбиты спутника h = "<<h<<" km\n";
cout << "Конец задания для самостоятельной работы!" << endl;
system
("pause");
//
ожидаем
нажатия
кнопки
return 0;
}
==========>Конец Листинга 1.12 Компилированный
исполняемый
файл
листинга
1.12(120Кб, rar)
Результат выполнения программы может выглядеть следующим образом(жирным
выделен ввод пользователя)
Введите T = 5.4
Высота орбиты
спутника h = 9244.22 km
В программе использована встроенная функция pow() для вычисления
кубического корня. Первым аргументом функции указывается возводимое в
степень выражение, второй её аргумент - степень, в которую возводится
выражение. В данном случае степень равна 1/3.
Однако в силу автоматического преобразования типов при вычислении
выражения 1/3 используется целочисленное деление, в результате чего
получаем ноль. Чтобы избежать такой неприятности, во втором аргументе
функции pow()
использована инструкция (double) для
выполнения явного приведения типов.
Обращаем также внимание читателя на способ ввода больших чисел: они
вводятся в формате мантиссы и показателя степени. Например,
число(литерал) 6.672*10-11 вводится как 6.672E-11, а
число 5.96*1024 - как 5.96E24
* Математическое
выражение вида (х)1/3 - "х в степени одна третья"
эквивалентно выражению "кубический корень из х", здесь применяется
запись такого вида поскольку в Html нет символа выражающего корень
энной степени в привычном школьном выражении.
|