2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python怎么生成伪代码_python - 将伪代码转换为python(正割方法) - 堆栈内存溢出...

python怎么生成伪代码_python - 将伪代码转换为python(正割方法) - 堆栈内存溢出...

时间:2021-04-25 16:01:30

相关推荐

python怎么生成伪代码_python - 将伪代码转换为python(正割方法) - 堆栈内存溢出...

我正在处理此作业:

首先,实现由以下函数定义的f函数:f(x)= exp(x)-sin(x)最接近零。

其次,在给定输入值x0 = -3.5和x1 = -2.5的情况下,执行95页的Secant方法并使用它来找到f函数的根。

添加以下内容

-绝对测试:abs(f(x))

-相对测试:abs(x ^ k-x ^ {k-1})/ abs(x ^ {k})\\ leq delta

-最大迭代保护:k

在每次迭代中,打印出迭代次数k,当前根的值和当前f值。 打印20位浮点数。

这是我必须完成的代码:

import numpy as np

from math import exp, sin

import matplotlib.pyplot as plt

def f(x: float) -> float:

return

def secant(x0: float, x1: float, f, epsilon: float, delta: float, iter_max: int) -> float:

return

这是来自第95页的伪代码:

input: x_0, x_1, delta, epsilon, iter_max

fx_0

output: 0, x_0, fx_0

output: 1, x_1, fx_1

for k = 2 to iter_max do

if |fx_0| > |fx_1| then

x_0 x_1; fx_0 fx_1

end if

s

x_1

fx_1

x_0

fx_0

output: k, x_0, fx_0

if |fx_0| < epsilon or |x_1 - x_0| < delta then stop

end do

这是我自己的尝试:

def f(x: float) -> float:

return exp(x) - sin(x) == 0

def secant(x0: float, x1: float, f, epsilon: float, delta: float, iter_max: int) -> float:

fx0 = f(x0)

fx1 = f(x1)

return 0, x0, fx0

return 1, x1, fx1

for k in range(2, iter_max):

if abs(fx0) > abs(fx1):

x0 = x1

x1 = x0

fx0 = fx1

fx1 = fx0

s = (x1 - x0) / (fx1 - fx0)

x1 = x0

fx1 = fx0

x0 = x0 - fx0 * s

fx0 = f(x0)

return k, x0, fx0

if abs(fx0) < epsilon or abs(x**k - x**(k - 1))/ abs(x**(k)) <= delta:

break

如果我遵循我的代码

root = secant(-3.5, -2.5, f, 0.00000000001, 0.000001, 10)

print(root)

我得到:(0,-3.5,False)。 因此,它实际上不执行任何迭代。 我该如何解决?

编辑 :

伪代码照片

此处:a = x_0,b = x_1,M = iter_max。

我希望输出是这样的:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。