Transendend tenglamalar


Akkordlar va tangenslar usuli


Download 0.58 Mb.
bet7/7
Sana28.01.2023
Hajmi0.58 Mb.
#1135171
1   2   3   4   5   6   7
Bog'liq
Transendend tenglamalar

Akkordlar va tangenslar usuli
Faqat f'(X) va f''(X) [a,b] oralig'ida ishorani o'zgartirmaganda qo'llaniladi, ya'ni. [a,b] oraliqdagi f(X) funksiya monoton va burilish nuqtalariga ega emas.
Usulning mohiyati bir xil - ildizni o'z ichiga olgan ichki segmentlar ketma-ketligini qurish, ammo segmentlar boshqacha tarzda qurilgan. Har bir qadamda keyingi segmentdagi f (X) funksiya grafigining yoyi uchlari orqali akkord o‘tkaziladi va bir uchidan tangens o‘tkaziladi. Bu chiziqlarning x o'qi bilan kesishish nuqtalari keyingi segmentni tashkil qiladi. Xuddi shu shart bajarilganda qurilish jarayoni tugatiladi:
(| b - a | < 2ε). (19)
Segmentlar ichki joylashishi uchun [a,b] segmentida OX o'qini kesib o'tuvchi uchidan o'sha tangensni chizish kerak. To'rtta mumkin bo'lgan holatlarni ko'rib chiqqandan so'ng, tangensni funktsiya belgisi ikkinchi hosilaning belgisi bilan mos keladigan oxiridan chizish kerakligini tushunish oson.
Bundan tashqari, tangens har doim o'ng tomondan yoki har doim chap tomondan chizilganligini ko'rish oson. Aniqlik uchun biz bu oxirni b deb faraz qilamiz
Usulda ishlatiladigan formulalar analitik geometriyadan yaxshi ma'lum:
(a,f(a)) va (b,f(b)) nuqtalardan o‘tuvchi akkord tenglamasi:
y = f(a)+(x-a)*(f(b)-f(a))/(b-a),
x o'qi bilan kesishish nuqtasi qaerdan:
x= a - f(a) *(b-a)/(f(b)-f(a)).

(b,f(b)) nuqtadan o'tuvchi tangens tenglamasi: y=f(b)+f'(b)(x-b), Ox o'qi bilan kesishish nuqtasi qaerdan:


x= b - f(b)/f'(b).
Algoritmni kompilyatsiya qilishda segment uchlari uchun faqat ikkita a va b o'zgaruvchilardan foydalanish va yozish yana tabiiydir.
a= a - f (a) *(b-a)/ (f (b)-f (a)) (20)
b= b - f(b)/f'(b) (21)
Biroq, bu holda (20) va (21) formulalar tartibi muhim ahamiyatga ega.
Misol. Tenglamaning 0;1 ildizini aniqlashtirish uchun birlashgan usuldan foydalanish kerak: x 3 - 3 *x +1 = 0, aniqligi 10 -3.
,
.

Jadval 6
n x n f(x n)











































0

0

1

1

-0,5

-3

-0,3333




1




-1










1

0,3333

0,1667

0,0371

-0,0150

-2,6667

-0,0139




0,5




-0,3750










2

0,3472

0,0011

0,0003

-0,0001

-2,6384

-0,0001




0,3483




0,0027










3

0,3473

0
















0,3473















 <  .   0,347



8. Листинг – Текст программы


unit Unit1;


interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x,e,y,d:real; n:integer;
begin
x:=1.2; e:=0.0001; n:=0;
if abs(1/sqr(x)*cos(1/x))>=1 then
begin
x:=999;
edit1.text:=floattostr(x);
edit3.text:='Процесс расходится';
end
else
repeat
y:=2.5-sqrt(x)-exp(ln(x)/3);
d:=abs(y-x);
x:=y;
n:=n+1;
until d<=e;
edit1.text:=floattostr(n);
edit2.Text:=floattostr(x);
label1.caption:='Метод итераций';
edit3.text:='Процесс сходится';
end;
procedure TForm1.Button2Click(Sender: TObject);
var x,e,y,d,m1,m2,a,b:real; n:integer;
begin
x:=1.2; e:=0.0001; n:=0; a:=0.4; b:=1;
m1:=abs(1+0.5*exp(ln(b)*(-0.5))+exp(ln(b)*(-2/3))/3);
m2:=abs(-(9*exp(ln(a)*(-1.5))+8*exp(ln(a)*(-5/3)))/36);
if 2*m1/m2<=0.01 then
begin
x:=999;
edit1.text:=floattostr(x);
edit3.text:='Процесс расходится';
end
else
repeat
y:=x-(x+sqrt(x)+exp(ln(x)/3)-2.5)/(1+0.5*exp(ln(x)*(-0.5))+exp(ln(x)*(-2/3))/3);
d:=abs(y-x);
x:=y; n:=n+1;
until d<=e;
edit1.text:=floattostr(n);
edit2.Text:=floattostr(x);
edit3.text:='Процесс сходится';
end;
procedure TForm1.Button3Click(Sender: TObject);
var x,e,y,a,b,ya:real; n:integer;
begin
n:=0; a:=0.4; b:=1; e:=0.0001;
ya:=a+sqrt(a)+exp(ln(a)/3)-2.5;
repeat
x:=(a+b)/2;
y:=x+sqrt(x)+1/sqr(x)*cos(1/x);
if exp(x)-exp(-x)-2<>0 then
if y*ya<0 then begin b:=x; n:=n+1; end
else begin a:=x; ya:=y; n:=n+1; end;
until (b-a)<=e;
edit1.text:=floattostr(n);
edit2.Text:=floattostr(x);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
edit1.Clear;
edit2.clear;
edit3.clear;
end;
end.



9. Листинг – Результаты работы программы





Рисунок 1 – Метод Ньютона



Рисунок 2 – Метод итераций

Рисунок 3 – Метод половинного деления





Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling