|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.04.2010, 11:47 | #1 |
Новичок
Джуниор
Регистрация: 30.04.2010
Сообщений: 2
|
расчет глубины погружения тела
вообщем задали ргр, все внизу написано, программу написал, но почему то не работает она ( мож кто чем поможет? подскажет?
Тело, образованное вращение дуги AB вокруг оси Ox (рис. 1 xͼ [a,b], a=-8, b =8), плавает в воде так, что ось Ox, перпендикулярна поверхности воды. Дуга AB задана функцией f(x)=x^2-8. Необходимо определить глубину погружения тела. Плотность материала, из которого сделано тело, на 20% меньше плотности воды. Вычисление интегралов производить методом центральных прямоугольников с точностью до 0,001. Получающиеся нелинейное уравнение решать методом дихотомии с точностью до 0,001. сама программа: Option Explicit Private Sub command1_click() Dim a As single, b As Single, r As Single Dim epsi As Single, epsu As Single, V As single Dim T As Single, Tt As Single a = Val(Form1.Text1.Text) b = Val(Form1.Text2.Text) epsi = Val(Form1.Text3.Text) epsu = Val(Form1.Text4.Text) r = 0.8 V = r*Integral(ByVal a,ByVal b,ByVal epsi) T = Root(ByVal a,ByVal b, ByVal epsu, ByVal V, ByVal epsi) - a Form1.Text5.Text = T Tt = (r*(b^7-a^7)+a^7)^(1/7)-a Form1.Text6.Text = Tt Form1.Text7.Text = Abs(T-Tt) End Sub Private Function F(ByVal x, ByVal V, ByVal epsi) As Single Dim a As Single F = Integral(ByVal a, ByVal x, ByVal epsi)-V End Function Private Function f(ByVal T) As Single f=T^3 'f=x^2-8 End Function Private Function Integral(ByVal a, ByVal b, ByVal epsi) As Single Dim n As Long, MaxN As Long, I1n As Single Dim I2n As Single If a=b then Integral = 0 Exit Function End if n=4 MaxN=100000 I1n=Itg(ByVal a, ByVal b, ByVal n) Do n=n*2 I2n-Itg(ByVal a, ByVal b, ByVal n) If Abs (I1n-I2n)<=epsi*Abs(I2n) Then Integral = I2n Exit Do Else I1n=I2n End if If n>MaxN Then stop Loop End Function Private Function Itg(ByVal a, ByVal b, ByVal n) As Single Dim S as Single, I as Long, h As single, x As Single h = (b-a)/n S = 0 For I = 1 To n x = a+I*h-h/2 S = S=f(x)^2 Next I Itg = S*h End Function Private Function Root(ByVal a, ByVal b, ByVal epsu, ByVal epsi) As Single Dim c As Single, FA As Single, FO As Single, x As Single Dim FB As Single, F1 As Single, z As Single x=a FA=f(ByVal x, ByVal V, ByVal epsi) x=b FB=f(ByVal x, ByVal V, ByVal epsi) If FA*FB>0 Then form1.text8.text = "функция не пересекает ось ox" exit function end if Do While Abs(b-a)>epsu and x<=1.018b c=(a+b)/2 x=c F1 =f(ByVal x, ByVal V, ByVal epsi) x=a FA=f(ByVal x, ByVal V, ByVal epsi) If FA*F1<0 Then b=c Else a=c end if loop If x>1.01*b then Form1.Text9.Text = "нет решения" stop end if root = (a+b)/2 end function при запуске выделяется вот эта строчка: T = Root(ByVal a,ByVal b, ByVal epsu, ByVal V, ByVal epsi) - a |
01.05.2010, 16:17 | #2 |
Новичок
Джуниор
Регистрация: 30.04.2010
Сообщений: 2
|
помогитееее
|
01.05.2010, 21:00 | #3 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 254
|
могу помочь. сайт в профиле. контакты на сайте.
помогать студентам - моя вторая профессия
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Увеличение "глубины" вызова рекурсивных процедур | Mixim | Общие вопросы Delphi | 1 | 06.03.2010 12:42 |
Ограничение на поворот тела | KorDum | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 8 | 05.07.2009 15:56 |
Движение тела под углом | Lemo | Помощь студентам | 6 | 05.04.2009 14:49 |
Работа с DIB, изменение глубины цвета | JOHNKZ1 | Мультимедиа в Delphi | 7 | 18.12.2008 06:52 |
Как отобразить категории, имеющие вложенность произвольной глубины?! | Aska | БД в Delphi | 4 | 31.10.2007 01:03 |