МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«ДАГЕСТАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Факультет математики и компьютерных наук

 

 

 

Дагестанский государственный университет

 

 

 

 

Б.И.Алибеков

 

 

 

 

 

 

 

Лабораторный практикум по Web программированию на PHP

Часть I

 

 

 

 

 

 

 

 

 

Издательский - полиграфический  центр  ДГУ

2018

 

 

 

Введение

Дисциплины «Проектирование и разработка проблемно-ориентированных приложений (Основы Web-программирования и  Прикладные Интернет – технологии)» призваны содействовать знакомству студентов с компьютерными телекоммуникациями и возможными подходами к разработке гипертекстовых документов, предназначенных для публикации в глобальной компьютерной сети Internet. Она важна с той точки зрения, что позволяет развивать способности студентов, связанные с общей культурой работы в глобальной сети. Курс закрепляет навыки работы с текстом и графикой, а также навыков программирования и проектирования и разработки информационных систем, являясь, таким образом, прямым продолжением курсов «Информатика и программирование», «Информационные технологии», «Объектно-ориентированное программирование», «Базы данных», «Информационные системы», «Проектирование информационных систем» и многих других.

Учебное пособие “Лабораторный практикум по We,-программированию на PHP” имеет целью подготовить студентов факультета математики и компьютерных наук  к эффективному использованию современной вычислительной техникив процессе решения перечисленных  задач дисциплин «Основы Web-программирования» и  «Прикладные Интернет – технологии».

Изучение дисциплины включает аудиторные, индивидуальные  (лабораторные) занятия под руководством преподавателя, а также самостоятельную работу студентов, что обеспечивает закрепление теоретических знаний, способствует получению практических навыков и развитию самостоятельного научного мышления.

Учебное пособие  составлено в соответствии с рабочими программами по курсам “Основы Web-программирования” и “ Прикладные Интернет – технологии” для студентов второго курса по специальности 02.03.02 - Фундаментальная информатика и информационные технологии, а также четвертого курса по специальности 010302 - Прикладная математика и информатика факультета математики и компьютерных наук  ДГУ. Задание состоит из девяти разделов, которые охватывают основные разделы вычислительной математики, физики и техники. При этом студентам предлагается 30  вариантов каждого раздела. . Задачи подобраны из различных задачников в основном из работ .Волков  Б. И.  Математический  практикум  для  физиков - М.:Изд.-Московского  университета,1981.-103 с.,  Светозарова   Г.  И. ,  Сигитов  Е.  В.,   Козловский    А.  В. Практикум по программированию  на   алгоритмических  языках.-М.:  Наука,  1980 .-318 с., Воробьева  Г. Н.  ,  Данилова  А . Н.   Практикум  по численным методам .-   М .: Высшая школа  ,1979.-184с.,  Пильщиков  В. Н.  Сборник упражнений  по языку  Паскаль.-М.:Наука,1989.-155.с.  [29,32]. Приводился решения одой задачи каждого варианта с подробными комментариями. Номер варианта студент определяет по порядковому номеру своей фамилии в групповом журнале. Учебное пособие  содержат также основные функции php из интернета и  могут быть использованы для выполнения лабораторных работ по информатике студентами других специальностей. Программисты, которым требуется осуществлять ответственные числовые, научные или статистические вычисления, вряд ли станут рассматривать язык составления сценариев для веб в качестве приемлемого кандидата на эту роль. Но, несмотря на сказанное, язык PHP предлагает великолепный набор функций, которые полностью обеспечивают решение большинства математических задач, возникающих в процессе выполнения сценариев для веб.  Кроме того, язык PHP предоставляет некоторые более расширенные возможности, такие как арифметика чисел произвольной точности, а также средства библиотек хэширования и криптографических библиотек. Многие из наиболее фундаментальных   математических функций, применяемых в языке PHP, являются просто оболочками вокруг аналогов этих функций на языке C

 

 

Основные функции php

Арифметические операции

 

Операция

Описание

+

Возвращает сумму значений двух своих операндов

-

Если имеются два операнда, то значение правого операнда вычитается из значения левого. Если имеется только правый операнд, то операция возвращает значение этого операнда с обратным знаком

*

Возвращает произведение значений двух своих операндов

/

Возвращает результат деления с плавающей точкой значения левого операнда на значение правого операнда

%

Возвращает остаток от целочисленного деления значения левого операнда на абсолютное значение правого операнда

++

Операция инкремента применяется для добавления единицы к значению той переменной, на которую распространяется эта операция

--

операция декремента  вычитает единицу из значения такой переменной.

Простые математические функции PHP

Функция

Описание

floor()

Принимает единственный фактический параметр (как правило, число с плавающей точкой двойной точности) и возвращает наибольшее целое число, которое меньше или равно этому фактическому параметру (округление в меньшую сторону)

ceil()

Имя этой функции представляет собой сокращение от слова ceiling (потолок). Функция принимает единственный фактический параметр (как правило, число с плавающей точкой двойной точности) и возвращает наименьшее целое число, которое больше или равно этому фактическому параметру (округление в большую сторону)

round()

Принимает единственный фактический параметр (как правило, число с плавающей точкой двойной точности) и возвращает ближайшее целое число

abs()

Модуль числа. Если единственный числовой фактический параметр имеет отрицательное значение, то функция возвращает соответствующее положительное число; если фактический параметр является положительным, то функция возвращает сам фактический параметр

min()

Принимает любое количество числовых фактических параметров (но не менее одного) и возвращает наименьшее из всех значений фактических параметров

max()

Принимает любое количество числовых фактических параметров (но не менее одного) и возвращает наибольшее из всех значений фактических параметров

rand(),

mt_rand()).

С каждым из этих генераторов связаны по три функции одинакового назначения: функция задания начального значения (srand() и mt_srand()), сама функция получения случайного числа и функция, осуществляющая выборку наибольшего целого числа, которое может быть возвращено генератором ((getrandmax() и mt_getrandmax())). Функции getrandmax() и mt_getrandmax() возвращают значение наибольшего числа, которое может быть возвращено функцией rand() или mt_rand(), на платформах Windows это значение ограничено величиной 32768.

 

 

 

 

Например, результаты следующего кода PHP

$round=round(4.6);$ceil=ceil(4.2);$floor=floor(4.8);

$r=min(5,abs(-5),max(round(4.6),ceil(4.2),floor(4.8)));

echo "$r=r, $round=round, $ceil=ceil,$floor=floor";

будут

5=r, 5=round, 5=ceil,4=floor

Результат следующего кода php

$r1=mt_srand((double)microtime()*1000000);

echo"<br />\n$r1=r1";будет=r1

В этом операторе $r1=mt_srand((double)microtime()*1000000); задается начальное значение генератора, равное количеству микросекунд, истекших к данному времени с момента отсчета последней целой секунды.

 

Математические константы PHP

Константа

Описание

Константа

Описание

M_PI

π

M_PI_2

π / 2

M_PI_4

π / 4

