Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Решение задачи в среде Mathcad
Задание Для интеграла, I. Вычислить значение интеграла символьным методом. II. Метод прямоугольников 1. Вычислить значение определенного интеграла приближенным методом прямоугольников с числом разбиений равным двум. 2. Вычислить значение определенного интеграла методом прямоугольников с числом разбиений равным N. 3. Определить число интервалов разбиение для заданной точности (точность равна E=0.01), и найти значение интеграла для этого N. 4. Оценить погрешность для вычисленного значения интеграла с числом разбиений равным найденному (в пункте 3) N по формуле Рунге 5. Построить график зависимости ошибки вычисления от N, и график приближенного значения интеграла от N. III. Метод парабол 1. Вычислить значение определенного интеграла приближенным методом парабол с одним интервалом разбиения. 2. Вычислить значение определенного интеграла методом парабол с числом разбиений равным N. 3. Определить число интервалов разбиение для заданной точности (точность равна E=0.01), и найти значение интеграла для этого N. 4. Оценить погрешность для вычисленного значения интеграла с числом разбиений равным найденному (в пункте 3) N по формуле Рунге 5. Построить график зависимости ошибки вычисления от N, и график приближенного значения интеграла от N. Пример решения задачи в MATHCAD приведен в приложении 6 I Программа вычисления интегралов с числом интервалов разбиения равному n Для примера будем использовать метод парабол. В программе подынтегральная функция задается в виде процедуры функции f(x). При решении задачи используются так же следующие переменные и константы: а и b — границы интервала интегрирования, описываются как константы n — количество интервалов разбиения, вводится с клавиатуры h — длина одного интервала, вычисляется по формуле h: = |b-a| /n x — начало интервала до цикла х присваивается начальное значение х: =а, а во время цикла переход к следующему интервалу осуществляется в цикле прибавлением к х длины интервала h: х: =х+h Si — приближенное значение интеграла на интервале S — приближенное значение интеграла на всем отрезке интегрирования Само решение задачи заключается в вычислении суммы n слагаемых — каждый из которых является значением интеграла на интервале (переменная Si). Значение интеграла на интервале вычисляется по формуле метода парабол: Si: =(h/6)(f(x)+4f(x+h/2)+f(x+h)) Сумма вычисляется в цикле FOR, тогда алгоритм будет выглядеть следующим образом {Вычислить длину интервала разбиения} H=|b-a|/n {Задать первоначальные значения переменных X — переменная, определяющая начало интервала S — накапливаемая сумма} X: =a; S: =0; FOR I: = 1 TO N DO BEGIN Вычисление Si — приближенного значения интеграла на интервале i S: =S+Si {Переход к следующему интервалу} X: =X+H END. S — значение интеграла Текст программы: const a=1; b=3; var S, Si: real; x, h: real; n, i: integer; Function F(x: real): real; begin F: =x*x*x*sin(x); end; begin write('n='); readln(n); h: =abs(b-a)/n; S: =0; x: =a; for i: =1 to n do begin Si: =(f(x)+4*f(x+h/2)+f(x+h))*h/6; S: =S+Si; x: =x+h; end; writeln('S= ', s: 7: 4); readln; end. Программа вычисления интегралов с заданной точностью. Оценка точности будет производиться по формуле Рунге: Алгоритм заключается в сравнении значений интеграла вычисленных с одним и двумя интервалами разбиения, затем с двумя и четырьмя интервалами, потом четырьмя и восьмью и т.д. пока разница между этими значениями не станет меньше заданной точности. Для записи этого алгоритма используем цикл WHILE.
N: =1 WHILE(| I(N)-I(2N)| > E DO N: =2N (Увеличить N в 2 раза) где I(N) — значение интеграла, вычисленное с N интервалами разбиения Само же вычисление интеграла с n интервалами разбиения оформим в виде процедуры функций тело которой повторяет программу из пункта 1 с той лишь разницей, что n не вводится с клавиатуры, а передается в виде параметра. Текст программы:
const a=1; b=3; e=0.0001; var S, Si: real; x, h: real; n, i: integer; Function F(x: real): real; begin F: =x*x*x*sin(x); end; Function Simpson(n: integer): real; var S, Si: real; x, h: real; i: integer; begin h: =abs(b-a)/n; S: =0; x: =a; for i: =1 to n do begin Si: =(f(x)+4*f(x+h/2)+f(x+h))*h/6; S: =S+Si; x: =x+h; end; Simpson: =S; end; Begin n: =1; While (abs(Simpson(2*n)-Simpson(n))> E) do n: =2*n; writeln('S= ', Simpson(n): 7: 4); readln; end.
Контрольные вопросы
|