gpt4 book ai didi

loops - 使用具有公差的正割法进行迭代

转载 作者:行者123 更新时间:2023-12-05 06:58:51 25 4
gpt4 key购买 nike

我试图找出当我在 maple 中运行割线迭代达到一定容差时需要多少次迭代。但是,我收到了一个错误代码,所以如果有人能指出我的代码中的错误位置,我将不胜感激。

亲切的问候。

x0 = 1.22, x1 = 0.8843478306, tolerance 1*e-6 > abs(x1-x0) 在达到公差之前迭代了多少次?

restart;
secant:=proc(f,x0,x1)
local k,x;
x[0]:=x0;
x[1]:=x1;
print(0,x[0]);
print(1,x[1]);
for k from 2 to 1e-6 > abs(x1-x0) do
x[k]:=x[k-1]-f(x[k-1])*(x[k-1]-x[k-2])/(f(x[k-1])-f(x[k-2]));
print(k,x[k]);
end do;
return x;
end proc;
f1:= x -> 3.0*exp(-1.0*x)-(4.1)*x^2;
y := secant(f1, 1.22, 0.8843478306)

Error, (in secant) final value in for loop must be numeric or character

最佳答案

我将您的条件(针对公差进行测试)放入 while 条件测试中。我还为 k 循环索引添加了一个硬编码上限值作为 20,这样它就不会因为一个不收敛的例子而永远消失。

仔细检查以了解其工作原理/原因,以及我是否犯了任何错误。

restart;

secant:=proc(f,x0,x1)
local k,x;
x[0]:=x0;
x[1]:=x1;
print(0,x[0]);
print(1,x[1]);
for k from 2 to 20 while abs(x[k-1]-x[k-2]) > 1e-6 do
x[k]:=x[k-1]
-f(x[k-1])*(x[k-1]-x[k-2])/(f(x[k-1])-f(x[k-2]));
print(k,x[k],abs(x[k]-x[k-1]));
end do;
return convert(x,list);
end proc:

f1:= x -> 3.0*exp(-1.0*x)-(4.1)*x^2:

secant(f1, 1.22, 0.8843478306);

0, 1.22

1, 0.8843478306

2, 0.6810954056, 0.2032524250

3, 0.6318451478, 0.0492502578

4, 0.6257917558, 0.0060533920

5, 0.6256275429, 0.0001642129

-7
6, 0.6256270427, 5.002 10

[1.22, 0.8843478306, 0.6810954056, 0.6318451478,
0.6257917558, 0.6256275429, 0.6256270427]

关于loops - 使用具有公差的正割法进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64528558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com