M_1_PI

1 / π

M_2_PI

2 / π

M_2_SQRTPI

2 / sqrt(π)

M_E

e

M_SQRT2

sqrt(2)

M_SQRT1_2

1 / sqrt(2)

M_LOG2E

log2(e)

M_LOG10E

lg(e)

M_LN2

loge(2)

M_LN10

loge(10)

 

 

 

abivvda07012017.html

<html >

<head>     

         <title>форма</title>

         </head>

         <body>

         <form name="myform" action="abivvda07012017.php?id=15"  method ="POST">

         <table>

         <tr>

         <td> введите делимое: </td>    

                                      <td> <input  type="text" name="x"     />               </td>

         </tr>

                            <tr>

         <td> введитеделитель: </td>    

                                      <td> <input  type="text" name="y"     />               </td>

         </tr>

                   <tr>

         <td colspen="2">                

                                               <input  type="submit" name="send"  value ="вычислить"   />      </td>

         </tr  

                   </table>

         </form>

         </body>

         </html>

Ответ abivvda07012017.html

abivvda07012017.php

<?php

function base36($value, $base)

{

    $baseChars = array('0', '1', '2', '3', '4', '5',

                       '6', '7', '8', '9', 'a', 'b',

                       'c', 'd', 'e', 'f', 'g', 'h',

                       'i', 'j', 'k', 'l', 'm', 'n',

                       'o', 'p', 'q', 'r', 's', 't',

                       'u', 'v', 'w', 'x', 'y', 'z'

);

    $remainder = 0;

    $newval = "";

 

while ( $value > 0 )

    {

        $remainder = $value % $base;

        $value = ( ($value - $remainder)/ $base );

        $newval .= $baseChars[$remainder];

    }

return strrev($newval);

    }

$x=$_POST["x"];$y=$_POST["y"];

echo "<br>x=$x,y=$y, The string for $x, for instance, is " . base36($x, $y);

?>

Ответ abivvda07012017.php

x=46655,y=5, The string for 46655, for instance, is 2443110

 

Преобразование систем счисления

По умолчанию в языке PHP для прямого и обратного преобразования числовых значений из внешнего представления во внутреннее применяется основание системы счисления 10. Кроме того, можно сообщить интерпретатору PHP, что во внешнем представлении используются восьмеричные числа, заданные по основанию 8 (для этого перед числом необходимо ввести ведущий 0), или шестнадцатеричные числа, заданные по основанию 16 (для этого перед числом необходимо ввести префикс 0x).

Функции преобразования систем счисления

Функция

Описание

BinDec()

Принимает единственный строковый параметр, представляющий собой двоичное целое число (число по основанию 2), и возвращает строковое представление этого числа по основанию системы счисления 10

DecBin()

Аналогична BinDec(), но преобразует из основания системы счисления 10 в основание системы счисления 2

OctDec()

Аналогична BinDec(), но преобразует из основания системы счисления 8 в основание системы счисления 10

DecOct()

Аналогична BinDec(), но преобразует из основания системы счисления 10 в основание системы счисления 8

HexDec()

Аналогична BinDec(), но преобразует из основания системы счисления 16 в основание системы счисления 10

DecHex()

Аналогична BinDec(), но преобразует из основания системы счисления 10 в основание системы счисления 16

base_convert()

Принимает строковый параметр (представляющий целое число, которое подлежит преобразованию) и два целочисленных параметра (исходное и желаемое основание). Возвращает строку, представляющую преобразованное число. В этой строке цифры старше, чем 9 (от 10 до 35), представлены символами a-z. И исходное, и желаемые основания должны находиться в пределах 2-36

Экспоненциальные функции

Функция

Описание

pow()

Принимает два числовых параметра и возвращает первый параметр, возведенный в степень, равную второму параметру. Значение выражения pow($х, $у) равно xy

exp()

Принимает единственный параметр и возводит число e в степень, равную этому показателю степени. Значение выражения exp($х) равно ex

log()

Функция натурального логарифма (ln). Принимает единственный параметр и возвращает его логарифм по основанию e

log10()

Принимает единственный параметр и возвращает его десятичный логарифм (lg)

Тригонометрические функции

Функция

Описание

pi()

Не принимает параметров и возвращает приближенное значение числа π (3.1415926535898). Может использоваться как взаимозаменяемая с константой M_PI

sin()

Принимает числовой параметр в радианах и возвращает синус параметра в виде числа с плавающей точкой двойной точности

cos()

Принимает числовой параметр в радианах и возвращает косинус параметра в виде числа с плавающей точкой двойной точности

tan()

Принимает числовой параметр в радианах и возвращает тангенс параметра в виде числа с плавающей точкой двойной точности

acos()

