Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 15

Họ và tên Ông Văn Quang Trí

Lớp 22nh10

Mssv 102220088

Bài 1: tìm nghiệm âm, nghiệm dương của phương trình sử dụng các định lý

a)

b)

c)

giải

a)

là hệ số âm đầu tiên => m=4;

 ;

Cận trên của nghiệm là

tương tự theo f1 => n1 không tồn tại ( <0)

=> =

=> không tồn tại (a0 <0)

Vậy mọi nghiệm dương x < =2;

Mọi nghiệm âm x> = ;

Câu b:
là hệ số âm đầu tiên => m=6;

 ;

Cận trên của nghiệm là

tương tự theo f1 => n1 không tồn tại ( <0)

=>

=> không tồn tại (a0 <0)

Vậy mọi nghiệm dương x <

Mọi nghiệm âm x>

Câu c)

là hệ số âm đầu tiên => m=4;

 ;

Cận trên của nghiệm là


tương tự theo f1 => n1 không tồn tại ( <0)

=>

=> không tồn tại (a0 <0)

Vậy mọi nghiệm dương x <

Mọi nghiệm âm x>

Bài 2)

Phương pháp chia đôi

a)

*đối với khoảng cách ly nghiệm(-3 ;2) :

Ap dụng phương pháp chia đôi :

n a b

1 0 1 -5,234375
2 0,5 -3,811279
3 0.75 -1,2098
4 0.875 0,98203
5 0.9375 -0,20504
6 0.90625 0,36447
7 0.92188 0,07384
8 0.914065 -0,06695
9 0.91016
10 0.911136 0.9121125

Kết luận : nghiệm của phương trình là


Sai số

* Đối với khoảng cách ly nghiệm

Áp dụng phương pháp chia đôi, với

1 -2 -1 -1.5 -632.7304688
2 -2 -1.5 -1.75 -500.6923065
3 -2 -1.75 -1.875 -313.7472913
4 -2 -1.875 -1.9375 -168.1774991
5 -2 -1.9375 -1.96875 -78.56034549
6 -2 -1.96875 -1.984375 -28.98490969
7 -2 -1.984375 -1.9921875 -2.92989633
8 -2 -1.9921875 -1.99609375 10.42425853
9 -1.99609375 -1.9921875 -1.994140625 3.719663056
10 -1.994140625 -1.9921875 -1.993164063 0.3880279863
11 -1.993164063 -1.9921875 -1.992675781 -1.272647344
12 -1.993164063 -1.992675781 -1.992919922 -0.4427378977

Vì nên nghiệm của phương trình là .

b)

n a b

1 1,5 2
155,8311
2 1,75 -140,8365
3 1,625 -8,9157
4 1.6875 68,9423
5 1,71875 +29,001
6 1,70315 +9,77969
7 1,695325 +0,367
8 1,6914125 -4,2910
9 1,689456 -1,96663
10 1,690434 -0,8061
11 1,690921 -0,2192
12 1,691167 +0,0745
13 1,691290 -0,0724
14 1,6912285
1,69125925 1,691290
Kết luận : nghiệm của phương trình là

Sai số là

 ;

* Đối với khoảng cách ly nghiệm

Áp dụng phương pháp chia đôi, với

1 -2 -1 -1.5 -632.7304688
2 -2 -1.5 -1.75 -500.6923065
3 -2 -1.75 -1.875 -313.7472913
4 -2 -1.875 -1.9375 -168.1774991
5 -2 -1.9375 -1.96875 -78.56034549
6 -2 -1.96875 -1.984375 -28.98490969
7 -2 -1.984375 -1.9921875 -2.92989633
8 -2 -1.9921875 -1.99609375 10.42425853
9 -1.99609375 -1.9921875 -1.994140625 3.719663056
10 -1.994140625 -1.9921875 -1.993164063 0.3880279863
11 -1.993164063 -1.9921875 -1.992675781 -1.272647344
12 -1.993164063 -1.992675781 -1.992919922 -0.4427378977

Vì nên nghiệm của phương trình là .

