Компьютерные модели автомобилей — страница 9

  • Просмотров 5942
  • Скачиваний 398
  • Размер файла 209
    Кб

является низкая точность решения. Для повышения точности решения уменьшают шаг счета h или используют методы более высокого порядка. Под порядком метода понимается максимальный порядок производной ряда Тейлора, учитываемый в численном методе yn+1 = yn + h·yn' +h2/2·y” +h3/6·y(3) +... Метод Эйлера учитывает производную только первого порядка, поэтому является методом первого порядка. Чаще всего используется метод Рунге-Кутта четвертого

поряд­ка, алгоритм которого имеет вид: yn+1 = yn + (k1 + 2×k2 +2×k3 + k4) / 6 , где k1 = h×f(xn,yn) ; k2 = h×f(xn + 0.5×h,yn + 0.5×k1) ; k3 = h×f(xn + 0.5×h,yn + 0.5×k2) ; k4 = h×f(xn + h,yn + k3) . Начало программы (вариант) для решения дифференциального уравнения второго по­рядка m×x" + b×x' + c×x = F показано ниже. Program DIFUR; Uses Crt,Dos,Lib,Graph; type mas = array[1..10] of real; Var Rez :text; d,y,y1 :mas; Filerez,text,Sxmax,Sxst,Stmax :string[50]; m,b,c,F,h,hp,t,tp,tmax,xmax,xst,nx,ny,nmax :real; n :integer; KL,nd,j :byte; Procedure Prav(var y,d:mas); í y[1] = x'

- скорость массы d[1] = x''- ускорение массы ý í y[2] = x - перемещение массы d[2] = x' - скорость массы ý begin d[1] := (F - b*y[1] - c*y[2])/m; d[2] := y[1]; end; Procedure Rynge; Var j :byte; yy,k :array[1..nd] of real; begin Prav(y,d); For j:=1 to nd do begin yy[j]:=y[j]; k[j]:=h*d[j]; y1[j]:=yy[j] + 0.5*k[j]; y[j]:=y[j] + k[j]/6; end; t:=t+0.5*h; Prav(y1,d); For j:=1 to nd do begin k[j]:=h*d[j]; y1[j]:=yy[j] + 0.5*k[j]; y[j]:=y[j] + k[j]/3; end; Prav(y1,d); For j:=1 to nd do begin k[j]:=h*d[j]; y1[j]:=yy[j] + k[j]; y[j]:=y[j] + k[j]/3; end; t:=t+0.5*h; Prav(y1,d); For j:=1 to nd do begin k[j]:=h*d[j]; y[j]:=y[j] + k[j]/6; end; end; Procedure Start; ... Процедура Prav (var y,d:max)

предназначена для вычисления пра­вых частей уравнений. Использованные в ней массивы типа mas: y – вектор - решение (выходные параметры); d - производные век­тор - решения (производные выходных параметров). Процедура Rynge реализует метод Рунге-Кутта четвертого поряд­ка. 2.5. Метод итераций Метод итераций (метод последовательных приближений) предназначен для нахождения корней алгебраических и трансцендентных уравнений. Для этого

исходное уравнение F(x) = 0 нужно преобразовать в эквивалентное x = f(x), например, добавлением в левую и правую части исходного уравнения F(x) = 0 переменной х. Сначала задаются первоначальным значением x = x(0) и на­ходят первое приближение: x(1) = f[x(0)] . Аналогично находят следующие приближения: x(2) = f[x(1)], ..., x(i+1) = f[x(i)] . Расчет завершается, если достигается заданная точность е |x(i+1) – x(i)| < е. Процеcс сходящийся, если ú df/dxú < 1. Графическая

интерпретация метода итераций показана на рис. 8 а. Точное решение соответствует пересечению функции f(x) с осью абсцисс х. Для уравнений типа F(x) = a0×xn + a 1×xn-1 + ... + an = 0 удобным в использовании является метод Ньютона (метод касательных), итерационная формула для которого имеет вид: где F’(x) = dF/dx (рис.8 б). а) б) Рис. 8. Графическая интерпретация методов итераций (а) и Ньютона (б) 2.6. Структурные схемы и графы Представляют собой