Принимает числовой параметр и возвращает арккосинус параметра в радианах. Входные данные должны находиться в пределах от -1 до 1 (получение функцией входных данных, выходящих за пределы этого диапазона, приводит к получению результата NAN. Результаты находятся в диапазоне от 0 до π

atan()

Принимает числовой параметр и возвращает арктангенс параметра в радианах. Результаты находятся в диапазоне от -π/2 до π/2

Математические функции с произвольной точностью (функции BC)

Функция

Описание

bcadd()

Принимает два строковых параметра, представляющих числа, и необязательный целочисленный параметр с обозначением масштабного множителя. Возвращает сумму первых двух параметров в виде строки, с количеством десятичных позиций в результате, определяемом параметром с обозначением масштабного множителя. Если параметр с обозначением масштабного множителя не задан, то используется заданный по умолчанию масштабный множитель

bcsub()

Аналогична bcadd(), за исключением того, что возвращает результат вычитания второго параметра от первого

bcmui()

Аналогична bcadd(), за исключением того, что возвращает результат умножения своих параметров

bcdiv()

Аналогична bcadd(), за исключением того, что возвращает результат деления первого параметра на второй

bcmod()

Возвращает модуль (остаток) от деления первого параметра на второй. Поскольку возвращаемое значение относится к целочисленному типу, функция не принимает параметр с обозначением масштабного множителя

bcpow()

Возводит первый параметр в степень, указанную вторым параметром. Количество десятичных позиций в результате определяется масштабным множителем, если он задан

bcsqrt()

Возвращает квадратный корень параметра с количеством десятичных позиций, которое определяется значением необязательного масштабного множителя

bcscale()

Устанавливает заданный по умолчанию масштабный множитель для последующих вызовов функции BC

 

Ниже приведен пример использования функции с произвольной точностью для точного выполнения целочисленных арифметических операций и использования тригонометрических функций в PHP. Выполнение следующего кода:

vichbolch032016.php

<?php

for ($x = 1; $x< 25; $x++)

{

echo "$x<sup>$x</sup> = ".bcpow($x, $x).'<br>';

}

//Ниже показан пример составления таблицы вычисления

//тригонометрических функций для "стандартных" углов:

function display_trigonometry($func_array, $input_array)

{

         // Заголовокфункции

         echo '<table border="1"><tr><th>Значение/функция</th>';

         foreach($func_array as $func)

         {

                   echo "<th>$func</th>";

         }

         echo '</tr><tr>';

         // Вывестиостальнуючастьтаблицы

         foreach($input_array as $input)

         {

                   echo '<th>'.sprintf("%.4f",$input).'</th>';

                   foreach($func_array as $func)

                   {

                            echo '<td>';

                            printf("%4.4f", $func($input));

                            echo '</td>';

                   }

                   echo '</tr><tr>';

         }

         echo '</tr></table>';

}

display_trigonometry(array('sin', 'cos', 'tan'),

array(0, M_PI / 6, M_PI / 3, M_PI / 2, M_PI));

//Пример использования тригонометрических функций в PHP

//Получение очень больших (но не бесконечных) значений тангенса обусловлено тем,

//что теоретически знаменатели должны быть равными нулю, но в действительности

//немного отличаются от нуля из-за ошибок округления.

?>

Ответvichbolch032016.php

11 = 1
22 = 4
33 = 27
44 = 256
55 = 3125
66 = 46656
77 = 823543
88 = 16777216
99 = 387420489
1010 = 10000000000
1111 = 285311670611
1212 = 8916100448256
1313 = 302875106592253
1414 = 11112006825558016
1515 = 437893890380859375
1616 = 18446744073709551616
1717 = 827240261886336764177
1818 = 39346408075296537575424
1919 = 1978419655660313589123979
2020 = 104857600000000000000000000
2121 = 5842587018385982521381124421
2222 = 341427877364219557396646723584
2323 = 20880467999847912034355032910567
2424 = 1333735776850284124449081472843776

Значение/функция

sin

cos

tan

0.0000

0.0000

1.0000

0.0000

0.5236

0.5000

0.8660

0.5774

1.0472

0.8660

0.5000

1.7321

1.5708

1.0000

0.0000

16331778728383844.0000

3.1416

0.0000

-1.0000

-0.0000

 

Операция над строками

Функция

Описание

strpos($str, $search)

 

Возвращает позицию подстроки или символа $search в строке $str или значение false, если строка $str не содержит подстроки $search:

mb_strpos($input, $search)

 

$input = 'Мама мыла раму';

$search = 'мы';

$position = strpos($input, $search); // 9

Неожиданно, но результатом функции будет число 9. Хотя мы видим, что истинная позиция подстроки 'мы' в исходной строке равна 5.

Все дело в том, что некоторые строковые функции не всегда корректно обрабатывают кириллические символы, и для них лучше использовать другую функцию - mb_strpos():

$position = mb_strpos($input, $search); // 5

strrpos()

Функция strpos($str, $search) возвращает позицию подстроки или символа $search в строке $str или значение false, если строка $str не содержит подстроки $search:

trim($str)

Удаляет из строки начальные и конечные пробелы, а также управляющие символы '\n', '\r', '\t'

$input = strtolower($input)

Для перевода строки в нижний регистр используется функция strtolower

$input = mb_ strtolower($input);

Для перевода в нижний регистр строки с кириллическими символами можно использовать функцию mb_strtolower:

$num = strlen($input);

Возвращает длину строки, то есть количество символов в строке $input

$num = mb_strlen($input);

Функция strlen() также некорректно работает с кириллицей, поэтому в этом случае лучше применять функцию mb_strlen()

substr($str, $start [, $length])

Данная функция обрезает строку $str, начиная c символа в позиции $start до конца строки. С помощью дополнительного необязательного параметра $length можно задать количество вырезаемых символов.

Так как данная функция некорректно работает с кириллицей, то вместо нее следует применять функцию mb_substr(), которая действует аналогично

str_replace($old, $new, $input)

Эта функция заменяет в строке $input все вхождения подстроки $old на подстроку $new с учетом регистра

Сайты можно разделить на статические и динамические. При этом верстальщик должен учитывать, что теперь он начинает изучать веб-программирование: принципы работы с сайтом будут отличаться. Одна из первых проблем, с которой сталкивается начинающий в PHP — работа со строками, их чтение и обработка.

 

 

 

 

 Многие функции плохо работают с кириллическими символами. Для кириллических строк используются те же функции, но с префиксом mb_ (например, mb_strpos()). Прежде чем использовать аналоги, в php.ini необходимо раскомментировать строку;extension=php_mbstring.dll, просто убрав точку с запятой.

Служебные символы

Допустим, строка определена с помощью двойных кавычек ($string = "Вот так"). Тогда можно совершенно спокойно использовать управляющие последовательности:

\n совершает перевод строки;

\r возвращает каретку;

\" экранирует двойные кавычки:

echo "Строка с \"двойными\" кавычками"; //Строка с "двойными" кавычками

\$ экранирует доллар;

\\ экранирует обратную косую черту.

 

PHP. Работа с файлами

Работа с файлами разделяется на 3 этапа:

Открытие файла.

Манипуляции с данными.

Закрытие файла.

 

PHP. Работа с файлами

Функция

Описание

fopen().

Функция fopen()открывает  файл в среде PHP. Обязательными параметрами этой функции является имя файла и режим файла. $fp = fopen('counter.txt', 'r');

Выделяют следующие виды режимов файлов

r

открытие файла только для чтения.

r+

открытие файла одновременно на чтение и запись

w

создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается.

w+

аналогичен r+, только если на момент вызова фай такой существует, его содержимое удаляется.

a

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

a+

открывает файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется.

Манипуляции с данными файла

fwrite()

Функции fwrite() записывает данные в файл при помощи. Это функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла:

fgets()

Функция fgets()построчно считывает из файла. В данной функции  значение 999 определяет количество символов, которые будут считываться до тех пор, пока указатель не достигнет конца файла (EOF).

readfile()

Функцию readfile()принимает 1 обязательный параметр, открывает файл, отображает его содержимое в окне браузера, а затем закрывает файл.

fpassthru()

Функцию fpassthru()принимает 1 обязательный параметр и отображает его содержимое в окне браузера. Перед использованием этой функции необходимо открыть файл в режиме чтения. По окончанию считывания файла функция автоматически закрывает файл(при этом дескриптор файла становиться недействительным).

file()

Очень часто встречаются ситуации, когда необходимо содержимое сайта считать в массив. Эту возможность предусматривает использование функции file(). При вызове этой функции, каждая строка файла сохранятся в отдельном элементе указанного массива.Не следует применять функцию file() к двоичным файлам (binary-safe), т.к. она не является безопасной в плане считывания двоичных файлов, если при этом,  где-то встретиться символ конца файла (EOF), то она не гарантирует вам чтение всего двоичного файла.

fclose()

Функция fclose() закрывает файл и принимает 1 обязательный параметр.

file_exists()

Функция file_exists не производит проверку файлов на удаленном веб-сервере. Для правильной работы функции, файл со скриптом должен находиться на том сервере, где и проверяемый файл.

filesize()

Функция filesize() определяет размер файла.

tmpfile()

Функция tmpfile() создает временный файл.

count()

Функция count() определяет количество строк в файле.

filetype()

Функция filetype()определяет тип файла, которая принимает единственный параметр

stat()

Функцией stat() определяет все параметры файла.

ftruncate()

Функция ftruncate()очищает файл.

filectime()

Функция filectime() определяет  дату последнего изменения файла..

После вызова строка может содержать одно из следующих значений:

Функция

Описание

file –

обычный файл

dir

 каталог

ink

 символическая ссылка

fifo

канал

block

блочно - ориентированное устройство

char

символьно - ориентированное устройство

unknown

неизвестный тип файла

 

Работа с массивами в PHP

Функция

Описание

array()

Функция array() создает массив.

count():

Функция count() опредеяет длину (размер) индексируемого массива.

for или foreach:

Перебор элементов. Перебрать все элементы автомассива можно с помощью конструкции for или foreach:for($i = 0; $i < count($products);$i++):   echo $products[$i];

echo "<br>";endfor;

foreach($products as $product):   echo $product;

   echo "<br>";endforeach;

unset($products[3])

Удалить элемент в массиве можно следующим образом:unset($products[3])

array_search

поиск значения в массиве

Операции с каталогами

Функция

Описание

mkdir()

if(mkdir("newdir"))

    echo"Каталогсоздан";

else

    echo"Ошибка при создании каталога";

rmdir()

Функция rmdir() удаляет каталог.. Ее использование аналогично mkdir()

getcwd()

Функция getcwd() получает абсолютный путь к текущему каталогу в виде строки:$path = getcwd();echo $path; // C:\localhost

opendir()

closedir()

 

Функция opendir() открывает определенный каталог для считывания из него информации о файлах и каталогах. При успешном открытии каталога функция возвращает дескриптор открытого каталога. После окончания работы с каталогом его надо закрыть функцией closedir().

readdir()

Функция readdir() считывает имя отдельного файла в открытом каталоге.

За описанием сопутствующих функций, таких как dirname(), is_dir(), mkdir() и rmdir(), обратитесь к главе Файловая система.

chdir

Изменяет каталог

chroot

Изменяет корневой каталог

closedir

Освобождает дескриптор каталога

dir

Возвращает экземпляр класса Directory

getcwd

Получает имя текущего рабочего каталога

opendir

Открывает дескриптор каталога

readdir

Получает элемент каталога по его дескриптору

rewinddir

Сбросить дескриптор каталога

scandir

Получает список файлов и каталогов, расположенных по указанномупути

 

lek2_17pol.html

<html>

<head>     

         <title>Форма</title>

         </head>

         <body>

         <form name="myform" action="lek2_17pol.php?id=15"  method ="POST">

         <table>

         <tr>

         <td> введите x: </td>        

                                      <td> <input  type="text" name="x"     />               </td>

         </tr>

                                      <tr>

         <td colspen="2">       введите коэфициенты  многочлена:   </td>        

                                      <td> <textarea   name="mas" cols="40" rows="20"/>            </textarea></td>

         </tr  

                   <tr>

         <td colspen="2">                

                                               <input  type="submit" name="send"  value ="вычислить"   />      </td>

         </tr  

                   </table>     </form>     </body>    </html>

Ответ lek2_17pol.html

 

 

 

lek2_17pol.php

<?php

print_r($_POST);

echo"<br />";

echo $_POST["x"];

echo"<br />";

echo"<br />";

echo $_POST["mas"];

echo"<br />";

print_r($_GET);

echo"<br />";

print_r($_REQUEST);

echo"<br />";

echo $_REQUEST["x"];

echo"<br />";

echo $_REQUEST["mas"];

echo"<br />";

function pol($mass,$x)

{$s=0;

for($n=0;$n<count($mass);$n++)

{

$s=$s*$x+$mass[$n];        

}

return $s;  

}

$x=$_POST["x"];$ss=$_POST["mas"];

$arr = array();

$num = strlen($ss);

$m="";

for($n=0;$n<$num;$n++)

{

         $c = substr($ss,$n, 1);

         if ($c==",")

{

         $arr[]=$m;$m="";

}      

else

{

         $m.=$c;

}

}

echo"<br />";

print_r($arr);

echo"<br />";

$p=pol($arr,$x);

$m=count($arr)-1;

echo"<br />P($x,$m)=$p";

$fp = fopen('pol03122016.txt', 'r'); // Текстовый режим

$arrf = array();

while (!feof($fp))

{

$ss = fgets($fp, 999);

$num = strlen($ss);

$m="";

for($n=0;$n<$num;$n++)

{

         $c = substr($ss,$n, 1);

         if ($c==",")

{

         $arrf[]=$m;$m="";

}      

else

{

         $m.=$c;

}

}

echo"<br />";

 

echo $ss."<br />";

}

print_r($arrf);

echo"<br />";

$x=$arrf[0];

$arrff = array();

for($n=1;$n<count($arrf);$n++)

{

$arrff[] = $arrf[$n];   

}

print_r($arrff);

echo"<br />";

$p=pol($arrff,$x);

$m=count($arrff)-1;

echo"<br />P($x,$m)=$p";

?>

 

Ответ lek2_17pol.php

Array ( [x] => 1 [mas] => 0.5,1,2,3,4,5,6,7,8,9. [send] =>вычислить )
1
0.5,1,2,3,4,5,6,7,8,9.
Array ( [id] => 15 )
Array ( [id] => 15 [x] => 1 [mas] => 0.5,1,2,3,4,5,6,7,8,9. [send] =>
вычислить )
1
0.5,1,2,3,4,5,6,7,8,9.
Array ( [0] => 0.5 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 )
P(1,8)=36.5
1.5,2.7,23,-3,4,7.8,9.33,8.88,6,
1.5,2.7,23,-3,4,7.8,9.33,8.88,6,
1.5,2.7,23,-3,4,7.8,9.33,8.88,6,
1.5,2.7,23,-3,4,7.8,9.33,8.88,6,
Array ( [0] => 1.5 [1] => 2.7 [2] => 23 [3] => -3 [4] => 4 [5] => 7.8 [6] => 9.33 [7] => 8.88 [8] => 6 [9] => 1.5 [10] => 2.7 [11] => 23 [12] => -3 [13] => 4 [14] => 7.8 [15] => 9.33 [16] => 8.88 [17] => 6 [18] => 1.5 [19] => 2.7 [20] => 23 [21] => -3 [22] => 4 [23] => 7.8 [24] => 9.33 [25] => 8.88 [26] => 6 [27] => 1.5 [28] => 2.7 [29] => 23 [30] => -3 [31] => 4 [32] => 7.8 [33] => 9.33 [34] => 8.88 [35] => 6 )
Array ( [0] => 2.7 [1] => 23 [2] => -3 [3] => 4 [4] => 7.8 [5] => 9.33 [6] => 8.88 [7] => 6 [8] => 1.5 [9] => 2.7 [10] => 23 [11] => -3 [12] => 4 [13] => 7.8 [14] => 9.33 [15] => 8.88 [16] => 6 [17] => 1.5 [18] => 2.7 [19] => 23 [20] => -3 [21] => 4 [22] => 7.8 [23] => 9.33 [24] => 8.88 [25] => 6 [26] => 1.5 [27] => 2.7 [28] => 23 [29] => -3 [30] => 4 [31] => 7.8 [32] => 9.33 [33] => 8.88 [34] => 6 )
P(1.5,34)=21770996.122741

 

Содержимоевфайлеpol03122016.txt

1.5,2.7,23,-3,4,7.8,9.33,8.88,6,

1.5,2.7,23,-3,4,7.8,9.33,8.88,6,

1.5,2.7,23,-3,4,7.8,9.33,8.88,6,

1.5,2.7,23,-3,4,7.8,9.33,8.88,6,

 

stroki03122016a.php

<?php

//Такая функция должна быть в арсенале разработчика:

//она получает оригинальную строку, начало и конец,

//а возвращает текст, который содержится между $start и $end.

function GetBetween($content,$start,$end){

   $r = explode($start, $content);

         if (isset($r[1])){

                 $r = explode($end, $r[1]);

         return $r[0];

             }

         return '';

         }

$a="abcdefrk";$b="ab";$c="rk";

$s=GetBetween($a,$b,$c);

echo $s;

//Если строка содержится в другой строке и вам нужно найти ее, то задача решается просто:

         function contains($str, $content, $ignorecase=true){

         if ($ignorecase){

                 $str = strtolower($str);

                 $content = strtolower($content);

             }

         return strpos($content,$str) ? true : false;

         }

$a="abcdefrk";$b="ab";$c="rk";

$c=true;

$s=contains($a,$b,$c=true);

echo $s."<br/>"."12";

echo $a;

//Функция strpos($str, $search) возвращает позицию подстроки или символа $search в строке $str

//или значение false, если строка $str не содержит подстроки $search:

$input = 'This is the end';

$search = 'is';

$position = strpos($input, $search); // 2

if($position!==false)

{

echo "Позицияподстроки '$search' встроке '$input': $position";

}

//Теперь применим функцию на другом примере:

$input = 'Мама мыла раму';

$search = 'мы';

$position = strpos($input, $search); // 9

echo "<br/>".$position."<br/>"."12";

//Неожиданно, но результатом функции будет число 9. Хотя мы видим, что истинная позиция

//подстроки 'мы' в исходной строке равна 5.

$position = mb_strpos($input, $search); // 5

echo "<br/>".$position."<br/>"."13";

//Функция strrpos() во многом аналогична функции strpos(), только ищет позицию не первого,

//а последнего вхождения подстроки в строку:

$input = 'This is the end';

$search = 'is';

$position = strrpos($input, $search); // 5

echo "<br/>".$position."<br/>"."14";

//Но опять же данная функция не совсем корректно работает с кириллическими символами,

//поэтому нам надо использовать ее аналог - mb_strrpos():

$position = mb_strrpos($input, $search);

echo "<br/>".$position."<br/>"."15";

//Функция trim($str) удаляет из строки начальные и конечные пробелы, а также управляющие символы '\n', '\r', '\t':

$input = '  Мама мыла раму  ';

$input = trim($input);

echo "<br/>".$input."<br/>"."16";

//Для перевода в нижний регистр строки с кириллическими символами можно использовать функцию mb_strtolower:

$input = 'The World is Mine';

$s = strtolower($input);

//Для перевода строки в верхний регистр примеяются функции strtoupper()/mb_ strtoupper(), которые работают аналогично.

echo "<br/>".$s."<br/>"."17";

$input = 'THE WORLD IS  MINE';

$s = mb_strtoupper($input);

echo "<br/>".$s."<br/>"."18";

//Функция strlen() возвращает длину строки, то есть количество символов в ней:

$input = 'Hello world';

$num = strlen($input); echo"<br/>";

echo $num;echo "<br/>19";echo"<br/>";

//Функция strlen() также некорректно работает с кириллицей, поэтому в этом случае лучше применять функцию mb_strlen():

$input = 'Мама мыла раму';

$num = mb_strlen($input);

echo $num;echo"<br/>";echo "<br/>20";

//Применяя функцию substr($str, $start [, $length]), можно получить из одной строки ее

//определенную часть. Данная функция обрезает строку $str, начиная c символа в позиции

//$start до конца строки. С помощью дополнительного необязательного параметра

//$length можно задать количество вырезаемых символов.

$input = 'The world is mine!';

$subinput1 = substr($input, 2);

$subinput2 = substr($input, 2, 6);

$subinput3 = substr($input, 2, 1);

echo $subinput1;

echo "<br />";

echo"<br/>";echo "<br/>21b";

echo"<br/>";echo $subinput2;echo"<br/>";echo $subinput3;echo"<br/>";echo "<br/>21a";

//Так как данная функция некорректно работает с кириллицей, то вместо нее следует применять

//функцию mb_substr(), которая действует аналогично:

$input = 'Мама мыла раму';

$subinput1 = mb_substr($input, 2);

$subinput2 = mb_substr($input, 2, 6);

echo"<br/>";echo "<br/>22";

echo"<br/>";echo $subinput2;

?>

Ответ

stroki03122016a.php

cdef
12abcdefrk
Позицияподстроки 'is' встроке 'This is the end': 2
9
12
9
13
5
14
5
15
Мамамылараму
16
the world is mine
17
THE WORLD IS MINE
18
11
19
26
20e world is mine!

21b
eworl
e

21
a

22
ама

stroki03122016.php

<?php

//Такая функция должна быть в арсенале разработчика:

//она получает оригинальную строку, начало и конец,

//а возвращает текст, который содержится между $start и $end.

function GetBetween($content,$start,$end){

   $r = explode($start, $content);

         if (isset($r[1])){

                 $r = explode($end, $r[1]);

         return $r[0];

             }

         return '';

         }

$a="abcdefrk";$b="ab";$c="rk";

$s=GetBetween($a,$b,$c);

echo $s;

$fh = fopen("contacts.csv", "r");

         while($line = fgetcsv($fh, 1000, ","))

         {

echo "Contact: {$line[1]}";

         }

//Если строка содержится в другой строке и вам нужно найти ее, то задача решается просто:

         function contains($str, $content, $ignorecase=true){

         if ($ignorecase){

                 $str = strtolower($str);

                 $content = strtolower($content);

             }

         return strpos($content,$str) ? true : false;

         }

$a="abcdefrk";$b="ab";$c="rk";

$s=contains($a,$b,$c=true);

echo $s;

?>

Ответ

stroki03122016.php

cdef

 

 

 

 

 

 

Лабораторная работа 1

ТЕМА: Решение алгебраических и трансцентдентных уравнений

 

Найти корни уравнения вида

                                 (1)

точно удается лишь в частных случаях. Поэтому разработаны методы численного решения уравнений (1), которые позволяют отыскать приближенные значения корней этого уравнения. При этом приходится решать две задачи:

1) отделение корней;

