Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Результаты решения (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;//для удобства. В дальнейшем все будет понятно

 

 

var i:integer;

n1,n2:integer;

s1,s2:fact;

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

sum1,sum2:real;

 

function f(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;//высота каждого сектора при разбиении

for i:=1 to (n1 div 2) 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)); //интеграл по формуле Симпсона

 

 

for i:=1 to (n2 div 2) 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.





Поделиться с друзьями:


Дата добавления: 2016-12-29; Мы поможем в написании ваших работ!; просмотров: 310 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Настоящая ответственность бывает только личной. © Фазиль Искандер
==> читать все изречения...

2374 - | 2099 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.