问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

迭代函数在编写程序的时候如何输入

发布网友 发布时间:2022-04-25 22:58

我来回答

1个回答

热心网友 时间:2023-10-16 12:57

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法,即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

迭代是数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题(一般是解方程或者方程组)的过程,为实现这一过程所使用的方法统称为迭代法(Iterative Method)。

一般可以做如下定义:对于给定的线性方程组x=Bx+f(这里的x、B、f同为矩阵,任意线性方程组都可以变换成此形式),用公式x(k+1)=Bx(k)+f(括号中为上标,代表迭代k次得到的x,初始时k=0)逐步带入求近似解的方法称为迭代法(或称一阶定常迭代法)。如果k趋向无穷大时limx(k)存在,记为x*,称此迭代法收敛。显然x*就是此方程组的解,否则称为迭代法发散。

跟迭代法相对应的是直接法(或者称为一次解法),即一次性的快速解决问题,例如通过开方解决方程x +3= 4。一般如果可能,直接解法总是优先考虑的。但当遇到复杂问题时,特别是在未知量很多,方程为非线性时,我们无法找到直接解法(例如五次以及更高次的代数方程没有解析解,参见阿贝耳定理),这时候或许可以通过迭代法寻求方程(组)的近似解。

最常见的迭代法是牛顿法。其他还包括最速下降法、共轭迭代法、变尺度迭代法、最小二乘法、线性规划、非线性规划、单纯型法、惩罚函数法、斜率投影法、遗传算法、模拟退火等等。

利用迭代算法解决问题,需要做好以下三个方面的工作:
确定迭代变量
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
建立迭代关系式
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以顺推或倒推的方法来完成。
对迭代过程进行控制

什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数
是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需
要进一步分析出用来结束迭代过程的条件。
举例
例 1 :一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,问到第 12 个月时,该饲养场共有兔子多少只?

分析:这是一个典型的递推问题。我们不妨假设第 1 个月时兔子的只数为 u 1 ,第 2 个月时兔子的只数为 u 2 ,第 3 个月时兔子的只数为 u 3 ,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有

u 1 = 1 , u 2 = u 1 + u 1 × 1 = 2 , u 3 = u 2 + u 2 × 1 = 4 ,……

根据这个规律,可以归纳出下面的递推公式:

u n = u(n - 1)× 2 (n ≥ 2)

对应 u n 和 u(n - 1),定义两个迭代变量 y 和 x ,可将上面的递推公式转换成如下迭代关系:

y=x*2

x=y

让计算机对这个迭代关系重复执行 11 次,就可以算出第 12 个月时的兔子数。参考程序如下:

cls

x=1

for i=2 to 12

y=x*2

x=y

next i

print y

end

例 2 :阿米巴用简单*的方式繁殖,它每*一次要用 3 分钟。将若干个阿米巴放在一个盛满营养参液的容器内, 45 分钟后容器内充满了阿米巴。已知容器最多可以装阿米巴 220,220个。试问,开始的时候往容器内放了多少个阿米巴?请编程序算出。

分析:根据题意,阿米巴每 3 分钟*一次,那么从开始的时候将阿米巴放入容器里面,到 45
分钟后充满容器,需要* 45/3=15 次。而“容器最多可以装阿米巴2^ 20 个”,即阿米巴* 15 次以后得到的个数是
2^20。题目要求我们计算*之前的阿米巴数,不妨使用倒推的方法,从第 15 次*之后的 2^20 个,倒推出第 15 次*之前(即第 14
次*之后)的个数,再进一步倒推出第 13 次*之后、第 12 次*之后、……第 1 次*之前的个数。

设第 1 次*之前的个数为 x 0 、第 1 次*之后的个数为 x 1 、第 2 次*之后的个数为 x 2 、……第 15 次*之后的个数为 x 15 ,则有

x 14 =x 15 /2 、 x 13 =x 14 /2 、…… x n-1 =x n /2 (n ≥ 1)

因为第 15 次*之后的个数 x 15 是已知的,如果定义迭代变量为 x ,则可以将上面的倒推公式转换成如下的迭代公式:

x=x/2 (x 的初值为第 15 次*之后的个数 2^20)

让这个迭代公式重复执行 15 次,就可以倒推出第 1 次*之前的阿米巴个数。因为所需的迭代次数是个确定的值,我们可以使用一个固定次数的循环来实现对迭代过程的控制。参考程序如下:

cls

x=2^20

for i=1 to 15

x=x/2

next i

print x

end

ps:java中幂的算法是Math.pow(2,20);返回double,稍微注意一下

例 3 :验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以 3 ,然后再加 1。如此经过有限次运算后,总可以得到自然数 1。人们把谷角静夫的这一发现叫做“谷角猜想”。