2) вычисление корней с заданной точностью.

         Для  выделения областей, содержащих один и только один корень можно воспользоваться, например, графическим способом.

         Для решения второй задачи  существуют многочисленные методы, из которых мы рассмотрим лишь три: метод итерации, метод Ньютона и метод половинного деления.

         Метод итераций.

Уравнение представим в форме .

Например, можно выделить из уравнения   , остальные члены перенести в правую часть. Или умножить левую  и правую часть на произвольную константу  и прибавить к левой и правой части , т.е. представит   в  виде .

         Выбираем на отрезке [a,b] произвольную точку   нулевое приближение, и примем в качестве следующего приближения

, далее  и вообще пусть  получается их  по формуле

                             (3)

Этот процесс последовательного нахождения  (n=1,2,3,...) по формуле (3) называется методом итераций. Число итераций n определяется из условия.

         ½                          (4)

где e - заданная точность. -определяется по формуле

   

         Метод Ньютона.

         Пусть уравнение имеет один корень на отрезке ,  пусть   и   определены, непрерывны и сохраняют постоянные знаки на отрезке .

         Формула для последовательного приближения к корню имеет вид ).

         Процесс вычисления         приближений прекратим при  выполнении условия

,

         Начальное  приближение С0 определим по формуле

 

 

         3. Метод половинного деления.

         Пусть дано уравнение , где функция непрерывна на отрезке [a,b] и   .

         Для нахождения корня  уравнения (1), принадлежащего отрезку [a,b], делим отрезом попалам, т.е. выбираем начальное приближение равным       Если , то  является приближенным корнем уравнения. Если , то выбираем тот из отрезков   или , на концах которого функция имеет противоположные знаки. Полученный отрезок снова делим попалам и проводим то же рассмотрение и т.д.

         Следующее приближение находим по формуле