Sai số

Tách nghiệm ta được phương trình có một nghiệm và .

Áp dụng phương pháp chia đôi, với Sai số:

1 2 3 2.5 -273.828125
2 2.5 3 2.75 289.9675293
3 2.5 2.75 2.625 -25.37526321
4 2.625 2.75 2.6875 123.1251408
5 2.625 2.6875 2.65625 46.68790966
6 2.625 2.65625 2.640625 10.12237867
7 2.625 2.640625 2.6328125 -7.758351514
8 2.6328125 2.640625 2.63671875 1.148840247
9 2.6328125 2.63671875 2.634765625 -3.313024395
10 2.634765625 2.63671875 2.635742188 -1.084161189
11 2.635742188 2.63671875 2.636230469 0.03182158163
Vì nên nghiệm của phương trình là .

* Đối với khoảng cách ly nghiệm


Áp dụng phương pháp chia đôi, với

1 -3 -2 -2.5 -273.828125
2 -3 -2.5 -2.75 289.9675293
3 -2.75 -2.5 -2.625 -25.37526321
4 -2.75 -2.625 -2.6875 123.1251408
5 -2.6875 -2.625 -2.65625 46.68790966
6 -2.65625 -2.625 -2.640625 10.12237867
7 -2.640625 -2.625 -2.6328125 -7.758351514
8 -2.640625 -2.6328125 -2.63671875 1.148840247
9 -2.63671875 -2.6328125 -2.634765625 -3.313024395
10 -2.63671875 -2.634765625 -2.635742188 -1.084161189
11 -2.63671875 -2.635742188 -2.636230469 0.03182158163

Vì nên nghiệm của phương trình là .


Sai số:

*Lập trình:
#include “stdio.h”
#include “math.h”

float f(float a[], int n, float x){


float res = 0;
for(int i = 0; i <= n; i++) res+=a[i]*pow(x,n-i);
return res;
}

void solve_ct(float a[], int n, float ct, float cd){


float m, x;
int z = 1;
do{
m = (ct + cd)/2;
x = f(a, n, m);
printf("%d%16.4lf%16.4lf%16.4lf%16.4lf\n", z++, cd, ct, m, x);
if(x>0) ct = m;
else cd = m;
}while(fabs(ct - cd)>0.00001);
printf("Nghiem cua phuong trinh la %0.4f", m);
}

void solve_cd(float a[], int n, float ct, float cd){


float m, x;
int z = 1;
do{
m = (ct + cd)/2;
x = -f(a, n, m);
printf("%d%16.4lf%16.4lf%16.4lf%16.4lf\n", z++, cd, ct, m, x);
if(x>0) ct = m;
else cd = m;
}while(fabs(ct - cd)>0.00001);
printf("Nghiem cua phuong trinh la %0.4f", m);
}

int main(){
int n;
printf ("Nhap bac cho bieu thuc can tinh: "); scanf ("%d", &n);
float a[n];
for (int i=0; i <= n; i++) {
printf ("He so cua bac %d la: ",n - i);
scanf ("%f", &a[i]);
}
float ct, cd;
printf("Hay nhap a (f(a)>0): "); scanf("%f", &cd);

printf("Hay nhap b (f(b)<0): "); scanf("%f", &ct);

float ft = f(a, n, ct);


if(ft > 0){
printf("\nn a b m f(m)\n");
solve_ct(a, n, ct, cd);
}
else{
printf("\nn a b m -f(m)\n");
solve_cd(a, n, ct, cd);
}
}

Màn hình console


a)

b)
c)

PHƯƠNG PHÁP LẶP

Tách nghiệm ta được phương trình có một nghiệm và .


*Đối với khoảng cách li nghiệm :

Chính xác hóa nghiệm:

n x g(x) Vậy phương trình có