要求:编写一个程序,由键盘输入一个自然数 n ,把 n 经过有限次运算后,最终变成自然数 1 的全过程打印出来。

分析:定义迭代变量为 n ,按照谷角猜想的内容,可以得到两种情况下的迭代关系式:当 n 为偶数时, n=n/2 ;当 n 为奇数时, n=n*3+1。用 QBASIC 语言把它描述出来就是:

if n 为偶数 then

n=n/2

else

n=n*3+1

end if

这就是需要计算机重复执行的迭代过程。这个迭代过程需要重复执行多少次,才能使迭代变量 n 最终变成自然数 1
,这是我们无法计算出来的。因此,还需进一步确定用来结束迭代过程的条件。仔细分析题目要求,不难看出,对任意给定的一个自然数 n
,只要经过有限次运算后,能够得到自然数 1 ,就已经完成了验证工作。因此,用来结束迭代过程的条件可以定义为:n=1。参考程序如下:

cls

input "Please input n=";n

do until n=1

if n mod 2=0 then

rem 如果 n 为偶数,则调用迭代公式 n=n/2

n=n/2

print "—";n;

else

n=n*3+1

print "—";n;

end if

loop

end

迭代法开平方:

#include<stdio.h>

#include<math.h>

void main()

{

double a,x0,x1;

printf("Input a:\n");

scanf("%lf",&a);//为什么在VC6.0中不能写成“scanf("%f",&a);”?

if(a<0)

printf("Error!\n");

else

{

x0=a/2;

x1=(x0+a/x0)/2;

do

{

x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x0-x1)>=1e-6);

}

printf("Result:\n");

printf("sqrt(%g)=%g\n",a,x1);

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么叫背板 下列关于遵义会议的表述,不正确的是彻底清算了王明的左倾路线吗_百度知 ... 抖店注销后抖音号能解绑吗?还能开吗? 请问腱鞘炎必须打封闭针吗? 突然两个手手腕内侧都得了腱鞘炎,动一下就疼,除了打封闭针,还有什麽办 ... 得了腱鞘炎一定要打封闭吗? 下雨了,来接孩子的家长们撑着雨伞,仿佛像什么 华为MatePadPro搭载哪一款处理器华为MatePadPro处理器介绍【详解】 支付宝APP商家怎么申请收款二维码 申请方法介绍 SVG动画从入门到实战,提升你的网站表现力 用牛顿法求1/√a,写出迭代公式 牛顿迭代法的牛顿迭代公式 在C语言中,什么是迭代法? 为什么微信会突然重新登录然后账号被冻结密码也被改了家人也被删掉了? 请问迭代是什么意思???望得到准确回答,谢谢。。。 牛顿迭代方法 数学中那个迭代法是怎么回事啊 ? 一个关注我很久的男生,突然取消对我的关注,为什么? 如何对多个变量进行迭代? C#中“迭代变量”什么意思呢? 这抖音上面的人,你们为啥都取消我的关注了呢? 杏鲍菇豆腐 杏鲍菇能和豆腐同吃吗 IAM无雾加湿器真的这么好嘛?好在哪里? 阿尔卡司净化无雾加湿器用着有什么优势? 敏感肌适合使用无雾加湿器吗? 杏鲍菇焖豆腐做法有哪些呢?谁能告诉我一下!Msw178.com 杏鲍菇炖豆腐的做法,杏鲍菇炖豆腐怎么做好吃 请问一下,油豆腐炒杏鲍菇怎么做好吃? 杏鲍菇煎豆腐怎么做 杏鲍菇炒豆腐的做法,杏鲍菇炒豆腐怎么做好吃 简化牛顿迭代法收敛的证明 matlab编程中基于向量和矩阵的描述与迭代变量的编程的异同 如何通俗易懂地讲解牛顿迭代法求开方? 什么是delta法则 premiere cs4如何在字幕外面添加边框 Prcc裁剪的时候如何显示外部方框? Pr怎么做这种人物旁边有个方框,框里有短视频,短视频与方框贴合,视频拉 ... 怎样在premiere中做一个红色透明方块,飞到字幕上时,不会遮挡字幕 premiere 2.0 调整素材大小的框框被搞没在了,怎么弄出来? premiere里如何把人用框框圈出来,让框框跟着人动? Pr一张图片变成四格九格然后方块消失怎么弄 PR在添加字幕是输入的字变成了一个方框怎么回事 怎样取消qq上显示的天气预报 怎样关闭天气预报里的广告 怎么取消QQ上我的地址和天气 怎么去掉qq面板上天气预报图标 怎么取消手机登陆QQ空间自动显示的天气预报和星座运势 每次打开qq浏览器都在通知栏出现天气预报,怎么取消? 新加坡遇史上最严重登革热,这种疫情到底有多恐怖? 【知道日报】9种最致命的病毒,你知道吗?