Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы - Паскаль, Си, Java, PHP.doc
Скачиваний:
41
Добавлен:
04.06.2015
Размер:
5.29 Mб
Скачать

Пример оформления работы

1. Составить алгоритм и написать код программы, вычисляющей значения суммы ряда S при заданных с консоли начальном и конечном значениях аргумента x (x_nach, x_kon), шаге его изменения delta_x и точности вычислений eps. Вычисленные значения ряда сравнить со значениями функции f=cos(x). Результаты вычислений вывести в виде таблицы с заголовком.

- разложение функцииcos(x)в ряд Тейлора.

Накопление суммы производим по рекуррентнойформуле – каждая последующая сумма вычисляется через предыдущую:

Общий вид слагаемого суммы может быть записан в следующем виде:

Для сокращения объема вычислений выразим его через предыдущее слагаемое:

Сомножитель , называемыйпереходным коэффициентом, можно определить из предыдущего соотношения:

Раскроем эту формулу:

Тогда текущий член ряда будет вычисляться по формуле:

Начальное значение находим подстановкой в формулу для общего членазначенияn=0:

Начальное значение суммы можно принять равным первому члену ряда, то есть . Учитывая, что значение текущего члена ряда и суммы приn=0 уже определены, номер члена рядаn примем равным единице.

Задачу решим вложенными циклами:

  • во внешнемцикле – цикле с постусловием – будем изменять значение аргумента от начального до конечного с заданным шагом,

  • во внутреннемцикле – цикле с предусловием – будем определять значение суммы ряда с заданной точностью для отдельных точек – значений аргумента.

  1. Схема алгоритма решения задачи:

  1. Код программы

3.1. На языке Паскаль:

Program Variant_0;

Uses WinCRT;

Var x, s, f, x_nach, x_kon, delta_x, eps, t: Real;

n: Word;

Begin

WriteLn('Лабораторная работа №3');

WriteLn('Вариант №0');

WriteLn('ИС-11-1');

WriteLn('Пупкин Василий');

WriteLn;

{ввод исходных данных}

WriteLn(‘Ввод исходных данных:’);

Write('x_nach=');

ReadLn(x_nach);

Write('x_kon=');

ReadLn(x_kon);

Write('delta_x=');

ReadLn(delta_x);

Write('eps=');

ReadLn(eps);

WriteLn;

{эхо-печать}

WriteLn('Для x=', x_nach:0:3, ' до ', x_kon:0:3, ' шаг=', delta_x:0:3, ' точность=', eps:0:5);

WriteLn;

WriteLn(' x n s f');

WriteLn('-----------------------------------');

x:=x_nach;

Repeat

{внешний цикл – изменение аргумента}

t:=1.0; {первое слагаемое}

s:=1.0; {начальное значение суммы}

n:=1;

f:=cos(x); {точное значение суммы}

While (Abs(t)>eps) Do

{внутренний цикл – вычисление суммы ряда в отдельной точке}

Begin

t:=-t*x*x/(2.0*n*(2.0*n-1.0)); {очередное слагаемое}

s:=s+t; {очередная сумма}

n:=n+1;

End;

WriteLn(x:0:3, ' ', n:3, ' ', s:0:6, ' ', f:0:6);

x:=x+delta_x; {изменение значения аргумента}

Until(x>x_kon);

End.

3.2. На языке Си:

#include <stdio.h> //директивы препроцессора

#include <conio.h>

#include <math.h>

int main()

{

//описание переменных

float x, s, f, x_nach, x_kon, delta_x, eps, temp;

int n;

printf("\nЛабораторная работа №3");

printf("\nВариант №0");

printf("\nПО-11-1");

printf("\nПупкин Василий\n");

printf("\nВвод исходных данных:\n"); //ввод исходных данных

printf("\nx_nach=");

scanf("%f", &x_nach); //начальное значение аргумента

printf("\nx_kon=");

scanf("%f", &x_kon); //конечное значение аргумента

printf("\ndelta_x=");

scanf("%f", &delta_x); //шаг изменения аргумента

printf("\neps=");

scanf("%f", &eps); //точность вычислений

//эхо-печать

printf("\nДля x=%5.3f до %5.3f с шагом $5.3f и точностью %5.3f\n", x_nach, x_kon, delta_x, eps);

printf("\n x n s f");

printf("\n--------------------------------------");

x = x_nach;

do //внешний цикл - изменение аргумента

{

temp = 1.0; //первое слагаемое

s = 1.0; //начальное значение суммы

n = 1; //количество итераций на каждом шаге

f = cos(x); //точное значение функции

//внутренний цикл - вычисление суммы ряда

while (fabs(temp) > eps)

{

//очередное слагаемое

temp *= - x * x / (2.0 * n * (2.0 * n - 1.0));

s += temp; //очередная сумма

n++; //количество итераций

}

printf("\n%5.3f %d %0.6f %0.6f", x, n, s, f);

x += delta_x; //увеличение аргумента на шаг delta_x

}

while (x <= x_kon);

printf("\n--------------------------------------");

return 0;

}

    1. На языке Java:

package javaapplication3;

// Импорт библиотеки графических компонентов Swing

import javax.swing.*;

import java.util.*;

public class JavaApplication3 // задание нового класса

{

// описание главного метода main этого класса

public static void main(String[] args)

{

//описание переменных:

// действительного типа

Double x, s, f, x_nach, x_kon, delta_x, eps, temp;