|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Решение математических задач с помощью алгоритмического языка Turbo Pascal, Microsoft Excel, пакета MathCAD и разработка программ в среде DelphiРешение математических задач с помощью алгоритмического языка Turbo Pascal, Microsoft Excel, пакета MathCAD и разработка программ в среде Delphi2 Московский Гуманитарный Техникум Экономики и Права Курсовая работа по курсу: Информатика, вычислительная техника и программирование на ПЭВМ Решение математических задач с помощью алгоритмического языка Turbo Pascal, Microsoft Excel, пакета MathCAD и разработка программ в среде Delphi" Москва 2008 Содержание
Задание 1. Решение уравнения в табличном редакторе Microsoft Excel Табличный редактор Microsoft Excel представляет собой электронную таблицу разбитую на ячейки. В ячейки одного из столбцов вводятся значения переменной В ячейки другого столбца, строка которого соответствует номеру первой ячейки столбца переменных, ставят "=" и вводят формулу. Затем нажимают Enter и табличный редактор выполняет поставленную задачу. Решение уравнения с помощью MathCAD. Данная задача в MathCAD будет выполнятся с использованием ранжированной переменной. В среде пакета MathCAD для выполнения итеративных вычислений предусмотрен аппарат ранжированных переменных. Ранжированная переменная-это переменная, которой приписан диапазон изменения значений. Пример ранжированной переменной: x: =a,b. c, где x - переменная, a,b,c - значения, которые принимает переменная, т.е. a-первое значение, b-второе значение, т.е. (b-a) - шаг изменения переменной, и c-последнее значение. Функция представлена в виде ранжированного выражения, т.е. выражения в котором присутствуют p-переменные. Решение уравнения в Turbo Pascal Арифметические выражения строятся из констант, переменных, функций и операций над ними. Правила использования выражений: 1. Выражение записывается в одну строку. 2. Используются только круглые скобки, число открывающихся скобок должно соответствовать числу закрывающихся скобок. 3. Нельзя записывать подряд два знака арифметических операций. Структура программы в Turbo Paskal Program <имя программы> ; ] 1 uses <описание модулей>; lable <метки>; const <объявление констант>; type <объявление типов данных>; 2 var < объявление переменных>; < описание процедур и функций>; begin операторы 3 end. Заголовок программы: служебное слово program и имя; Раздел описаний: описываются все идентификаторы объектов, используемые в данной программе. Описать идентификатор - значит указать его имя и тип. Раздел операторов: указывается последовательность действий, которые необходимо. Повторение (циклический алгоритм) - это алгоритм, в котором предусмотрено неоднократное выполнение одной и той же последовательности действий. Последовательность действий, выполняемая в цикле, называется телом цикла. Переменная, которая хранит число повторений цикла, называется параметром (счетчиком) цикла. Цикл позволяет многократно выполнять отдельный оператор или последовательность операторов. Различают следующие циклы: с параметром, с предусловием, с пост условием. Цикл с предусловием и пост условием, как правило, используется для организации приближенных вычислений, задач поиска и обработки данных, вводимых с клавиатуры или файла.
Цикл с параметром используется, если известно число повторений и реализуется с помощью оператора FOR общий вид которого следующий: FOR параметр цикла: = начальное значение TO (DOWNTO) конечное значение DO BEGIN Оператор1 Оператор2 END: Параметр должен быть переменной целого типа. Если используется слово TO, счетчик увеличивается на единицу, если используется слово BOWNTO, то счетчик уменьшается на единицу. Задание1 (а) Решение циклических программXn=2; Xk=10; h=1.В Microsoft Excel:Во втором столбце формула имеет выд: = (SIN (A2) +5) ^2/СТЕПЕНЬ (A2+3^ (A2); 1/2);
В Mathcad: В Turbo Paskal: program z1; uses crt; var Xn,Xk,X,Y,H,Z: REAL; begin clrscr; write ('Vvedite Xn,Xk,H='); readln (Xn,Xk,H); X: =Xn; repeat z: =x+exp (x*ln (3)); if z<=0 then writeln ('NO') else Y: =sqr (sin (x) +5) /Sqrt (z); writeln ('X=',X: 6: 1,' Y=',Y: 8: 3); X: =X+H; until X>=Xk+H/2; readkey; end. Блок-схема к заданию: Результаты вычислений: Задание 1 (б) Решение программы вычисления функции с условиемРешение уравнения в табличном редакторе Microsoft ExcelДля реализации задачи необходимо использовать логическую функцию ЕСЛИ, которая возвращает одно значение, если заданное условие при вычислении дает значение ИСТИНА Реализация задачи вычисления функции с условиями, и другое значение, если ЛОЖЬ. Общий вид функции такой:ЕСЛИ (лог_выражение; значение_если_ложь)Лог выражения-это любое значение или выражение, которое при вычислении дает значение ИСТИНА или ЛОЖЬ.Значение_если_истина-это значение, которое возвращается, если лог_выражение имеет значение ИСТИНА. Если лог_значение имеет значение ИСТИНА и значение_если_истина опущено, то возвращается значение ИСТИНА. Значение_если_истина может быть другой формулой.Значение_если_ложь-это значение, которое возвращается, если лог_выражение имеет значение ЛОЖЬ. Если лог_выражение имеет значение ЛОЖЬ и значение_если_ложь опущено, то возвращается значение ЛОЖЬ. Значение_если_ложь может быть другой формулой.В Microsoft Excel:Во втором столбце формула имеет вид: =ЕСЛИ (A2=0; "NO"; ЕСЛИ (A2<0; SIN (A2) / (1-2^SIN (A2)); ЕСЛИ (И (A2>0; A2<1); 2*A2/ (1-A2); ЕСЛИ (A2>1; A2^2-LN (A2); "нет решения")))) Рисунок.
В Mathcad: В Turbo Pascal: program z2; uses crt; label 20; var x,y,Xn,Xk,h: real; begin clrscr; writeln ('Please ENTER Xn,Xk,h='); readln (Xn,Xk,h); x: =Xn; while x<=Xk+h/2 do begin if x<0 then begin y: =1-exp (sin (x) *ln (2)); if y=0 then writeln ('NET KORNEY') else y: =sin (x) /y; end else if (x>0) and (x<1) then y: = (2*x) / (1-x) else if x>1 then y: =x*x-ln (x) else begin writeln ('NO answer'); goto 20; end; writeln ('x=',x: 3: 1,' y=',y: 6: 3); 20: x: =x+h; end; readkey; end. Результаты вычислений: Блок-схема к заданию: Задание 1 (в) вычисление массиваРешение уравнения в Turbo PascalМассив (матрица, таблица, вектор) - это структура данных, представляющая собой совокупность элементов одного типа.Массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной.1) Массив можно определить как одномерную (последовательную) совокупность элементов некоторого типа, которые адресуется с помощью индекса.2) Массив должен быть объявлен в разделе описания переменных:VAR ИмяМассива: ARRAY (НачИндекс. КонечныйИндекс) OF ТипДанных.3) Доступ к элементу массива осуществляется путем указания индекса (номера), в качестве которого нужно использовать переменную целого типа. Massiv (2): =5;А: =massiv (4);4) Для ввода, вывода и обработки массивов удобно использовать операторы циклов. Задание элементов массива случайным образом.Необходимо массив yi из случайных чисел, входящих в определенный интервал. Для этого нужно использовать функцию Random (x), которая возвращает случайное число от 0 до X, если функция используется без параметра, то будут генерировать числа от 0 до 1.Перед использованием данной функции необходимо применить оператор Randomize, который обеспечивает несовпадение последовательности случайных чисел, генерируемых функцией.В Microsoft Excel:Во втором столбце формула имеет вид: =СТЕПЕНЬ (EXP (1) ^ (3*A2) - TAN (A2) ^3; 1/5) /КОРЕНЬ ( (A2) ^2+SIN (A2) ^2)Рисунок.
В Mathcad: В Turbo Pascal: program zadanie3; uses crt; const n=4; var x,y: array [1. n] of real; i: integer; z,j,d: real; begin clrscr; for i: =1 to n do begin write ('Enter x [i] ='); readln (x [i]); end; for i: =1 to n do begin j: =exp (3*x [i]) - exp (3*ln (sin (x [i]) /cos (x [i]))); z: =exp (1/5*ln (abs (j))) * (abs (j) /j); d: =sqrt (sqr (x [i]) +sqr (sin (x [i]))); y [i]: =z/d; writeln ('x [i] =',x [i]: 5: 1,' y [i] =',y [i]: 5: 3); end; readkey; end. Блок-схема алгоритма решения задания №1.3 Нахождение функции заданном массиве: Результаты вычислений: Задание 1 (г) вычисление суммы в Microsoft ExcelВ третьем столбце формула имеет вид: = (A2^ (-A2*SIN (A2)) - LN (2*A2+5)) / (КОРЕНЬ (2+SIN (2*A2)) +A2^2)В четвертом столбце формула имеет вид: =СУММ (C2*B2+C3*B3+C4*B4+C5*B5)
В Mathcad: В Turbo Pascal: Program Summa; uses crt; const n=4; Var x,z,d,Xn,h,F,S: Real; i: Integer; a: array [1. n] of Real; BEGIN clrscr; randomize; Write ('enter please Xn,h='); ReadLN (Xn,h); for i: =1 to n Do begin Write ('enter please a [i] ='); ReadLN (a [i]); end; x: =Xn; S: =0; for i: =1 to n Do begin z: =exp ( (-x*sin (x)) *ln (x)) - ln (2*x+5); d: =sqrt (2+sin (2*x)) +sqr (x); F: =z/d; S: =S+F*a [i] ; x: =x+h; end; WriteLN ('S=',S: 10: 3); readkey END. Результаты вычислений: Блок-схема алгоритма решения задания №1.4 Нахождение функции, если дан x, h, n, задан массив: Задание 2. Интегрирование функцииВычислить определённый интегралТак как определённый интеграл является площадью фигуры, ограниченной некоторой функцией y=f (x), то целью задачи является нахождение площади этой фигуры. Для этого необходимо данную фигуру разбить на более простые, площадь которых находится по простым формулам, а затем сложить полученные площади в одну для нахождения необходимой, т.е. для вычисления данного определённого интеграла.Существуют различные методы нахождения определённого интеграла.Рассмотрим некоторые из них:метод средних прямоугольников;метод трапеций;метод Симпсона (парабол);с автоматическим выбором шага;1. Метод прямоугольниковДля вычисления приближённого значения определённого интеграла отрезок [a, b] делят на n равных частей точкамиa=x0<x1<x2<…<xn=bтак, что xi+1-xi= (b-a) /n (I=0,1,2,…,n-1). Тогда длина каждого частичного отрезка определяется как h= (b-a) /n, а точки разбиения x0=a, x1=x0+h, x2=x1+h,…, xn=xn-1+h. Эти точки называются узлами, а h-шагом интегрирования. В узлах вычисляются ординаты y0, y1,…, yn, т.е. yi=f (xi). На частичных отрезках [xi; xi+1] строятся прямоугольники, высота которых равна значению f (x) в какой-либо точке каждого частичного отрезка. Произведение f (xi) *h определяет площадь частичного прямоугольника, а сумма таких произведений - площадь ступенчатой фигуры, представляющей собой приближённое значение интеграла.Если f (xi) вычисляется в левых концах отрезков [xi; xi+1], то получается формула левых прямоугольников: Iл= (y0+y1+…+yn-1) = .Если f (xi) вычисляется в правых концах отрезков [xi; xi+1], то получится формула правых прямоугольников:Iп= (y1+y2+…+yn) = .Если функция f вычисляется в точках xi+h/2 [xi;; xi+1], то получается формула средних прямоугольников:2. Метод трапецииМетод трапеций аналогичен методу прямоугольников, с той лишь разницей, что на каждом частичном отрезке строится трапеция.Приближенное значение интеграла равно сумме всех площадей частичных трапеций:I=3. Метод симпсонаЕсли на частичном отрезке длиной 2h функции заменяется дугой параболы, то можно получить формулу парабол или обобщенную формулу Симпсона: = (h/3) * (y0+y2n+, где1 при i - нечетном;Ci =1 при i - чётном;4. С автоматическим выбором шагаТочность вычисления определенного интеграла зависит от величины шага интегрирования. Ошибка в выборе величины шага интегрирования либо не обеспечит нужной точности, либо приведет к необоснованным затратам машинного времени.Заданную точность при рациональных затратах времени на вычисления обеспечивают алгоритмы интегрирования с автоматическим выбором шага. Идея метода автоматического выбора шага интегрирования для достижения заданной точности заключается в следующем:а) выбирается начальное n и вычисляется шаг h= (b-a) /n;б) рассчитывается значение интеграла I1 для этого шага h;в) шаг h уменьшается в два раза, т.е. h=h/2 и вычисляется значение интеграла I2;г) оценивается погрешность между двумя значениями r=I1-I2; если погрешность r меньше или равна заданной точности, т.е. r<=, то точность достигнута и значение интеграла I=I2; если r>, то точность не достигнута и величине I1 присваивается более точное значение I2;д) теперь повторяются этапы в) и г) до выполнения условия r<=.Вычисление определенного интеграла с помощью пакета MathCAD в нормальном и символьном виде.Для решения интеграла численно и в символьном виде необходимо задать функцию f (x) и найти от неё интеграл на промежутке [a, b].Для вычисления численного значения заданного интеграла:С помощью встроенных функций задаём определённый интеграл;После нажатия клавиши "=", MathCAD выдаёт значение интеграла на заданном промежутке.В Mathcad:При решении интеграла в символьном виде:С помощью встроенных функций задаём интеграл;Вызов в меню "Математика" подменю "Булен" и нажатие "" или Control+. приводит к вычислению интеграла в символьном виде.В Mathcad:В Turbo Pascal:Текст программы вычисленияопределенного интеграла методомсредних прямоугольников на TPprogram Sredniipriamougolniki;uses crt;var a,b,h,s,y,x: real;i,n: integer;begin clrscr;write ('Vvedite a,b,n=');readln (a,b,n);h: = (b-a) /n;x: =a+h/2;s: =0;for i: =1 to n dobegins: =s+1/sqr (3*sin (x) +2*cos (x));x: =x+h;end;y: =h*s;writeln ('n=',n,' y=',y: 10: 3);readkey;end.Результаты работы программы:a=0 b=1 n=1000 y=0.117Блок-схема алгоритма решения задания №2.1Вычисление определенного интеграла методом средних прямоугольников:Текст программы вычисленияопределенного интеграла методомтрапецииprogram integral 2;uses crt;var a,b,h,S,S1,x,y: real;i,n: integer;function f (c: real): real;beginf: =1/sqr (3*sin (x) +2*cos (x));end;begin clrscr;write ('a,b,n=');readln (a,b,n);h: = (b-a) /n;x: =a;s: =0;for i: =1 to n-1 dobeginx: =x+h;s: =s+f (x);end;S1: = f (a) +f (b);y: = (h/2) * (S1+2*s);writeln ('n=',n, ' y=',y: 8: 3);readkey;end.Результаты работы программыa=0 b=1 n=1000 y=0.117Блок-схема алгоритма решения задания № 2.2Вычисление определенного интеграла методом трапеции:Текст программы вычисленияопределенного интеграламетодом Симпсонаprogram simpson;uses crt;var a,b,h,x,y,s,s1: real;i,n,c,m: integer;function f (x: real): real;beginf: =1/sqr (3*sin (x) +2*cos (x));end;begin clrscr;write ('a,b,n=');readln (a,b,n);h: = (b-a) / (2*n);x: =a;s: =0;c: =1;m: =2*n-1;for i: =1 to m dobeginx: =x+h;s: =s+ (3+c) *f (x);c: =-c;end;s1: =f (a) +f (b);y: = (h/3) * (s1+s);writeln ('y=',y: 10: 3,' n=',n);readkey;end.Результаты работы программыa=0 b=1 n=1000 y=0.117Блок-схема алгоритма решения задания №2.3Вычисление определенного интеграла методом Симпсона:Текст программы вычисленияопределенного интеграла савтоматическим выбором шагаprogram avtomaticheskiyshag;uses crt;var e,a,b,s,h,sn,sn1: real;i,n: integer;function f (x: real): real;var y: real;beginf: =1/sqr (3*sin (x) +2*cos (x));end;beginclrscr;write ('a='); read (a);write ('b='); read (b);write ('e='); read (e);sn: =0;sn1: =0;n: =100;repeatn: =n*2;h: = (b-a) /n;s: =0;sn: =sn1;s: =s+f (a) +f (b);for i: =1 to (n-1) dos: =s+2*f (a+i*h);s: = (h/2) *s;sn1: =s;until abs (sn-s) <e;writeln ('s=',s: 8: 3);readkey;end.Результаты работы программыa=0 b=1 n=1000 s=0.117Задание 3. Решение системы линейных уравненийРешение уравнения с помощью MathCADДанная задача в MathCAD будет выполнятся с использованием ранжированной переменной. В среде пакета MathCAD для выполнения итеративных вычислений предусмотрен аппарат ранжированных переменных.Ранжированная переменная-это переменная, которой приписан диапазон изменения значений.Пример ранжированной переменной:x: =a,b. c,где x - переменная, a,b,c - значения, которые принимает переменная, т.е. a-первое значение, b-второе значение, т.е. (b-a) - шаг изменения переменной, и c-последнее значение. .Рассмотрим решение системы линейных уравнений матричным методом:a11X1+a12X2+a13X3=b1,a21X1+a22X2+a23X3=b2,a31X1+a32X2+a33X3=b3.Решение этим методом заключается в решении матричного уравнения вида: R=M-1*V.Для этого необходимо:сформировать матрицу коэффициентов системы линейных уравненийсформировать вектор-столбец коэффициентов свободных членов системы линейных уравнений V:b1V: = b2b3найти искомые параметры с помощью матричного уравнения: R=M-1*V.получим:X1R = X2X3Рассмотрим решение системы линейных уравнений с помощью решающего блока Given - Find.Для решения системы уравнений этим способом используется специальная конструкция, называемая решающим блоком. Блок состоит из заголовка (Given), его тела (определённой системы уравнений) конца блока (Find). Find включает в себя перечень переменных блока, относительно которых должна быть решена система уравнений.Для решения этим методом введём начальные приближённые значения искомых значений:X1: =0X2: =0X3: =0опишем блок решения:Givenx11X1+x12X2+x13X3=b1,x21X1+x22X2+x23X3=b2,x31X1+x32X2+x33X3=b3.опишем ведущие переменные:r: =find (X1, X2, X3)найдём искомые параметры:X1r = X2X3Пример вычисления:1) решение системы линейных уравнений матричным методом:2) решение системы линейных уравнений с помощью решающего блока Given - Find., , Задание 4. Решение нелинейного уравненияЗадача нахождения корней нелинейных уравнений вида F (x) =0 встречается в различных областях научных исследований. Нелинейные уравнения можно разделить на два класса - алгебраические и трансцендентные. Алгебраическими уравнениями называются уравнения, содержащие только алгебраические функции. Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и др.) называются трансцендентными.По условию задачи уравнение cosx-x+4=0 является трансцендентным. Поэтому для нахождения корней будем использовать приближённые методы вычисления (метод касательных и метод половинного деления).Существуют различные итерационные методы решения трансцендентных уравнений. Наиболее известные: метод касательных, метод половинного деления, метод хорд, комбинированный метод хорд и касательных, метод итераций и т.д.Метод половинного деления отрезка пополам является одним из простейших методов нахождения корней нелинейных уравнений. Метод довольно медленный, однако он всегда сходится, т.е. при использовании решение получается всегда, причём с заданной точностью. Требуемое обычно большее число итераций по сравнению с некоторыми другими методами не является препятствием к применению этого метода, если каждое значение функции несложно.Метод касательных или метод Ньютона. В этом методе каждой итерации объём вычислений больший, чем в ранее рассмотренном методе половинного деления, поскольку приходится находить не только значение функции F (x), но и значения её производных. Однако скорость сходимости здесь значительно выше, чем в предыдущем методе.Решение нелинейного уравнения в среде пакета MathCADПо условию задачи данное нелинейное уравнение является трансцендентным. Для нахождения корней этого уравнения воспользуемся функцией root.Решение трансцендентных уравнений методом касательныхprogram kasatelnie;uses crt;label 20;var a,b,E,U,D,x: real;function f (x: real): real;beginf: =u*u*u-7*u-7;end;function f1 (x: real): real;beginf1: =3*x*x-10;end;function f2 (x: real): real;beginf2: =6*x;end;beginwriteln ('a,b,E=');read (a,b,E);if f (a) *f2 (a) >0 thenu: =a else u: =b;20: D: =f (u) /f1 (u);u: =u-d;if ABS (d) >E then goto 20;writeln ('u=',u: 7: 3);readkey;end.Результаты работы программыa=2 b=4 e=0.01 x=3.000Блок-схема алгоритма решения задания №4.2Метод касательных:Решение трансцендентных уравнений методом деления отрезка пополамProgram polovinoedelenie;uses crt;label 20,30,40;var a,b,E,V,W,X,Z: real;function f (x: real): real;beginf: =x*x*x-7*x-7;end;beginwriteln ('a,b,E=');read (a,b,E);V: =f (a);W: =f (b);20: x: = (a+b) /2;z: =f (x);if z=0 then goto 30;if V*Z>=0 thenbegina: =x;v: =z;end;beginb: =x;W: =z;end;40: if (b-a) >E then goto 20;x: = (a+b) /2;30: writeln ('x=',x: 6: 3);readkey;end.Результаты работы программыa=2 b=4 e=0.01 u=3.049Блок-схема алгоритма решения задания №4.1Метод деления отрезка пополам:Задание 5. Организация нахождения минимума и максимума элемента в массиве случайных чисел в среде пакета MathCADОрганизовать нахождение MIN и MAX элемента в массиве случайных чисел К. Генерацию элементов массива осуществить с помощью встроенной функции RND (N); вычисления провести с помощью встроенных функций MIN (К) и MAX (К)В Mathcad:Необходимое нахождение значений в среде MathCAD можно провести с помощью встроенных функций.Для решения этой задачи нужно: задать промежуток, в котором будут генерироваться случайные числа; воспользоваться функцией rnd; после того, как будут выбраны случайные числа, воспользуемся функцией нахождения минимального и максимального значений: min (x) и max (x).Задание 6Определить среднее арифметическое, среднее квадратическое отклонение рядов Ni и Ki, дисперсию и коэффициент корреляции. Ввод Ni и Ki -в виде векторов из 10 элементов, каждый из внешних файлов данных, подготовленных вручную или с помощью любой программы, позволяющей создавать файлы в формате ASCIT. Вычисление - с помощью встроенных функций: mean (N), mean (K), var (N), var (K),stdev (K), stdev (K), corr (N,K). |
РЕКЛАМА
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |