Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
образец курс. выч мат.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
957.95 Кб
Скачать

2.Интерполирование математических таблиц

Задание

Составьте программу, для вычисления приближенного значения функции в заданной точке c помощью интерполяционного многочлена Лагранжа.

Решение

Программная реализация методов на языке С++ представлена в листинге 1.2.

Листинг 1.2 – Интерполяционный многочлена Лагранжа

#include <iostream.h>

//#include <stdio.h>

#include <math.h>

#include <conio.h>

void main()

{

int n;

float x [10];

float y [10];

int i,j,p;

float q,l,a,M,f,q1;

double T;

clrscr();

cout<<"Vvedite kol-vo elementov: ";

cin>>n;

cout<<"Vvedite massiv x:\n";

for (i=1;i<=n;i++)

cin>>x[i];

cout<<"Vvedite massiv y:\n";

for (i=1;i<=n;i++)

cin>>y[i];

cout<<"Vvedite znachenie argumenta: ";

cin>>a;

f=exp(a)-sin(a);

cout<<"Tochnoe znachenie argumenta: "<<f<<endl;

p=1;

cout<<"Vvedite znachnie max proizvodnoy: "<<endl;

cin>>M;

l=0;

for (i=1; i<=n+1;i++)

{q=1;

q1=1;

p=p*i;

q1=q1*(a-x[i]);

T=(M/p)*q1;

for (j=1; j<=n;j++)

if (i!=j) q=q*(a-x[j])/(x[i]-x[j]);

l=l+q*y[i];

}

cout<<"Znachenie funktcii = " <<l<<" tochnost = "<<T<<endl;

getch();

}

Результат работы программы:

3.Приближенное вычисление определенных интегралов

Задание

Вычислить интеграл методом средних прямоугольников.

Решение

Исходные данные:

Программная реализация методов на языке СИ++ представлена в листинге 1.3.

Листинг 1.3 – Метод средних прямоугольников.

#include <iostream.h>

#include <math.h>

#include <conio.h>

float Integr (float x)

{

float F;

F = sin(x*x);

return F;

}

void main()

{

float a, b, n, dx, xb, s, x, E;

cout<<"Vvedite nigniy a\n a = ";

cin>>a;

cout<<"Vvedite verhniy predel b\n b = ";

cin>>b;

cout<<"Vvedite kolichestvo otrezkov n\n n = ";

cin>>n;

dx = (b-a)/n;

xb = a + dx/2;

s = 0;

for(int i = 0; i<=n-1; i++)

{

x = xb + i * dx;

s = s + Integr(x) * dx;

}

cout<<"Integral = "<<s;

getch();

}

Результат работы программы:

4. Численное решение обыкновенных дифференциальных уравнений методом Эйлера-Коши

Задание

Решить дифференциальное уравнение методами Эйлера.

Решение

Исходные данные:

Решение

Программная реализация методов на языке си++ представлена в листинге 1.4

Листинг 1.4 – Метод Эйлера

#include <iostream.h>

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main()

{

float a, b, c;

float x, x1, y, y0, y1, y2, h, xi, yi, x11, y11, y22, h1;

float J,E;

int i,j;

cout<<"Vvedite a\n a = ";

cin>>a;

cout<<"Vvedite b\n b = ";

cin>>b;

cout<<"Vvedite c\n c = ";

cin>>c;

cout<<"Vvedite shag\n h = ";

cin>>h;

cout<<"Vvedite Y0\n Y0 = ";

cin>>y0;

E=0.00005;

h1=h/2;

cout<<"Nowiy shag h1 = "<<h1<<endl;

x=a;

y=y0;

xi=a;

yi=y0;

cout<<"x="<<x<<" "<<"y="<<y<<" "<<"x"<<j<<"="<<xi<<" "<<"y"<< j<<"="<<yi<<endl;

J=yi-y;

cout<<"Pogreshnost J = "<<J<<endl;

do

{

// у' = а(х2 + sin(bx)) + су.

y1=y+h*(a*(pow(x,2) + sin(b*x)) + c*y);

x1=x+h;

y2=y+h/2*(a*(pow(x,2) + sin(b*x)) + c*y) + (a*(pow(x1,2) + sin(b*x1)) + c*y1);

x=x1;

y=y2;

y11=yi+h1*(a*(pow(xi,2) + sin(b*xi)) + c*yi);

x11=xi+h1;

y22=yi+h1/2*((a*(pow(xi,2) + sin(b*xi)) + c*yi)+(a*(pow(x11,2) + sin(b*x11)) + c*y11));

xi=x11;

yi=y22;

cout<<"x="<<x<<" "<<"y="<<y<<" "<<"x"<<"="<<xi<<" "<<"y"<< "="<<yi<<endl;

J = fabs(yi-y);

cout<<"Pogreshnost = "<<J<<endl;

h=h1;

h1=h1/2;

}

while (J<E);

getch();

}

Результат работы программы:

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Савицкий Н.И. Технологии организации, хранения и обработки данных М.: ИНФРА-М, 2001.

  2. Глушаков С. В. Программирование в среде Windows. Учебный курс.– Ростов н/Д: «Феникс», 2000.

  3. Исаков В.Н.«Элементы численных методов».

  4. Лапчик М.П. «Численные методы».

  5. Локуциевский О. В., Гавриков М. Б. Начало численного анализа.

ВМ.1000205.000 ПЗ