Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите решить задачу по физие в Pascal

Автор: Casatik 23.11.2008 14:35

Условие задачи: На дно сферы радиусом R=0.2 м насыпали горсть песка. Определить, где будут находиться песчинки после того, как сферу привели во вращение вокруг вертикальной оси с угловой скоростью w=10*Pi. Коэфициент трения песчинок о дно сферы принять равным m=0,01.
Всё решение задачи сводится к уравнению: 9.8*((sinx+m*cosx)/(cosx-m*sinx))-(w^2)*R*sinx=0.

Автор: Lapp 23.11.2008 16:48

А в чем, собственно, загвоздка?
Вот решение методом простой дихотомии. Если не разберешься, спрашивай.

const
e = 0.000000001; // precision
R = 0.2;
w = 10*Pi;
m = 0.01;

function f(x:real):real;
begin
f:=9.8*((sin(x)+m*cos(x))/(cos(x)-m*sin(x)))-(w*w)*R*sin(x)
end;

var
x,y,x1,x2: real;
i:integer;

begin
x1:=0;
x2:=Pi/2;
x:=x1;
while x<x2 do begin
WriteLn('x=',x:8:3,' f=',f(x):8:3);
x:=x+0.1
end;
i:=0;
repeat
Inc(i);
x:=(x1+x2)/2;
y:=f(x);
if f(x)*f(x1)>0 then x1:=x else x2:=x
until Abs(y)<e;
WriteLn('Solution: x=',x:12:9,' f(x)=',y:12:9,' iterations: ',i);
ReadLn
end.


Добавлено через 1 мин.
Я там еще оставил распечатку значений функции с шагом 0.1. Делал для прикидки, чтоб понять общий ход функции, а потом не убрал..

Автор: Casatik 23.11.2008 18:42

Загвоздка заключается в том, что я не могу вычислить угол на который поднимутся песчинки. Зная угол можно очень легко и просто вычислить длину дуги по которой поднимаются песчинки.

Автор: Lapp 23.11.2008 18:52

Цитата(Casatik @ 23.11.2008 14:42) *
Загвоздка заключается в том, что я не могу вычислить угол на который поднимутся песчинки. Зная угол можно очень легко и просто вычислить длину дуги по которой поднимаются песчинки.

Погоди. Это что ли уже физика начинается? Ты попросил решить уравнение, я это сделал. Что еще? Я даже не вникал в физику - ты же сам сказал, что это не нужно. Более того, я даже не знаю, что такое x - угол или еще что-то.. Для меня это просто неизвестная в уравнении.

Этот раздел - Паскаль, Задачи.
Если тебе неясны физические стороны процесса - иди в соответствующий раздел.

Автор: Casatik 23.11.2008 19:52

Извините, я наверно не правильно выразился. Ситуация такая: я решил задачу по физике и пришёл к уравнению данного вида. Теперь мне необходимо принять полученное выражение за функцию f(x) и найти численное значение х. Осталось лишь произвести арифметическое вычисление, никакой физики. Не вижу разницы между тем, как обозначить неизвестную переменную - х или другой буквой латинского алфавита.

Автор: Lapp 23.11.2008 20:03

Цитата(Casatik @ 23.11.2008 15:52) *
Теперь мне необходимо принять полученное выражение за функцию f(x) и найти численное значение х.

Ничего не понимаю. Но я же тебе это сделал! Нашел x.
Совершенно не понимаю, что ты имеешь в виду.