交互计算函数极限

calculating the function limit interatively

如何在Matlab中交互计算一个函数的极限,接近给定的极限值?闭合精度为10^(-7)

我想应该使用泰勒公式,但不知道如何应用它。

函数本身是:

限制为 88。 换句话说,赋值是将极限表示为具有指定变量的系列,计算它们 step-by-step,以 10^(-7) 精度接近极限值。

任务示例代码:

syms x;
F=log(1+sin(x))/(sin(4*x));
a=limit(F,x,0);
disp(a)
sum=taylor(F,x,0,'Order',7);
disp(sum)
disp (subs(sum,x,0))

使用符号工具箱时,使用 MATLAB 计算它非常容易。 limit函数就是你所需要的:

syms x
limit((x^2-9*x-10)/(sqrt(x+6)-4),x,10)

ans = 
    88

如果你想手工计算,你不需要泰勒级数,你需要 L'Hopital 规则,其中规定

(图片来源:维基百科)

这导致

要在 MATLAB 中进行计算,您可以使用 diff 函数求导并执行类似

的操作
syms x
f(x) = x^2-9*x-10;
g(x) = sqrt(x+6)-4;
r(x) = diff(f(x)) / diff(g(x));
r(10)

ans = 
    88

好吧,因为我们使用的是 MATLAB,所以我们当然可以只使用泰勒级数展开,让 MATLAB 来完成这项工作。 MATLAB 有一个 taylor 函数可以创建泰勒展开式。由于泰勒展开正好在展开点附近,误差增大,离该点越远,展开点最好用10

syms x
t(x) = taylor((x^2-9*x-10)/(sqrt(x+6)-4),x,10,'Order',6);
t(10)

ans = 
    88

好的,既然我知道你在追求什么,你也许可以做的是使用那个 taylor 命令并扩展一个离你想要计算极限的地方很远的点。如果我们将扩展点设置为您想要评估极限的位置,无论您选择什么阶多项式,您都会得到正确的结果,这就是我假设您不想要的结果。

从较远的扩展点开始,然后不断增加泰勒级数多项式的阶数,直到获得所需的精度。你不要选择离太远的扩展点,否则你永远得不到正确答案。因此,我将在 x = 7.

展开

像这样:

true_val = 88; %// Define true value
syms x;
f = (x^2-9*x-10)/(sqrt(x+6)-4); %// Define function

order = 2; %// Start with second order
format long g; %// For better formatting
while true %// Keep iterating...

    % // Get Taylor polynomial centered at x = 7 of the current order
    pol = taylor(f, x, 7, 'Order', order);

    %// Evaluate the Taylor series
    val = double(subs(pol, x, 10));

    %// Show the results
    disp(['Order: ' num2str(order)]);
    disp('Result');
    disp(val);

    %// Check to see if we have at least 1e-7 accuracy then break out if yes
    if abs(true_val - val) < 1e-7
        break;
    end

    %// Increment the order by 1
    order = order + 1;
end

这是我得到的:

Order: 2
Result
          86.9892652074553

Order: 3
Result
          88.0453290425764

Order: 4
Result
          87.9954798755339

Order: 5
Result
          88.0005926106152

Order: 6
Result
          87.9999105029301

Order: 7
Result
          88.0000147335223

Order: 8
Result
           87.999997429935

Order: 9
Result
          88.0000004672668


Order: 10
Result
          87.9999999123696