, где ,  ;

        

 

        

         Процесс вычисления приближений прекратим при выполнении условия

                           .

 

Abilr117122016.html

<html >

<head>     

         <title>форма</title>

         </head>

         <body>

         <form name="myform" action="abilr117122016.php?id=15"  method ="POST">

         <table>

         <tr>

         <td> введите a: </td>        

                                      <td> <input  type="text" name="a"      />               </td>

         </tr>

                   <tr>

         <td> введите b: </td>        

                                      <td> <input  type="text" name="b"     />               </td>

         </tr>

                                      <tr>

         <td> введите eps: </td>     

                                      <td> <input  type="text" name="eps"  />               </td>

         </tr>

                                      <tr>

         <td colspen="2">                

                                               <input  type="submit" name="send"  value ="вычислить"   />      </td>

         </tr  

                   </table>

         </form>

         </body>

         </html>

 

Ответ abilr117122016.html

 

Abilr117122016.php

<?php

function f($x)

{

         return $x+sqrt($x)+exp(log($x)/3)-2.5;

}

function f1($x)

{

         return 1+0.5/sqrt($x)+exp(-2*log($x)/3);

}

function f2($x)

{

         return -(1/(4*$x*sqrt($x))+2*exp(-5*log($x)/3)/9);

}

echo"<br />";

