Nyuton üsulu: Redaktələr arasındakı fərq

Vikipediya, azad ensiklopediya
Naviqasiyaya keç Axtarışa keç
Silinən məzmun Əlavə edilmiş məzmun
Redaktənin izahı yoxdur
Teq: 2017 viki-mətn redaktoru
k Bot: Replace deprecated <source> tag and "enclose" parameter; kosmetik dəyişmələr
Sətir 1: Sətir 1:
'''Nyuton üsulu''' (həmçinin '''Nyuton-Rafson üsulu''') — [[riyazi analiz]]də [[İsaak Nyuton]] və [[Cozef Rafson]]un adına adlandırılmış, real dəyərə malik funksiyaların köklərinin ardıcıl olaraq daha yaxşı həllini tapmaq üsulu. Bu, kökün tapılması alqoritmlərindən biridir.
'''Nyuton üsulu''' (həmçinin '''Nyuton-Rafson üsulu''') — [[riyazi analiz]]də [[İsaak Nyuton]] və [[Cozef Rafson]]un adına adlandırılmış, real dəyərə malik funksiyaların köklərinin ardıcıl olaraq daha yaxşı həllini tapmaq üsulu. Bu, kökün tapılması alqoritmlərindən biridir.


Nyuton üsulunun bir dəyişənlə tətbiqi aşağıdakı kimidir:
Nyuton üsulunun bir dəyişənlə tətbiqi aşağıdakı kimidir:


Bu üsul {{math|''x''}} dəyişəni olan {{math|''f''}} funksiyası, həmin funksiyanın {{math|''f&thinsp;′''}} törəməsi və {{math|''f''}} funksiyasının kökü kimi ilkin {{math|''x''<sub>0</sub>}} fərziyyəsi ilə başlayır. Əgər bu funksiya formulanın törəməsindəki fərziyyələri qane edirsə və ilkin fərz edilən həll yaxındırsa, o zaman {{math|''x''<sub>1</sub>}} daha yaxşı təxmini həll tapmaq üçün
Bu üsul {{math|''x''}} dəyişəni olan {{math|''f''}} funksiyası, həmin funksiyanın {{math|''f ′''}} törəməsi və {{math|''f''}} funksiyasının kökü kimi ilkin {{math|''x''<sub>0</sub>}} fərziyyəsi ilə başlayır. Əgər bu funksiya formulanın törəməsindəki fərziyyələri qane edirsə və ilkin fərz edilən həll yaxındırsa, o zaman {{math|''x''<sub>1</sub>}} daha yaxşı təxmini həll tapmaq üçün


:<math>x_{1} = x_0 - \frac{f(x_0)}{f'(x_0)} \,.</math>
:<math>x_{1} = x_0 - \frac{f(x_0)}{f'(x_0)} \,.</math>
Sətir 9: Sətir 9:
istifadə edilir.
istifadə edilir.


Həndəsi olaraq, {{math|(''x''<sub>1</sub>, 0)}}, {{math|(''x''<sub>0</sub>, ''f''&thinsp;(''x''<sub>0</sub>))}}-də {{math|''f''}} funksiyasının {{math|''x''}} oxu ilə kəsişməsidir
Həndəsi olaraq, {{math|(''x''<sub>1</sub>, 0)}}, {{math|(''x''<sub>0</sub>, ''f''(''x''<sub>0</sub>))}}-də {{math|''f''}} funksiyasının {{math|''x''}} oxu ilə kəsişməsidir


Bu proses daha dəqiq həll tapılana kimi aşağıdakı kimi davam etdirilir:
Bu proses daha dəqiq həll tapılana kimi aşağıdakı kimi davam etdirilir:


:<math>x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} \,</math>
:<math>x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} \,</math>


