當前位置:首頁 » 編程語言 » c語言迭代法求方程根

c語言迭代法求方程根

發布時間: 2025-01-30 21:18:29

A. 用C語言編程求牛頓迭代法求方程f(x)=0的根。(

#include<stdio.h>
void main()
{
float s,f0,h,x;
int n,i;
printf("input n:");
scanf("%d",&n);
h=1.0/n;
f0=4.0;
s=0.0;
for(i=1;i<n;i++)
{s+=f0*h;
x=i*h;
f0=4/(1+x*x);
}
printf("s=%f\n",s);
}

//運行結果:
input n:9
s=3.002370

其他方法:
#include<stdio.h>
void main()
{
float s,f0,f,h,xi;
int n,i;
printf("input n:");
scanf("%d",&n);
h=1.0/n;
f0=4.0;
s=0.0;
for(i=1;i<n;i++)
{
xi=i*h;
f=f0;
f0=4/(1+xi*xi);
s+=h*(f0+f)/2;
}
printf("s=%f\n",s);
}

//運行結果:
input n:42
s=3.093306

B. C語言編程——內容:用牛頓迭代法求一元三次方程的根。要求:由主函數調用求根子函數,謝謝各位了

牛頓迭代法
牛頓迭代法又稱牛頓切線法,它採用以下方法求根:先任意設定一個與真實的根接近的值x0作為第一個近似根,由x0求出f(x0),過(x0,f(x0))點做f(x)的切線,交x軸於x1,把它作為第二次近似根,再由x1求出f(x1),再過(x1,f(x1))點做f(x)的切線,交x軸於x2,再求出f(x2),再作切線……如此繼續下去,直到足夠接近真正的x為止。

其中f'(X0)是函數在X0處的斜率,也就是在X0處的導數。

代碼如下:
#include<stdio.h>
#include<math.h>
float f(float a,float b,float c,float d,float x)
{
float f;
f=((a*x+b)*x+c)*x+d;
return f;
}

float f1(float a,float b,float c,float x)
{
float f;
f=(x*3*a+2*b)*x+c;
return f;
}

float root(float a,float b,float c,float d)
{
float x0,x1=1;
do
{
x0=x1;
x1=x0-f(a,b,c,d,x0)/f1(a,b,c,x0);
}while(fabs(x1-x0)>=1e-6);
return x0;
}
void main()
{
float a,b,c,d,x;
printf("input four float numbers:\n");
scanf("%f%f%f%f",&a,&b,&c,&d);
x=root(a,b,c,d);
printf("%.1fX^3+%.1fX^2+%.1fX+%.1f=0 its root near x=1.5 is :%.4f\n",a,b,c,d,x);
getch();
}

C. C語言編程:牛頓迭代法求方程的根

程序流程分析:
① 賦值x0=1.5,即迭代初值;
② 用初值x0代入方程中計算此時的f(x0)及f』(x0),程序中用變數f描述方程的值,用fd描述方程求導之後的值;
③ 計算增量d=f/fd;
④ 計算下一個x,x=x0-d;
⑤ 把新產生的x替換x0,為下一次迭代做好准備;
⑥ 若d絕對值大於1e-3,則重復②③④⑤步。

源程序代碼:

#include <math.h>
main()
{
float x,x0,d,f,fd;
x0=0;
do {
f=2*x0*x0*x0-4*x0*x0+3*x0-6;
fd=6*x0*x0-8*x0+3;
d=f/fd;
x=x0-d;
x0=x;
}while(fabs(d)>1e-3);
printf("x=%f\n",x);
}

D. C 語言 請哪位高手能幫我用C語言算出根號n的值

/*1.模擬筆算開平放的整數開平方演算法:*/
int _sqrti(int n)
{
int r,l,t; //r: 方根; l: 余數; t: 試除數;
if(n<100)
{
r = 9;
while(n < r*r) r--;
}
else
{
r = _sqrti(n/100);
l = n - r*r*100;
t = l/(r*20);
while( t*(r*20 + t) > l ) t--;
r = r*10 + t;
}
return r;
}

/*2. 迭代法:
迭代公式:x[n+1]=(x[n]+y/x[n])/2
可以證明,x[n]收斂到y^(1/2),而且收斂速度較快。
*/
double _sqrt(double y)
{
#define eps 1e-15
double x1,x2;
if(y<eps) return 0;
x2= y>1.0? y/2 : y*2;
do{
x1 = x2;
x2 = (x1 + y/x1)/2;
}while(fabs(x2-x1) > eps);
return x2;
#undef eps
}

E. 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);

熱點內容
伺服器的lp地址怎麼查 發布:2025-01-31 05:26:36 瀏覽:930
hibernatesql文件 發布:2025-01-31 05:19:55 瀏覽:735
手機騰訊視頻緩存不了 發布:2025-01-31 05:14:39 瀏覽:479
按鍵精靈連發腳本 發布:2025-01-31 05:08:41 瀏覽:489
傳奇掛機腳本命令大全 發布:2025-01-31 05:07:20 瀏覽:978
es壓縮查 發布:2025-01-31 05:04:04 瀏覽:389
web入侵腳本技術方式 發布:2025-01-31 05:03:58 瀏覽:886
c語言上三角矩陣 發布:2025-01-31 05:02:30 瀏覽:949
安卓系統如何打開手寫 發布:2025-01-31 04:46:31 瀏覽:911
python輸出文件 發布:2025-01-31 04:40:57 瀏覽:350