30/09/2018, 23:45

Công thức này có đúng không ạ?

e^x ≈ 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5!

Thầy em bảo viết chương trình tính e theo công thức này :
Em làm y hệt tính tay + thay các trường hợp vào công thức đều đúng nhưng submit thì fail + tính lại e bằng máy tính thì fail… :v
Em thử thay số vào thì có vẻ cái công thức này sai mà?

Phạm Tuấn Cường viết 02:00 ngày 01/10/2018

Khai triển Taylor đúng rồi mà bạn

Beo Sen viết 01:50 ngày 01/10/2018

Lạ nhỉ,với x = 3
mình bấm máy ra e^3 = 20.08
trong khi theo phép trên thì e^3 = 1 + 3 + 3^2/2! + 3^3/3! + 3^4/4! + 3^5/5! = 18.4 (google tính)

Beo Sen viết 01:56 ngày 01/10/2018

Thầy mình viết nhầm công thức.Bạn có công thức gốc tính e^x không post mình phát.

Phạm Tuấn Cường viết 01:56 ngày 01/10/2018

bạn tìm khai triển Taylor cho hàm e mũ x ấy, cái xấp xỉ này chỉ đúng nếu mà x nhỏ thôi, bạn lấy x = 3 thì nó lệch là đúng r

Nguyễn Tấn Khoa viết 01:46 ngày 01/10/2018
Code
#include<conio.h>
#include<stdio.h>

int main()
{
    float e=1,x,t;
    printf("nhap x= ");
    scanf("%f",&x);

    int a=1;
    t=x;

    while(t>=0.000001)
    {
        e=e+t;
        a=a+1;
        t=t*(x/a);
    }

    printf("e^%f= %f",x,e);
    getch();

    return 0;
}

Chương trình này tính giá trị gần đúng của ex theo khai triển Tailor.

Beo Sen viết 01:46 ngày 01/10/2018

compile errror

code cua minh

compile errror

code cua minh

#include
#include <math.h>
using namespace std;

int ketQuaTinhGiaiThua;

int tinhGiaiThua(int SoInput){
for(int i = 0; i <= SoInput ; i += 1){
if(i == 0) {
ketQuaTinhGiaiThua = 1;
}
else{
ketQuaTinhGiaiThua = ketQuaTinhGiaiThua * i;

	}
}
return ketQuaTinhGiaiThua;

}
int main(){
double x;
cin >> x;
double phepTinh = 0;
if(x != 0){
for(int m = 0; m <= x + 1; m += 1){
phepTinh += pow(x,m)/tinhGiaiThua(m);
}
}
else{
}
cout << roundf(phepTinh * 100) / 100 ;
}

Bài liên quan
0