== Təsviri ==
== Təsviri ==
İkinci tərtib törəmənin köməyi ilə minimumun axtarılması üsullarına iki tərtibli üsullar deyilir. Bu üsullarda funksiyanın Teylor sırasına ayrılışında kvadratik hissədən istifadə edilir. Nyuton üsulu da məhz ikinci tərtib üsullara, yəni minimallaşdırılan funksiyanın ikinci tərtib törəmələrindən istifadə edilən üsullara aiddir. Bu üsulda da məqsəd funksiyanın Teylor ayrılışının kvadratik hissəsindən istifadə etməkdir. Teylor ayrılışının kvadratik hissəsi funksiyanı bu ayrılışın xətti hissəsinə nisbətən daha dəqiq approksimasiya etdiyindən gözləmək olar ki, ikinci tərtib üsullar birinci tərtib üsullara nisbətən daha sürətlə yığılır. Tətbiqi məsələlərin həlli göstərir ki, Nyuton üsulu çox sürətlə yığılır.
İkinci tərtib törəmənin köməyi ilə minimumun axtarılması üsullarına iki tərtibli üsullar deyilir. Bu üsullarda funksiyanın Teylor sırasına ayrılışında kvadratik hissədən istifadə edilir. Nyuton üsulu da məhz ikinci tərtib üsullara, yəni minimallaşdırılan funksiyanın ikinci tərtib törəmələrindən istifadə edilən üsullara aiddir. Bu üsulda da məqsəd funksiyanın Teylor ayrılışının kvadratik hissəsindən istifadə etməkdir. Teylor ayrılışının kvadratik hissəsi funksiyanı bu ayrılışın xətti hissəsinə nisbətən daha dəqiq approksimasiya etdiyindən gözləmək olar ki, ikinci tərtib üsullar birinci tərtib üsullara nisbətən daha sürətlə yığılır. Tətbiqi məsələlərin həlli göstərir ki, Nyuton üsulu çox sürətlə yığılır.


== Nümunə ==
== Nümunə ==
Ədədin kvadrat kökünün tapılması məsələsinə baxaq. Nyuton üsulu kvadrat kökün tapılması üsullarından biridir.
Ədədin kvadrat kökünün tapılması məsələsinə baxaq. Nyuton üsulu kvadrat kökün tapılması üsullarından biridir.


Məsələn, əgər 612-nin kökünü tapmaq istəyiriksə, o zaman bu məsələ belə yazıla bilər
Məsələn, əgər 612-nin kökünü tapmaq istəyiriksə, o zaman bu məsələ belə yazıla bilər


:<math>x^2 = 612</math>
:<math>x^2 = 612</math>
Sətir 33: Sətir 33:
:<math> f'(x) = 2x. \, </math>
:<math> f'(x) = 2x. \, </math>


İlkin fərziyyə kimi 10 ədədini götürsək, Nyuton üsulu ilə hesablama ardıcıllığı belə olacaq
İlkin fərziyyə kimi 10 ədədini götürsək, Nyuton üsulu ilə hesablama ardıcıllığı belə olacaq


:<math>\begin{matrix}
:<math>\begin{matrix}
Sətir 44: Sətir 44:
</math>
</math>


burada düzgün onluq kəsr ədədlərinin altından xətt çəkilib. Bir neçə təkrarlamadan sonra nəticənin dəqiqliyi də artır.
burada düzgün onluq kəsr ədədlərinin altından xətt çəkilib. Bir neçə təkrarlamadan sonra nəticənin dəqiqliyi də artır.


== Proqramlaşdırılması ==
== Proqramlaşdırılması ==
=== Python ===
=== Python ===
<source lang="python">
<syntaxhighlight lang="python">


''' funksiyanın test edilməsi
''' funksiyanın test edilməsi
Sətir 68: Sətir 68:
return x1
return x1
x0 = x1
x0 = x1
</syntaxhighlight>
</source>


=== PHP ===
=== PHP ===
<source lang="php">
<syntaxhighlight lang="php">
<?php
<?php
// PHP 5.4
// PHP 5.4
Sətir 105: Sətir 105:


}
}
</syntaxhighlight>
</source>


=== Octave ===
=== Octave ===
<source lang="octave">
<syntaxhighlight lang="octave">
function res = nt()
function res = nt()
eps = 1e-7;
eps = 1e-7;
Sətir 133: Sətir 133:
q=-100*x.^3+48*x.^2-72*x+22;
q=-100*x.^3+48*x.^2-72*x+22;
endfunction
endfunction
</syntaxhighlight>
</source>


