牛頓法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;}
❷ C語言 用牛頓迭代法求方程的根,並且輸出迭代的次數
#include<stdio.h>
#include<math.h>
void main()
{float x1,x0,f,f1;
int i=0;//i就是當前計算的次數
x1=1.5;
do
{i++;
x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
printf("the d%th root is:%5.2f\n",i,x1);
}while(fabs(x1-x0)>=1e-5);
printf("the time is d%\n",i,);
printf("附近的根是:%5.2f\n",x1);
❸ C語言牛頓方法計算平方根
#include<math.h>
main()
{
float x,y,t;
scanf("%f",&x);
y=x/3;
while(1)
{
t=(y+x/y)/2;
if(fabs(t-y)<0.000001) break;
y=t;
}
printf("the square root of %g is %g",x,t);
}
❹ C語言編程中怎樣用牛頓迭代法求解方程
#include<stdio.h>
#include<math.h>
int main()
{
float x1,x,f1,f2;static int count=0;
x1=1.5//定義初始值
do
{
x=x1;
f1=x*(2*x*x-4*x+3)-6;
f2=6*x*x-8*x+3;//對函數f1求導
x1=x-f1/f2; count++;
}while(fabs(x1-x)<=1e-5);
printf("%8.7f
",x1); printf("%d
",count);
return 0;
}
//2x3-4x2+3x-6
❺ c語言牛頓迭代法
把兩個子函數都寫主函數里頭吧!你這樣寫a、b、c、d都沒有傳參,害我找了半天。
#include<stdio.h>
#include<math.h>
int
a,b,c,d;
//a、b、c、d為系數
void
main()
{
int
k=0;
//計數變數
float
X0,X1,f,f1;
int
a,b,c,d;
printf("提示:函數f(x)=a*x^3+b*x^2+c*x+d\n");
printf("請輸入系數:a,b,c,d的值:\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("請輸入初始近似值X0:\n");
scanf("%f",&X1);
printf("---------------\n");
printf("斂散情況:\n");
printf("k:\tXk:\n");
printf("k=%d\tX%d=%f\n",k,k,X1);
do
{
k++;
X0=X1;
f=((a*X0+b)*X0+c)*X0+d;
f1=(3*a*X0+2*b)*X0+c;
X1=X0-f/f1;
printf("k=%d\tX%d=%f\n",k,k,X1);
}
while(fabs(X1-X0)
>=0.00001);
printf("--------------------------\n");
printf("迭代的次數為:%d\n",k);
}
❻ 怎樣用c語言用牛頓法求方程 在 附近的根
牛頓迭代法要計算 (1) y1=f(x) 在 x 的函數值 (2) d1=f(x) 的一階導數 在 x 的值 你可以寫兩個函數,分別計算y1,d1 如果一階導數有解析解,則可用賦值語句,否則要寫數值解子程序。 步驟: 設解的精度,例 float eps=0.000001; 設x初值,x1; 算y1=f(x1); 迭代循環開始 算一階導數 在 x1 的值 d1 用牛頓公式 算出 x2; [x2 = x1 - y1 / d1] 如果 fabs(x2-x1) > eps 則從新迭代 -- 用新的函數值和一階導數值推下一個 新x. 牛頓迭代法: #include #include #include #define MAXREPT 1000 float f(float x) {return(你的表達式)); } float df(float x) {return(表達式的導數)); } float iterate(float x) {float x1; x1=x-f(x)/df(x); return(x1); } void main() {float x0,x1,eps,d;int k=0; printf("\n please input x0,eps:"); scanf("%f,%f",&x0,&eps); printf("\n k xk\n"); printf(" %d %f\n",k,x0); do {k++; x1=iterate(x0); printf(" %d %f\n",k,x1); d=fabs(x1-x0); x0=x1; } while((d>=eps)&(k http://bbs.zdnet.com.cn ,本貼地址: http://bbs.zdnet.com.cn/viewthread.php?tid=467406 雲是風的夢===========================由本人思考作答或搜索整理 搜索部分感謝原來的作者 希望對你有所幫助===========================
記得採納啊