$a=$_POST["a"];$b=$_POST["b"];$eps=$_POST["eps"];

$ak=$a;$bk=$b;$ck=($ak+$bk)/2;

while (abs(f($ck))>$eps)

{      

$ck=($ak+$bk)/2;

         if(f($ak)*f($ck)>0)

         {$ak=$ck;}

else

{$bk=$ck;}

}

$s=f($ck);

echo " <br />Кореньнаотрезке [$a, $b]  <br /> f($ck)=$s";

$s=f1($ck);

echo " <br />  Первая производная  <br /> f1($ck)=$s";

$s=f2($ck);

echo " <br />  Вторая  производная   <br /> f2($ck)=$s";

echo "<br/>";

print_r($_POST);echo "<br/>";

?>

Ответ  abilr117122016.php

Корень на отрезке [0.4, 1]

 f(0.73761923313141)=-2.6167036537572E-8

Первая производная

f1(0.73761923313141)=2.8071070698714

Вторая производная

f2(0.73761923313141)=-0.76366603063641

Array( [a] => 0.4 [b] => 1 [eps] => 0.0000001 [send] =>вычислить)

Задание к работе:

         1. Проверить условие сходимости и записать расчетные формулы для нахождения корня уравнения (табл.1) с точностью  (интервал существования корня и метод численного решения для каждого варианта в табл.1).

         2. Составить блок-схему алгоритма.

         3. Выбрать начальное приближение корня из указанного отрезка.

         4. Составить программу решения задачи. В программе предусмотреть подсчет и вывод на печать числа итераций, за которое удается найти значение корня с заданной точностью.

         5. Отладить и выполнить программу на машине, получить значение корня с заданной точностью и сравнить его с приведенным в табл.1.

 

Таблица 1. Задание к лабораторной работе 1.

 

 

Уравнение

Отрезок, содержа-

щий

корень

Метод

численного

решения

Прибли-

женное значение

корня

1

[2; 3]

итераций

 

2,2985

2

[0; 2]

Ньютона

 

1,0001

3

[0,4; 1]

половинного

деления

0,7376

4

[0; 0,85]

итераций

0,2624

5

 

[1; 2]

Ньютона

1,1183

6

 

[0; 0,8]

половинного

деления

 

0,3333

7

[0; 1]

интераций

 

0,5629

8

[2; 4]

Ньютона

3,2300

9

[1; 2]

половинного

деления

1,8756

10

[0; 1]

итераций

 

0,7672

11

[0; 1]

Ньютона

0,8814

12

[1; 3]

половинного деления

1,3749

13

[1,2; 2]

итераций

1,3077

14

[3; 4]

Ньютона

3,5265

15

[1; 2]

половинного деления

1,0804

16

[0; 1,5]

итераций

1,1474

17

[1; 3]

Ньютона

2,0692

18

[0; 1]

половинного деления

0,5768

19

[0,5; 1]

итераций

0,9892

20

[1; 3]

Ньютона

 

1,8832

21

[0; 1]

половинного деления

0,1010

22

[2; 3]

интераций

 

2,0267

23

[0,4; 1]

Ньютона

0,6533

24

 

[-1; 0]

Половинног

деления

-0,2877

25

[2; 3]

итераций

2,8459

26

[0,2; 1]

Ньютона

0,5472

27

[1; 2]

половинного деления

1,0769

28

[1; 2]

итераций

1,2388

29

[0; 1]

Ньютона

0,4538

30

[2; 3]

половинного деления

2,4200

 

Лабораторная работа 2

ТЕМА: Вычисление определенных интегралов

 

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

                  

мы можем вычислить определенный интеграл

                  

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

        

 

 