1 0 0.089 nghiệm xấp xỉ 0.912
2 0.089 0.17886
3 0.17886 0.26926
4 0.26926 0.36095
5 0.36095 0.45404
6 0.45404 0.54783
7 0.54783 0.64014
8 0.64014 0.72640
9 0.72640 0.79974
10 0.79974 0.85345
11 0.85345 0.88574
12 0.88574 0.90151
13 0.90151 0.90801
14 0.90801 0.91060
15 0.91060 0.91151
16 0.91151 0.91184
17 0.91184 0.91196

*Đối với khoảng cách nghiệm :

Chính xác hóa nghiệm:

n x g(x) Vậy phương trình có


1 -1.5 -1.473 nghiệm xấp xỉ -1.471
2 -1.473 -1.4712
3 -1.4712 -1.4710
4 -1.4710 -1.4710

Vậy phương trình có 2 nghiệm gần đúng là 0.912 và -1.471

Tách nghiệm ta được phương trình có một nghiệm và .

*Đối với khoảng cách li nghiệm :

Chính xác hóa nghiệm:

n x g(x) Vậy phương trình có


1 1.4 1.5298 nghiệm xấp xỉ 1.691
2 1.5298 1.6186
3 1.6186 1.6651
4 1.6651 1.6832
5 1.6832 1.6890
6 1.6890 1.6906
7 1.6906 1.6911
8 1.6911 1.6912

*Đối với khoảng cách li nghiệm :

Chính xác hóa nghiệm:


n x g(x) Vậy phương trình có
1 -2 -1.9931 nghiệm xấp xỉ -1.9931
2 -1.9931 -1.9931

Vậy phương trình có 2 nghiệm gần đúng là 1.691 và -1.9931

Tách nghiệm ta được phương trình có một nghiệm và .

*Đối với khoảng cách li nghiệm :

Chính xác hóa nghiệm:

n x g(x) Vậy phương trình có


1 2.4 2.5498 nghiệm xấp xỉ 2.6362
2 2.5498 2.6049
3 2.6049 2.6274
4 2.6274 2.6339
5 2.6339 2.6356
6 2.6356 2.6361
7 2.6361 2.6362
8 2.6362 2.6362

*Đối với khoảng cách li nghiệm :

Chính xác hóa nghiệm:

n x g(x) Vậy phương trình có


1 -2.8 -2.6584 nghiệm xấp xỉ -2.6362
2 -2.6584 -2.6417
3 -2.6417 -2.6376
4 -2.6376 -2.6366
5 -2.6366 -2.6363
6 -2.6363 -2.6362
7 -2.6362 -2.6362

Vậy phương trình có 2 nghiệm gần đúng là 2.6362 và -2.6362

*Lập trình:
#include “stdio.h”
#include “math.h”

float dao_ham(float a[], int n, float x){


float res = 0;
for(int i = 0; i <= n; i++){
res += a[i]*(n-i)*pow(x, n-i-1);
}
return res;
}

float g(float a[], int n, float x, float d){


float res = 0;
for(int i = 0; i<=n; i++){
res += a[i]*pow(x, n-i);
}
res/=d;
return x - res;
}

float f(float a[], int n, float x){


float res = 0;
for(int i = 0; i<=n; i++){
res += a[i]*pow(x, n-i);
}
return res;
}
int main(){
int n;
printf("Hay nhap bac cua phuong trinh: ");
scanf("%d", &n);
float a[n+1];
for(int i=0; i<=n; i++){
printf("Hay nhap he so bac %d: ", n-i);
scanf("%f", &a[i]);
}
float ct, cd;
printf("Hay nhap can tren: "); scanf("%f", &ct);
printf("Hay nhap can duoi: "); scanf("%f", &cd);
float ft;
ft = f(a, n, ct);
float k, x, y;
x = cd;
if(ft > 0){
k = dao_ham(a, n, ct);
}
else{
k = dao_ham(a, n, cd);
}
int z = 1;
printf("n x g(x)\n");
y = g(a, n, x, k);
while(fabs(x - y) > 0.00001){
printf("%d%16.4f%18.4f\n", z++, x, y);
x = y;
y = g(a, n, x, k);
}
printf("Nghiem gan dung cua phuong trinh la: %0.4f", x);
}
Màn hình console

a)

b)
c)

You might also like