當前位置:首頁 » 編程語言 » 簡化牛頓法c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

簡化牛頓法c語言

發布時間: 2023-06-02 15:46:34

❶ 牛頓迭代法的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語言編程牛頓法解方程(只限C語言)!~急~!!~!3Q!

你可以看一下譚浩強變得c教程,裡面有

❸ 求 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.

❹ 求用c語言編寫牛頓插值法

牛頓插值法:

#include<stdio.h>
#include<alloc.h>
float Language(float *x,float *y,float xx,int n)
{
int i,j;
float *a,yy=0.0;
a=(float *)malloc(n*sizeof(float));
for(i=0;i<=n-1;i++)
{
a[i]=y[i];
for(j=0;j<=n-1;j++)
if(j!=i)a[i]*=(xx-x[j])/(x[i]-x[j]);
yy+=a[i];
}
free(a);
return yy;
}
void main()
{
float x[4]={0.56160,0.5628,0.56401,0.56521};
float y[4]={0.82741,0.82659,0.82577,0.82495};
float xx=0.5635,yy;
float Language(float *,float *,float,int);
yy=Language(x,y,xx,4);
printf("x=%f,y=%f\n",xx,yy);
getchar();
}
‍2.牛頓插值法#include<stdio.h>
#include<math.h>
#define N 4
void Difference(float *x,float *y,int n)
{
float *f;
int k,i;
f=(float *)malloc(n*sizeof(float));
for(k=1;k<=n;k++)
{
f[0]=y[k];
for(i=0;i<k;i++)
f[i+1]=(f[i]-y[i])/(x[k]-x[i]);
y[k]=f[k];
}
return;
}
main()
{
int i;
float varx=0.895,b;
float x[N+1]={0.4,0.55,0.65,0.8,0.9};
float y[N+1]={0.41075,0.57815,0.69675,0.88811,1.02652};
Difference(x,(float *)y,N);
b=y[N];
for(i=N-1;i>=0;i--)b=b*(varx-x[i])+y[i];
printf("Nn(%f)=%f",varx,b);
getchar();
}
留下個郵箱,我發給你:牛頓插值法的程序設計與應用