Метод трапеций.

         Разобъем отрезок  интегрирования   на  равных частей длиной . В точках разбиения , ,... ..., . Вычислим ординаты , ,..., ).

         Тогда приближенные значения интеграла методом трапеций  вычисляется по формуле

 

         Метод Симпсона.

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

, ,..., .

         Тогда формула Симпсона имеет вид

 

Интеграл функции

по  методуСимпсона вычисляется  по следующей программе: 

abilr216122016.html

<html >

<head>     

         <title>форма</title>

         </head>

         <body>

         <form name="myform" action="abilr216122016.php?id=15"  method ="POST">

         <table>

         <tr>

         <td> введите a: </td>       

                                      <td> <input  type="text" name="a"      />               </td>

         </tr>

                   <tr>

         <td> введите b: </td>       

                                      <td> <input  type="text" name="b"     />               </td>

         </tr>

                                      <tr>

         <td> введите n: </td>       

                                      <td> <input  type="text" name="n"     />               </td>

         </tr>

                                      <tr>

         <td colspen="2">                

                                               <input  type="submit" name="send"  value ="вычислить"   />      </td>

         </tr  

                   </table>

         </form>

         </body>

         </html>

Ответ abilr216122016.html

 

abilr216122016.php

<?php

function f($x)

{

         return log($x)/($x*sqrt(1+log($x)));

}

echo"<br />";

$a=$_POST["a"];$b=$_POST["b"];$n=$_POST["n"];

$h=($b-$a)/(2*$n);$k=4;$s=f($a)+f($b);

for($i=1;$i<2*$n;$i++)

{$s+=$k*f($a+$h*$i);$k=6-$k;

}

$s*=($b-$a)/(6*$n);

echo " <br />  Интеграл по  формуле Cимпсона  <br /> S($a,$b,$n)=$s";

echo "<br/>";

print_r($_POST);echo "<br/>";

?>

Ответ  abilr216122016.php

Интеграл по формуле Cимпсона

S(1,3.5,30)=0.58563732495808

Array ( [a] => 1 [b] => 3.5 [n] => 30 [send] => вычислить )

abilr2a17122016. Html

html >

<head>     

         <title>форма</title>

         </head>

         <body>

         <form name="myform" action="abilr2a17122016.php?id=15"  method ="POST">

         <table>

         <tr>

         <td> введите a: </td>       

                                      <td> <input  type="text" name="a"      />               </td>

         </tr>

                   <tr>

         <td> введите b: </td>       

                                      <td> <input  type="text" name="b"     />               </td>

         </tr>

                                      <tr>

         <td> введите eps: </td>    

                                      <td> <input  type="text" name="eps"  />               </td>

         </tr>

                                      <tr>

         <td colspen="2">                

                                               <input  type="submit" name="send"  value ="вычислить"   />      </td>

         </tr  

                   </table>

         </form>

         </body>

         </html>

Ответ  abilr2a17122016. Html

  abilr2a17122016.php

<?php

function f($x)

{

         return log($x)/($x*sqrt(1+log($x)));

}

function fis($a,$b,$n)

{

$h=($b-$a)/(2*$n);$k=4;

$s=f($a)+f($b);

for($i=1;$i<2*$n;$i++)

{

         $s+=$k*f($a+$h*$i);$k=6-$k;

         }

$s*=($b-$a)/(6*$n);

return         $s;

}

echo"<br />";

$aa=$_POST["a"];$bb=$_POST["b"];$eps=$_POST["eps"];

$nn=10;$ss=fis($aa,$bb,$nn);

$ss1=10*$ss;

while (abs($ss-$ss1)>$eps)

{

$ss1=$ss; $nn*=2;$ss=fis($aa,$bb,$nn);     

}

echo " <br />  Интеграл по  формуле Cимпсона  <br /> Sis($aa,$bb,$nn)=$ss";

echo "<br/>";

print_r($_POST);echo "<br/>";

?>

Ответ  abilr2a17122016.php

Интеграл по формуле Cимпсона

Sis(1,3.5,0.0000001)=0.58563763792274

Array ( [a] => 1 [b] => 3.5 [eps] => 0.0000001 [send] =>вычислить )

 

Задание к работе:

         1. Записать расчетные формулы для решения задачи.

         2. Составить блок-схему алгоритма и программу для вычисления определенного интеграла указанным в варианте методом (табл.2), разбивая отрезок интегрирования на указанное число (n) частей. Предусмотреть в программе вычисление точного значения определенного интеграла через первообразную.

         3. Составить блок - схему и программу вычисления значений первообразной. Предусмотреть в программе печать точных значений первообразной с тем же шагом и вычерчиванием графиков точного и приближенного значений первообразной.

         4. Отладить обе программы.

        

 

 

 

 

Таблица 2 Задание к лабораторной работе 2.

вар.

 

Подынтегральная

функция

 

 

Промежуток интегр.

 

Метод численного решения определ. интегр.

 

Кол-во частей разб.

Точное значение первообразной

1

 

[1; 3,5]

 

Симпсона

30

 

2

трапеций

 

54

3

[2; 3]

 

Симпсона

 

36

2,3026 (ln ln x - ln ln 2)

4

[1; 4]

 

трапеций

 

52

 

1/3 ln3x

5

[ 0; ln2]

Симпсона

104

 

6

 

[0; 1]

 

трапеций

48

 

7

 

[0; 2]

Симпсона

48

 

 

8

 

[0; 2]

трапеций

208

9

 

[1; 2,5]

 

Симпсона

 

44

 

10

 

[0, ]

 

трапеций

 

48

 

11

[0; 3]

Симпсона

36

12

[1; 3]

трапеций

 

40

xx-1

13

 

[0; 1]

 

Симпсона

 

44

14

1, 2]

трапеций

160

 

15

 

 

[0; 1]

 

Симпсона

 

240

16

 

[0; 1]

 

трапеций

 

22

 

17

 

[0; 2]

 

Симпсона

 

48

18

трапеций

22

19

[0; 1,9999]

Симпсона

96

 

20

[0; p]

трапеций

60

21

 

[1; e]

Симпсона

52

22

 

[0; 3]

 

трапеций

 

176

 

23

 

[0; 1]

 

Симпсона

 

36

 

 

24

 

[1; 1,5]

 

трапеций

 

52

 

 

25

 

[0; 1,5]

 

Симпсона

 

132

 

 

26

 

трапеций

 

40

 

27

 

[0; 1]

 

Симпсона

 

78

 

 

28

 

[1; 2]

 

трапеций

 

40

 

29

 

[1; 2]

 

Симпсона

 

72

30

[1; 2]

трапеций

36

        

Лабораторная работа 3

ТЕМА:  Вычисление конечных сумм

 

         Работа содержит задачи, которые сводятся к нахождению суммы некоторого количества слагаемых

                                     

