A. c语言,迭代法求平方根
你的算法用的有问题
#include<stdio.h>
#include<math.h>
intmain(void)
{
doublea=0.0;
doubleb=0.0;
doublec=1.0;
doublex;//----
constdoublee=0.00001;
printf("inputnum: ");
scanf("%lf",&a);
getchar();
x=a;//负数时要进行处理
if(a<0)a=-a;
c=1,b=a;
while(fabs(c-b)>e)
{
c=b;
b=0.5*(c+a/c);
}
if(x<0)//----
printf("sqrt(%lf)=%.3lfi ",a,b);
else
printf("sqrt(%lf)=%.3lf ",a,b);
getchar();
return0;
}
B. c语言迭代求阶乘
如果是求e的值,迭代法的程序代码如下:
int n,i,f=1;
double e=1,t=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t/=i;
e+=t;
}
printf("%f\n",e);
C. 牛顿迭代法的C语言代码
doublefunc(doublex)//函数{returnx*x*x*x-3*x*x*x+1.5*x*x-4.0;}doublefunc1(doublex)//导函数{return4*x*x*x-9*x*x+3*x;}intNewton(double*x,doubleprecision,intmaxcyc)//迭代次数{doublex1,x0;intk;x0=*x;for(k=0;k<maxcyc;k++){if(func1(x0)==0.0)//若通过初值,函数返回值为0{printf(迭代过程中导数为0! );return0;}x1=x0-func(x0)/func1(x0);//进行牛顿迭代计算if(fabs(x1-x0)<precision||fabs(func(x1))<precision)//达到结束条件{*x=x1;//返回结果return1;}else//未达到结束条件x0=x1;//准备下一次迭代}printf(迭代次数超过预期! );//迭代次数达到,仍没有达到精度return0;}intmain(){doublex,precision;intmaxcyc;printf(输入初始迭代值x0:);scanf(%lf,&x);printf(输入最大迭代次数:);scanf(%d,&maxcyc);printf(迭代要求的精度:);scanf(%lf,&precision);if(Newton(&x,precision,maxcyc)==1)//若函数返回值为1printf(该值附近的根为:%lf ,x);else//若函数返回值为0printf(迭代失败! );getch();return0;}
D. c语言的迭代法
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法,即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
E. 用c语言迭代法实现x=a的立方
import java.util.*;
public class T {
void show(int x){
System.out.println("输出立方:"+Math.pow(x, 3));
}
public static void main(String[] args){
T t=new T();
Scanner sc=new Scanner(System.in);
System.out.println("请输入你自定义的数x:");
int x=sc.nextInt();
t.show(x);
}
}
运行结果如下:
请输入你自定义的数x:
3
输出立方:27.0
这是我用java代码给你写的,不过注意:我并没有用迭代法,等一会我给你发过迭代法的做法;