=== С ===
=== С ===
<source lang="cpp">
<syntaxhighlight lang="cpp">
#include <stdio.h>
#include <stdio.h>
#include <math.h>
#include <math.h>
Sətir 159: Sətir 159:
return 0;
return 0;
}
}
</syntaxhighlight>
</source>


=== C++ ===
=== C++ ===
<source lang="cpp">
<syntaxhighlight lang="cpp">
typedef double (*function)(double x);
typedef double (*function)(double x);


Sətir 184: Sətir 184:
//Funksiyanın çağrılması nümunəsi
//Funksiyanın çağrılması nümunəsi
double x = TangentsMethod(MyFunction, MyDerivative, xn, 0.1)
double x = TangentsMethod(MyFunction, MyDerivative, xn, 0.1)
</syntaxhighlight>
</source>


== İstinadlar ==
== İstinadlar ==
Sətir 191: Sətir 191:
== Xarici keçidlər ==
== Xarici keçidlər ==


*{{MathWorld|title=Newton's Method|urlname=NewtonsMethod}}
* {{MathWorld|title=Newton's Method|urlname=NewtonsMethod}}
*[http://en.citizendium.org/wiki/Newton%27s_method Newton's method, Citizendium.]
* [http://en.citizendium.org/wiki/Newton%27s_method Newton's method, Citizendium.]
*[http://mathfaculty.fullerton.edu/mathews/n2003/newtonacceleratemod.html Mathews, J., The Accelerated and Modified Newton Methods, Course notes.]
* [http://mathfaculty.fullerton.edu/mathews/n2003/newtonacceleratemod.html Mathews, J., The Accelerated and Modified Newton Methods, Course notes.]
*[http://www.ece.mcmaster.ca/~xwu/part2.pdf Wu, X., Roots of Equations, Course notes.]
* [http://www.ece.mcmaster.ca/~xwu/part2.pdf Wu, X., Roots of Equations, Course notes.]


[[Kateqoriya:Riyazi analiz]]
[[Kateqoriya:Riyazi analiz]]

12:03, 19 aprel 2020 tarixindəki versiya

Nyuton üsulu (həmçinin Nyuton-Rafson üsulu) — riyazi analizdə İsaak NyutonCozef Rafsonun adına adlandırılmış, real dəyərə malik funksiyaların köklərinin ardıcıl olaraq daha yaxşı həllini tapmaq üsulu. Bu, kökün tapılması alqoritmlərindən biridir.

Nyuton üsulunun bir dəyişənlə tətbiqi aşağıdakı kimidir:

Bu üsul x dəyişəni olan f funksiyası, həmin funksiyanın f ′ törəməsi və f funksiyasının kökü kimi ilkin x0 fərziyyəsi ilə başlayır. Əgər bu funksiya formulanın törəməsindəki fərziyyələri qane edirsə və ilkin fərz edilən həll yaxındırsa, o zaman x1 daha yaxşı təxmini həll tapmaq üçün

istifadə edilir.

Həndəsi olaraq, (x1, 0), (x0, f (x0))-də f funksiyasının x oxu ilə kəsişməsidir

Bu proses daha dəqiq həll tapılana kimi aşağıdakı kimi davam etdirilir:

Təsviri

İkinci tərtib törəmənin köməyi ilə minimumun axtarılması üsullarına iki tərtibli üsullar deyilir. Bu üsullarda funksiyanın Teylor sırasına ayrılışında kvadratik hissədən istifadə edilir. Nyuton üsulu da məhz ikinci tərtib üsullara, yəni minimallaşdırılan funksiyanın ikinci tərtib törəmələrindən istifadə edilən üsullara aiddir. Bu üsulda da məqsəd funksiyanın Teylor ayrılışının kvadratik hissəsindən istifadə etməkdir. Teylor ayrılışının kvadratik hissəsi funksiyanı bu ayrılışın xətti hissəsinə nisbətən daha dəqiq approksimasiya etdiyindən gözləmək olar ki, ikinci tərtib üsullar birinci tərtib üsullara nisbətən daha sürətlə yığılır. Tətbiqi məsələlərin həlli göstərir ki, Nyuton üsulu çox sürətlə yığılır.

Nümunə

Ədədin kvadrat kökünün tapılması məsələsinə baxaq. Nyuton üsulu kvadrat kökün tapılması üsullarından biridir.

Məsələn, əgər 612-nin kökünü tapmaq istəyiriksə, o zaman bu məsələ belə yazıla bilər

Nyuton üsulu ilə funksiyanın yazılışı belədir

və onun törəməsi

İlkin fərziyyə kimi 10 ədədini götürsək, Nyuton üsulu ilə hesablama ardıcıllığı belə olacaq

burada düzgün onluq kəsr ədədlərinin altından xətt çəkilib. Bir neçə təkrarlamadan sonra nəticənin dəqiqliyi də artır.

Proqramlaşdırılması

Python

''' funksiyanın test edilməsi

def f(x):
    return x**2 - 17

def f1(x):
    return 2*x

'''

def newtons_method(x0, f, f1, e):
    #f1 - törəmə
    x0 = float(x0)
    while True:
        x1 = x0 - (f(x0) / f1(x0))
        if abs(x1 - x0) < e:
            return x1
        x0 = x1

PHP

<?php
// PHP 5.4
function newtons_method(
	$a = -1, $b = 1, 
	$f = function($x) {
	
		return pow($x, 4) - 1;
	
	},
	$derivative_f = function($x) {

		return 4 * pow($x, 3);
	
	}, $eps = 1E-3) {

        $xa = $a;
        $xb = $b;

        $iteration = 0;

        while (abs($xb) > $eps) {

            $p1 = $f($xa);
            $q1 = $derivative_f($xa);
            $xa -= $p1 / $q1;
            $xb = $p1;
            ++$iteration;

        }

        return $xa;

}

Octave

function res = nt()
eps = 1e-7;
x0_1 = [-0.5,0.5];
max_iter = 500;
xopt = new(@resh, eps, max_iter);   
xopt
endfunction
function a = new(f, eps, max_iter)
x=-1;
p0=1;
i=0;
 while (abs(p0)>=eps)
[p1,q1]=f(x);
 x=x-p1/q1;
p0=p1;
 i=i+1;
 end
 i
 a=x;
endfunction
function[p,q]= resh(x)   % p= -5*x.^5+4*x.^4-12*x.^3+11*x.^2-2*x+1;
   p=-25*x.^4+16*x.^3-36*x.^2+22*x-2;
   q=-100*x.^3+48*x.^2-72*x+22;
endfunction

С

#include <stdio.h>
#include <math.h>

#define eps 0.000001
double fx(double x) { return x*x-17;} // hesablanan funksiya
double dfx(double x) { return 2*x;} // törəmə funksiya

typedef double(*function)(double x); // tapşırıq tipi function

double solve(function fx, function dfx, double x0) {
  double x1  = x0 - fx(x0)/dfx(x0); // birinci approksimasiya
  while (fabs(x1-x0)>eps) { // 0.000001 dəqiqliyinə çatana kimi
    x0 = x1;
    x1 = x1 - fx(x1)/dfx(x1); // növbəti approksimasiya
  }
  return x1;
}

int main () {
  printf("%f\n",solve(fx,dfx,4)); // ekrana verilməsi
  return 0;
}

C++

typedef double (*function)(double x);

double TangentsMethod(function f, function df, double xn, double eps) {
   double x1  = xn - f(xn)/df(xn);
   double x0 = xn;
   while(abs(x0-x1) > eps) {
      x0 = x1;
      x1 = x1 - f(x1)/df(x1);
   }
   return x1;
}

//İlkin appoksimasiya seçimi
xn = MyFunction(A)*My2Derivative(A) > 0 ? B : A;

double MyFunction(double x) { return (pow(x, 5) - x - 0.2); } //Sizin funksiya
double MyDerivative(double x) { return (5*pow(x, 4) - 1); } //Birinci dərəcəli törəmə
double My2Derivative(double x) { return (20*pow(x, 3)); } //İkinci dərəcəli törəmə

//Funksiyanın çağrılması nümunəsi
double x = TangentsMethod(MyFunction, MyDerivative, xn, 0.1)

İstinadlar

Xarici keçidlər