int i,temp=0;//i为循环控制变量,变量temp中间数值传递的暂存空间
int mol=2,den=1;//mol为分子,den为分母
for(i=0;i<20;i++){
temp=mol;
mol+=den;
den=temp;
}
#include
<stdioh>
#include
<mathh>
int
main(void)
{//本程序已测试,完全可用
double
a;
printf("input
a:");
scanf("%lf",&a);
if(fabs(a)<1e-13){//需要注意为0的情况,double双精度精确到15位,这里设置下
printf("0");
return
0;
}
double
x,y;
x=a;
y=(2x/3)+(a/(3xx));
while(fabs(y-x)>0000001){
x
=
y;
y=(2x/3)+(a/(3xx));
printf("%6f
%6f\n",x,xxx);
}
}
第一个回答的同志有两个错误
1,倒数第三行while(fabs(xk2-temp)<1e-6)中的<应该改为>才对
2,没有考虑输入的数很小为0的情况
1 一般来说,迭代法的收敛结果与初值有一定关系,但这里因为函数 x=a^(1/2) 是单调的,所以这里迭代法的收敛性与初值无关。
2 这里的初值决定了迭代次数,即初值与求值的速度有关。
3 lz感兴趣的话,可以看一些“数值分析”“计算方法”有关的书籍。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
float num,x=1,tmp; //注意迭代开始时x的值为1
cout<<"输入需要求开平方的数"<<endl;
cin>>num;
do
{
tmp=x;
x=(x+num/x)/2; //迭代求根号值
}while(fabs(x-tmp)>=1e-5); //使用了fabs函数,需要加cmath头文件,注意10的高次方的表达方式
// fabs关于绝对值的函数 浮点型的
cout<<num<<' '<<x<<endl;
return 0;
}
#include <iostream>
#include <stdlibh>
using namespace std;
int func(long x)
{
cout<<x%10;
if(x>10) func(x/10);
}
int main()
{ func(234567L);
system("pause");
return 0;
}
#include<iostream>
using namespace std;
int f(int n)
{
if(n==0)return 1;
else return nf(n-1);
}
int main()
{
cout<<f(5)+f(4)+f(3)+f(2)+f(1)<<endl;
return 0;
}
以上就是关于计算机c语言编程,用简单循环和迭代法求分数序列2/1 3/2 5/3 8/5 13/8 13/全部的内容,包括:计算机c语言编程,用简单循环和迭代法求分数序列2/1 3/2 5/3 8/5 13/8 13/、c语言 用迭代法求解、编写C程序,用迭代法求x=a^(1/2)。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)