|
Nümunə3. f(x)=x3-0,2x2–0,2x–1,2=0 tənliyinin 0,002 dəqiqliklə müsbət köklərinin tapılması məsələsinə baxaq.
Həlli
|
bet | 10/35 | Sana | 06.12.2023 | Hajmi | 2,93 Mb. | | #112648 | Turi | Dərs |
Bog'liq C fakepathKOMPUTER MUHENDISLIYINDE EDEDI USULLAR 01 06 (2) (1)Nümunə3. f(x)=x3-0,2x2–0,2x–1,2=0 tənliyinin 0,002 dəqiqliklə müsbət köklərinin tapılması məsələsinə baxaq.
Həlli. Əvvəlcə kökü ayıraq. İxtiyari olaraq (1;2) intervalına baxaq və uc nöqtələrində funksiyanın qiymətlərini hesablayaq. f(1)=-0,6<0 və f(2)=5,6>0, onda axtarılan xteq həll (1;2) intervalında olacaqdır. Bu interval böyük olduğundan onu iki hissəyə bölək. Belə ki, f(1,5)=1,425, onda 1təq<1,5. Yuxarıdakı (1.5) düsturunu tətbiq etsək, aşağıdakıları alarıq:
f(x1)=-0,173;
f(x2)=-0.036;
f(x3)=-0.0072.
Törəməni tapaq. f'(x)=3x2-0,4x-0,2 və x3f’(x)=>3*1,1982 - 0,4*1,5- 0,2=3*1,43- 0,8=3,49;
0təq-x3<0,0072/3,49=0,002.
Beləliklə, xtəq= 1,198+0,0029=1,2.
İndi isə bu funksiyanın vətərlər üsulu ilə köklərinin tapılması alqoritminin C++ dilində proqram kodunu yazaq.
#include
#include
#include
using namespace std;
double f(double x) { return x*x*x - 0.2*x*x – 0.2*x - 1.2; } //kokleri axtarilan funksiya
int main()
{
double tmp,x0,x1,eps;
int N;
char y='y'; //davam etdirilmə simvolu
while (y=='y' || y=='Y') // eger y ve ya Y daxil edilerse, devr davam edir
{
N=0; //sayğacı sıfırlaşdırırıq,
cout<cin>>eps; //
cout<<"x0=";
cin>>x0; //bashlangic yaxinlashma
cout<<"x1=";
cin>>x1; //ikinci bashlangic yaxinlashma
//iterasiyanin bashlanmasi
while(fabs(x1-x0)>eps) { //eger x[n]-x[n+1]|tmp=x1;
x1=x1-(x1-x0)*f(x1)/(f(x1)-f(x0));
x0=tmp;
N++;
}
cout.setf(ios::scientific); //neticenin xaric edilmesi
cout<cin>>y; //davam uchun y daxil edilmelidir
}
cin.get();
return 0; //
}
0>
|
| |