Результаты решения (AW) задачи в виде таблицы и графика

Z/W 1,5 4,5 7,5 10,5 13,5
0,2 7.27 8.19 10.24 14.53 17.5 10.75 6.3 4.15 2.97 2.25
0,45 7.17 7.65 8.36 8.69 7.78 4.41 3.29 2.53
0,7   6.93 6.62 5.95 4.03 3.2 2.56 2.07 1.7

 

 

 

 

Краткий анализ результата

При увеличении относительного коэффициента затухания (z) и одинаковых значениях частоты (W) амплитуда (A(W)) уменьшается.

 

ЗАДАЧА 3. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ АНАЛИТИЧЕСКИ

ЗАДАННОЙ ФУНКЦИИ.

 

По заданному выражению аналитической функции f(x) вычислить приближенно определенный интеграл от этой функции на заданном интервале [a,b]:

,

используя квадратную формулу парабол (метод Симпсона):

 

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

Функция Интервал Число разбиений
f(x) a b n1 n2

 

Таблица принятых обозначений переменных

i N1 N2 S1 S2 H1 H2 I1 I2
a b Sum1 Sum2    

 

 

Алгоритм решения задачи

1.Для основного выражения используем функцию f.

2.По формуле Симпсона вычисляем 2 интеграла для различных разбиений.

3.Выводим результат на экран.

 

Текст программы

Type

fact = record

a:real;

b:real;

end;//для удобства. В дальнейшем все будет понятно

 

 

vari:integer;

n1,n2:integer;

s1,s2:fact;

h1,h2,i1,i2,a,b:real;

sum1,sum2:real;

 

functionf(x:real):real;

Begin

f:=ln(x+1)/(1+sqr(x));//данная функция

end;

 

Begin

a:=0;

b:=1;

n1:=12;

n2:=24;

h1:=(b-a)/n1;

h2:=(b-a)/n2;//высота каждого сектора при разбиении

fori:=1 to(n1 div2) do //часть формулы Симпсона. В этом цикле мы находим сумму .

Begin

s1.a:=a+(i-1)*2*h1+h1;//

s1.b:=a+(i-1)*2*h1; // {числа от которых найдем результат функции}

sum1:=sum1+(4*f(s1.a)+2*f(s1.b));//собственно сумма

end;

I1:=h1/3*(-f(a)+sum1+f(b)); //интеграл по формуле Симпсона

 

 

fori:=1 to(n2 div2) do

Begin

s2.a:=a+(i-1)*2*h2+h2;

s2.b:=a+(i-1)*2*h2;

sum2:=sum2+(4*f(s2.a)+2*f(s2.b));

end;

I2:=h2/3*(-f(a)+sum2+f(b));//то же самое проделываем с другим разбиением

 

 

writeln('Интегралы при числе разбиений n1 и n2 равных ', n1,' и ',n2,' соответственно');

write('I1 = ',i1:0:6,', I2 = ',i2:0:6);//вывелирезультат.

readln;

end.

 

Результаты решения задачи в виде таблицы

Интегралы при числе разбиений n=10 0.272200
Интегралы при числе разбиений n=20 0.272198
 

 

 

Краткий анализ результата

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

 

 

ЗАДАЧА 4. ЧИСЛЕННОЕ РЕШЕНИЕ НЕЛИНЕЙНЫХ

УРАВНЕНИЙ С ЗАДАННОЙ ТОЧНОСТЬЮ.

По заданному нелинейному уравнению

F(x)=0,

где F(x) – некоторое нелинейное аналитическое выражение, определенное на интервале

[a, b],

вычислить корни этого уравнения с требуемой точностью E методом половинного деления (дихотомии).

 

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

Функция   Интервал Точность
f(x) a b N E
10-5

 

Таблица принятых обозначений переменных

 

i x a b res n lim

 

Алгоритм решения задачи

1.Для удобства объявим функцию, в которой будет храниться заданная функция.

2.С помощью оператора repeat выполняем следующую последовательность действий:

a).Вычисляем середину отрезка;

b). Вычисляем F(x).

с).Если F(x)>0 и F(a)>0 или F(x)<0 и F(a)<0 (т.е. перемена знака функции F(x) не произошла), то задаем a=x (т.е. перемещаем левую границу интервала в середину), уменьшая интервал вдвое и исключая при этом левую половину, на которой либо нет корней, либо есть четное число корней, иначе задаем b=x (исключаем правую половину интервала).

d).Проверяем условие b-a<E.Если оно истинно,считаем,что последнее значение x и будет корнем уравнения с заданной точностью E и выходим из цикла.Если он не выполняется,то возвращаемся в начало цикла (пункт а).) с новыми значениями интервала.

3.Выводим результаты вычислений.

 

Текст программы

unit Unit4;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Math, StdCtrls;

 

type

TForm1 = class(TForm)

Label2: TLabel;

Edit1: TEdit;

Label3: TLabel;

Edit2: TEdit;

Label4: TLabel;

Edit3: TEdit;

Button1: TButton;

Label5: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

E:real;

 

implementation

 

{$R *.dfm}

function f(x:real):real;

begin

f:=x-2+sin(1/x);

end;

 

function f1(x:real):real;

begin

f1:=(f(x+e)-f(x))/e;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var a,b,x:real;

begin

a:=strtofloat(Edit1.text);

b:=strtofloat(Edit2.text);

E:=strtofloat(Edit3.text);

x:=a;

While (abs(x-b)>e) do

begin

x:=b;

b:=x-f(x)/f1(x);

end;

Label5.caption:= 'X= '+floattostr(x);

end;

 

end.



>