при различных значениях параметра суммирования . Каждое слагаемое суммы зависит от переменной  и номера , определяющего место этого слагаемого в сумме.

         Обычно формула общего  члена суммы принадлежит к одному из следующих трех типов:

         1.a)         1.б)                                 1.в) .

         2.а)        2.б)

         2.в)

         3.a)          3.б)

         3.в)

         В случае 1.а), 1.б), 1.в) для вычисления члена суммы целесообразно использовать рекурентные соотношения, т.е. выражать последующий член суммы через предыдущий:

         1.а) ;

          .

         1.б) ;

         n.

         1.в) ;

         , k=1,2, ..., n              

         В случае 2.а), 2.б) и 2.в) применение рекурентных соотношений  нецелесообразно. Вычисления будут наиболее эффективными, если каждый член суммы вычислять по общей формуле.

         В случае 3.а), 3.б)  и  3.в) член суммы целесообразно представить  в виде двух сомножителей:

         3.а) ); где        

3.б) где .

         3.в) где  ak=(k2+1); Jk(x)=1/k!(x/2)k

один из которых:

         3.а)                    3.б)        3.в) .

вычисляется по  рекурентному соотношению,  а другой:

         3.а)   ;              3.б) ; 3.в) 

вычисляется непосредственно.

abilr316122016.html

<html >

<head>     

         <title>форма</title>

         </head>

         <body>

         <form name="myform" action="abilr116122016.php?id=15"  method ="POST">

         <table>

         <tr>

         <td> введите a: </td>       

                                      <td> <input  type="text" name="a"      />               </td>

         </tr>

                   <tr>

         <td> введите b: </td>       

                                      <td> <input  type="text" name="b"     />               </td>

         </tr>

                   <tr>

         <td> введите h: </td>       

                                      <td> <input  type="text" name="h"     />               </td>

         </tr>

                   <tr>

         <td> введите n: </td>       

                                      <td> <input  type="text" name="n"     />               </td>

         </tr>

                                      <tr>

         <td colspen="2">                

                                               <input  type="submit" name="send"  value ="вычислить"   />      </td>

         </tr  

                   </table>

         </form>

         </body>

         </html>

Ответ abilr316122016.html

Abilr316122016.php

<?php

echo"<br />";

$a=$_POST["a"];$b=$_POST["b"];$h=$_POST["h"];$n=$_POST["n"];

$ss="        <br />  Таблица sin(x)    <br />";$x=$a;

while ($x<=$b)

{

         $r=$x*$x;$s=0;$u=$x;

         for($i=0;$i<=$n;$i++)

         {

         $s+=$u;$u=-$u*$r/((2*$i+2)*(2*$i+3));

         }

         $ss.="<br />"."ss(".$x.")=".$s;

         $s=sin($x);

         $ss.="                "."sin(".$x.")=".$s;

         $x+=$h;   

}

echo "<br/>";

print_r($_POST);echo "<br/>";echo $ss;

?>

Ответ abilr316122016.php

Array ( [a] => -2 [b] => 2 [h] => 0.1 [n] => 40 [send] => вычислить )

Таблица sin(x)

ss(-2)=-0.90929742682568 sin(-2)=-0.90929742682568
ss(-1.9)=-0.94630008768741 sin(-1.9)=-0.94630008768741
ss(-1.8)=-0.9738476308782 sin(-1.8)=-0.9738476308782
ss(-1.7)=-0.99166481045247 sin(-1.7)=-0.99166481045247
ss(-1.6)=-0.99957360304151 sin(-1.6)=-0.99957360304151
ss(-1.5)=-0.99749498660405 sin(-1.5)=-0.99749498660405
ss(-1.4)=-0.98544972998846 sin(-1.4)=-0.98544972998846
ss(-1.3)=-0.96355818541719 sin(-1.3)=-0.96355818541719
ss(-1.2)=-0.93203908596723 sin(-1.2)=-0.93203908596723
ss(-1.1)=-0.89120736006143 sin(-1.1)=-0.89120736006143
ss(-1)=-0.8414709848079 sin(-1)=-0.8414709848079
ss(-0.9)=-0.78332690962748 sin(-0.9)=-0.78332690962748
ss(-0.8)=-0.71735609089952 sin(-0.8)=-0.71735609089952
ss(-0.7)=-0.64421768723769 sin(-0.7)=-0.64421768723769
ss(-0.6)=-0.56464247339503 sin(-0.6)=-0.56464247339503
ss(-0.5)=-0.4794255386042 sin(-0.5)=-0.4794255386042
ss(-0.4)=-0.38941834230865 sin(-0.4)=-0.38941834230865
ss(-0.3)=-0.29552020666134 sin(-0.3)=-0.29552020666134
ss(-0.2)=-0.19866933079506 sin(-0.2)=-0.19866933079506
ss(-0.099999999999999)=-0.099833416646828 sin(-0.099999999999999)=-0.099833416646828
ss(6.3837823915947E-16)=6.3837823915947E-16 sin(6.3837823915947E-16)=6.3837823915947E-16
ss(0.1)=0.099833416646829 sin(0.1)=0.099833416646829
ss(0.2)=0.19866933079506 sin(0.2)=0.19866933079506
ss(0.3)=0.29552020666134 sin(0.3)=0.29552020666134
ss(0.4)=0.38941834230865 sin(0.4)=0.38941834230865
ss(0.5)=0.4794255386042 sin(0.5)=0.4794255386042
ss(0.6)=0.56464247339504 sin(0.6)=0.56464247339504
ss(0.7)=0.64421768723769 sin(0.7)=0.64421768723769
ss(0.8)=0.71735609089952 sin(0.8)=0.71735609089952
ss(0.9)=0.78332690962748 sin(0.9)=0.78332690962748
ss(1)=0.8414709848079 sin(1)=0.8414709848079
ss(1.1)=0.89120736006144 sin(1.1)=0.89120736006144
ss(1.2)=0.93203908596723 sin(1.2)=0.93203908596723
ss(1.3)=0.96355818541719 sin(1.3)=0.96355818541719
ss(1.4)=0.98544972998846 sin(1.4)=0.98544972998846
ss(1.5)=0.99749498660405 sin(1.5)=0.99749498660405
ss(1.6)=0.9995736030415 sin(1.6)=0.99957360304151
ss(1.7)=0.99166481045247 sin(1.7)=0.99166481045247
ss(1.8)=0.97384763087819 sin(1.8)=0.97384763087819
ss(1.9)=0.94630008768741 sin(1.9)=0.94630008768741

        

Задание к работе:

 

1. Записать расчетные формулы для вычисления слагаемого и суммы.

         2. Составить блок схему алгоритма для вычисления заданной суммы   в указанном диапазоне изменения параметра    с заданным шагом. Для получения шага диапазон изменения    разделить на 10.

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

         4. Отладить программу.

 

Таблица 3.Задание к лабораторной работе 3.

 

N

 

Сумма

Диапазон изме­нения аргумента

n

Функция

1

10

2

40

3

10

 

4

40

5

15

6

25

7

10

 

8

30

9

20

10

10

11

35

12

10

13

20

14

30

15

40

16

10

17

50

18

20

19