Введение в программирование на языке C#
.pdfРисунок 14. Параболическая трапеция Пусть система координат расположена так, как показано на рис. 14. Коэффициенты
в уравнение параболы y Ax2 Bx C определяются из следующих уравнений:
y0 y( h ) Ah 2 |
Bh C |
y1 y(0) C |
|
y2 y(h) Ah2 Bh C
Не вызывает сомнений , что
y0 4y1 y2 Ah2 Bh C 4C Ah2 Bh C 2Ah2 6C
С другой стороны, площадь параболической трапеции можно определить с помощью определённого интеграла:
b
S a f( x)dx;
ah;
bh
Sh ( Ax2 Bx C )dx
h
|
|
Ax3 |
|
|
Bx2 |
|
h |
|
|
|
Ah3 |
Bh2 |
|
A( h)3 |
|
B( h)2 |
||||||||||||||
S |
( |
|
|
|
|
|
|
|
Cx) |
|
|
|
|
|
|
|
|
|
Ch |
( |
|
|
|
C( h)) |
||||||
|
3 |
|
2 |
|
|
3 |
|
|
2 |
3 |
2 |
|||||||||||||||||||
|
|
|
|
|
|
|
h |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
Ah3 |
|
Bh2 |
|
Ah3 |
|
|
Bh2 |
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
Ch ( |
|
|
|
|
|
|
|
|
|
|
|
Ch) |
|
|
|
|
|
||||||
3 |
|
2 |
|
|
3 |
|
|
|
|
2 |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Ah3 |
Ch |
Ah3 |
Ch |
2Ah3 |
|
2ch |
h |
(2Ah2 6c) |
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
3 |
|
|
|
|
3 |
|
|
|
|
|
3 |
|
|
|
|
|
|
3 |
|
|
|
|
|
|
Как видно, площадь параболической трапеции совпала с ранее полученной суммой с кратностью h/3. Следовательно:
h
S 3(y0 4y1 y2 )
После этого можно записать формулу для приближенного вычисления интеграла методом парабол:
h b a 2m
|
x2 |
|
|
|
h |
|
||
a x0 |
f (x)dx |
|
|
|
( y0 |
4 y1 y2 ), |
||
3 |
||||||||
x4 |
|
|
|
h |
|
|
|
|
x2 |
f ( x )dx |
|
|
|
( y2 |
4 y3 y4 ), |
||
3 |
|
|||||||
|
|
|
|
|
21 |
|
x2 m b |
|
h |
|
|
|
x2 m 2 |
f (x)dx |
|
( y2m 2 |
4 y2m 1 |
y2m ), |
3 |
Суммируя левые и правые части, получим слева искомый интеграл, справа его приближённое значение:
b |
|
h |
|
|
a |
f( x)dx |
(( y0 4y1 y2 ) ( y2 4y3 y4 ) ... ( y2m 2 4y2m 1 y2m )) |
||
|
||||
|
3 |
|
h
3( y0 4y1 y2 y2 4y3 y4 ... y2m 2 y2m 1 y2m ))
h
3( y0 4y1 2y2 4y3 ... y2m 2 y2m 1 y2m )
или
b |
|
|
|
|
|
|||
a |
f( x)dx |
h |
( y0 |
y2m 2( y2 |
y4 ... y2m 2 ) 4( y1 y3 ... y2m 1 )) |
|||
|
||||||||
a |
3 |
|
( y0 y2m 2( y2 |
y4 ... y2m 2 ) 4( y1 y3 ... y2m 1 )) |
||||
f( x)dx b a |
||||||||
b |
|
|
|
|
|
|||
|
|
6m |
|
|
|
|
|
|
|
Остаточный член для этого метода находится по формуле: |
|||||||
|
|
|
|
P |
пр |
|
( b a )5 |
* |
|
|
|
|
180 n 4 |
||||
|
|
|
|
|
|
|
где max f ( 4 )( x).
x [ a,b]
Постановка задачи. Разработайте программу вычисления определенного интеграла для заданной функции приближенным и точным методом .
Рекомендуемые этапы расчета :
Вычисление определенного интеграла на отрезке [ a, b ] по указанному методу численного интегрирования с шагом h= (b-a)/m , где m - кратность интегрирования ( метод, границы отрезка и кратность указаны в таблице 1).
Вычисление значения определенного интеграла по аналитической формуле.
Сравнение результатов, а также определение зависимости относительной ошибки метода численного интегрирования от кратности интегрирования для следующих значений m: 0.25m, 0.5m, 0.75m , m, 1.25m, 1.5m .
Представление результатов в виде таблицы на экране дисплея:
Функция |
Пределы интегриро- |
Точное значение |
Метод расчета |
|
____________ |
вания |
|
интеграла |
_____________ |
|
а= … |
b= … |
|
|
m |
|
h |
Интеграл (прибли- |
Относительная |
|
|
|
женно) |
ошибка |
|
|
|
|
|
Полностью отлаженная программа демонстрируется преподавателю. Отчет по курсовой работе содержит титульный лист, изложение варианта задания, постановку задачи в математическом виде, блок-схему и текст программы, схему типов, полученные результаты, выводы.
22
|
|
Варианты заданий |
|
Таблица 1 |
|||
|
|
|
|
|
|||
№ варианта |
Функция |
|
a |
b |
m |
Метод |
|
1 |
Sin x |
|
- π/2 |
0 |
200 |
Входящих пря- |
|
|
|
|
|
|
|
моугольников |
|
2 |
Sin x |
|
- π/2 |
0 |
300 |
Выходящих |
|
|
|
|
|
|
|
прямоугольни- |
|
|
|
|
|
|
|
ков |
|
3 |
Sin x |
|
- π/2 |
0 |
400 |
Симпсона |
|
4 |
Cos x |
|
- π/2 |
0 |
500 |
Входящих пря- |
|
|
|
|
|
|
|
моугольников |
|
5 |
Cos x |
|
0 |
π/2 |
600 |
Выходящих |
|
|
|
|
|
|
|
прямоугольни- |
|
|
|
|
|
|
|
ков |
|
6 |
Cos x |
|
0 |
π/2 |
700 |
Симпсона |
|
7 |
Sin x+ x |
|
π/2 |
2π |
500 |
Входящих пря- |
|
|
|
|
|
|
|
моугольников |
|
8 |
Sin x+ x |
|
π/2 |
3π |
600 |
Выходящих |
|
|
|
|
|
|
|
прямоугольни- |
|
|
|
|
|
|
|
ков |
|
9 |
Sin x+ x |
|
3/2π |
4π |
700 |
Симпсона |
|
10 |
Sin x - x |
|
3/2π |
π |
600 |
Входящих пря- |
|
|
|
|
|
|
|
моугольников |
|
11 |
Sin x - x |
|
π |
4/3π |
800 |
Выходящих |
|
|
|
|
|
|
|
прямоугольни- |
|
|
|
|
|
|
|
ков |
|
12 |
Sin x - x |
|
π |
2π |
900 |
Симпсона |
|
13 |
- x + x2 – x3 |
|
0 |
4.5 |
300 |
Входящих пря- |
|
|
|
|
|
|
|
моугольников |
|
14 |
- x + x2 – x3 |
|
3 |
12.6 |
300 |
Выходящих |
|
|
|
|
|
|
|
прямоугольни- |
|
|
|
|
|
|
|
ков |
|
15 |
2*x+3*x2 - x3 |
|
2 |
10 |
400 |
Симпсона |
|
16 |
2*x+3*x2 - x3 |
|
-3 |
11 |
400 |
Входящих пря- |
|
|
|
|
|
|
|
моугольников |
|
17 |
2*x-3*x2 + x4 |
|
-12 |
-8.4 |
600 |
Выходящих |
|
|
|
|
|
|
|
прямоугольни- |
|
|
|
|
|
|
|
ков |
|
18 |
2*x-3*x2 + x4 |
|
27 |
39 |
600 |
Симпсона |
|
19 |
4*x + x4 |
|
-8 |
-2 |
800 |
Входящих пря- |
|
|
|
|
|
|
|
моугольников |
|
20 |
4*x + x4 |
|
-10 |
-6 |
800 |
Выходящих |
|
|
|
|
|
|
|
прямоугольни- |
|
|
|
|
|
|
|
ков |
|
21 |
- 4*x2 + x4 |
|
-12 |
-8.4 |
500 |
Симпсона |
|
22 |
- 4*x2 + x4 |
|
0 |
14.4 |
500 |
Входящих пря- |
|
|
|
|
|
|
|
моугольников |
|
23 |
Sin x |
|
- π/2 |
0 |
550 |
Выходящих |
|
|
|
|
|
|
|
прямоугольни- |
|
|
|
|
|
|
|
ков |
|
24 |
Cos x |
|
- π/2 |
0 |
550 |
Симпсона |
|
23
Содержание |
|
I. Первая программа ..................................................................................................................... |
3 |
II. Исследование встроенных типов................................................................................................ |
8 |
III. Операторы циклов и режим отладки..................................................................................... |
11 |
IV. Алгоритмы сортировки............................................................................................................ |
14 |
V. Работа с комплексными числами............................................................................................. |
17 |
VI Курсовая работа "Оценка точности методов численного интегрирования"..................... |
19 |
ПРИЛОЖЕНИЕ 1............................................................................................................................ |
24 |
ПРИЛОЖЕНИЕ 1
Пример программной реализации численного интегрирования полинома
Постановка задачи.
Для функции
f (x) 4x3 3x2 2x
на интервале [0, 10] рассчитать определенный интеграл приближённым и точным методом, оценить погрешность и вывести результаты на консоль. Для приближённого вычисления определённого интеграла использовать метод трапеций с кратностью 1000 без дополнительного члена.
Проектирование типов данных.
Для решения поставленной задачи целесообразно использовать структурный тип следующей конструкции:
Поля |
Свойства |
Методы |
|
|||
a |
|
|
h (get) |
Integral () |
Конструктор |
|
|
|
|||||
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b |
|
|
ИнтТрапеции (get) |
fx() |
Функция в точке |
|
m |
|
|
|
Fx() |
Первообразная в |
|
|
|
|
||||
|
|
ИнтЛейбниц (get) |
|
точке |
|
|
|
|
|
|
|
||
|
|
|
ToString() |
|
||
|
|
|
|
|
||
|
|
|
|
|
|
|
Рисунок 15. Схема типа Integral
Программный код
using System; class Интеграл1 {struct Integral {double a, b;
int m;
public Integral(double ina, double inb, int inm)
{a = ina < inb ? ina : inb;
b = ina < inb ? inb : ina; m = inm;
}
public override string ToString() {string s;
s = String.Format("Точное = {0:f3}\nПриближённое ={1:f3}",
24
ИнтТрапеции, ИнтЛейбниц);
double Delta=(ИнтТрапеции - ИнтЛейбниц)/ИнтЛейбниц*100; Delta = Math.Abs(Delta);
s += String.Format("\nПогрешность = {0:f3} %",Delta); return s;
}
public double fx(double x)
{return 4 * x * x * x + 3 * Math.Pow(x, 2) + 2 * x;} public double Fx(double x)
{return x * x * x * x + Math.Pow(x, 3) + x * x;} public double h
{get
{ return (b - a) / m; }
}
public double ИнтЛейбниц {get
{ return Fx(b) - Fx(a);}
}
public double ИнтТрапеции
{get
{double sum = (fx(a)+fx(b))/2;
for (double i = a + h; i < b; i += h) sum += fx(i); sum *= h;
return sum;
}
}
}
static void Main()
{Integral obj=new Integral(0,10,1000); Console.WriteLine(obj.ToString() );
}
}
Рекомендуемая литература:
1.Павловская Т.А. C#. Программирование на языке высокого уровня. – СПб.:
Питер, 2009.;
2.Шилдт Г. С#: учебный курс. – СПб.: Питер; К.: Издательская группа BHV, 2003.- 512с.
3.Лабор В.В. Си Шарп: Создание приложений для Windows – Мн.: Харвест, 2003.-384с.
4.Фаронов В.В. Программирование на языке C#.- СПб.: Питер, 2007.- 240с.
25