数学实验第三版(主编:李继成 赵小艳)课后练习答案(八)(3)

实验八:近似计算

练习三

1. 按要求完成下面的任务:

(1)求出函数 处的泰勒展开式,由此计算无理数e的近似值;

clc;clear;
f=@(x)exp(-x^2);
syms x
y=f(x);
y1=matlabFunction(taylor(y,'order',20));
1/y1(1)

ans =2.718283693893450

(2)在精确位数相同的情况下,同函数f(x)= 在x= 处的泰勒展开式比较,哪一个展开式计算无理数e需要选取的项数较多?

clc;clear;
f=@(x)exp(x);
syms x
y=f(x);
for i=2:20%这里不能从1开始,因为泰勒展开一项是一个常数,在下边的fix一行会出错;
y1=matlabFunction(taylor(y,'order',i));
if fix(y1(1)*10^5)==271828
    i
    return;
end
end

i=10;e= 2.718281828459045;

经过比较易知,(1)的泰勒展开需要的项数较多。

2. 自己选取 ≠0,求出函数f(x)= 在x= 处的泰勒展开式,并利用此展开式计算无理数e的近似值,在相同精度的要求下,同前题比较,哪一种更优?

clc;clear;
f=@(x)exp(x);
syms x
y=f(x);
for i=2:20
    y1=matlabFunction(taylor(y,x,1,'order',i));
    if fix(y1(1)*10^5)==271828
        i
        return;
    end
end

i=2;

由此可见,当在非零处泰勒展开后,收缩速度更快,方法更优。

3. 编写程序完成无理数e的数值模拟实验.

clc;clear;
n=100;%这里可以更改n的次数
sum=0;sum1=0;
for k=1:10000
for i=1:n
x1=fix(rand(1)*n);
x2=fix(rand(1)*n);
if x1==x2
sum=sum+1;
end
end
if sum>0
    sum1=sum1+1;
end
sum=0;
end
(1-sum1/k)^-1

ans =

   2.718868950516585(随机的,每次运行结果不一样)

推荐下一篇文章:​​​​​​​

数学实验第三版(主编:李继成 赵小艳)课后练习答案(八)(4)icon-default.png?t=N7T8https://blog.csdn.net/2301_80199493/article/details/136099441?spm=1001.2014.3001.5502

本文由作者自创,由于时间原因,难免出现些许错误,还请大家多多指正。创作不易,请大家多多支持。

你可能感兴趣的:(matlab)