c语言不动点求解函数零点 怎么计算函数不动点
c语言函数求解。。。
#includestdio.h
int main()
{
int (*p)(int a,int b); /*定义P为一个指针,指向一个接受两个int参数返回int的函数*/
int a,b,maxi;
int max(int a,int b);
scanf("%d,%d",a,b);
p=max;
maxi=p(a,b); /*()的优先级高于*,所以你那样写相当于重新解引用了。(*p)(a,b)这样也可以*/
printf("%d",maxi);
return 0;
}
int max(int a,int b)
{
int c;
c=ab?a:b;
return(c);
}
求助C语言二分法求函数零点
#include stdio.h
#include math.h
double fun_math(double);
int main(void)
{
/* 根据函数可知Y是关于x的一个递增函数 */
/* 先判断输入Y时,X在(0,1)时是否有解 */
double Y;
double X=0 ,big_x=1.0,small_x=0,tmp_X=1;
unsigned int tmp=0;
printf("Please enter Y:");
scanf("%lf",Y);
if(fun_math(1) = Y fun_math(0) = Y)
{
while(tmp_X != X)
{
X =(big_x + small_x)/2;
if(fun_math(X)==Y) break;
if(fun_math(X)Y) big_x = X;
else small_x = X;
tmp_X = X ;
X =(big_x + small_x)/2;
}
printf("X = %.6lf",X);
}
else printf("while Y=%lf, X(0,1) on results\n",Y);
return 0;
}
怎么通过C语言实现用不动点迭代方法解超越方程 x = 2 sin x的根,求指点
显然0是方程的根,然后用牛顿法,从1.0和-1.0去迭代
得到1.895494 和-1.895494两个解
验证一下
#include stdio.h
#include math.h
#define DX 0.001
double g(double x) {
return 2 * sin(x) - x;
}
double Dg(double x) {
return (g(x + DX) - g(x)) / DX;
}
double f(double x) {
return x - (g(x) / Dg(x));
}
int good(double a, double b) {
return fabs(a - b) 0.0000001;
}
double fixpoint(double x) {
double next = f(x);
if (good(next, x))
return next;
else
return fixpoint(next);
}
int main() {
printf("%f\n", fixpoint(1.0));
printf("%f\n", fixpoint(-1.0));
return 0;
}
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: c语言不动点求解函数零点 怎么计算函数不动点
本文地址: https://pptw.com/jishu/3099.html