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代碼給你寫的,不過注意:我並沒有用迭代法,等一會我給你發過迭代法的做法;