1.要求
给定非线性方程
分别编写 Newton 迭代 (通常也称 Newton-Raphson 迭代)
和 Damped-Newton (DN) 迭代
(其中阻尼参数 τ : 0 < τ < 1)
的程序. 取阻尼参数τ = 0.5, 两种迭代方法的初始点 x0 依次取值为 −4, −3, −2, −1, 0, 1, 2, 3, 5, 7, 9;
停止条件为 |f(xk)| < 10−8 或 迭代步数 k > 104 (此时, 可认为迭代失败)
求迭代步数和数值解
2.Matlab代码
#include<stdio.h> #include<math.h> double fun1(double x) { return (atan(x)+sin(x)-1); } double fun2(double x) { return (1/(1+x*x)+cos(x)); } int main() { int j,n; double x, y; for(j=1;j<=11;j++){ printf("x="); scanf("%lf",&x); n=0; while (fabs(fun1(x))>=pow(10,-8)) { y = x - fun1(x) / fun2(x); x = y; n=n+1; if(n>10000){ printf("error!\n"); break; } } printf("x=%.8f,f(x)=%.8f,n=%d\n",x,fun1(x),n); } for(j=1;j<=11;j++){ printf("x="); scanf("%lf",&x); n=0; while (fabs(fun1(x))>=pow(10,-8)) { y = x - 0.5*fun1(x) / fun2(x); x = y; n=n+1; if(n>10000){ printf("error!\n"); break; } } printf("x=%.8f,f(x)=%.8f,n=%d\n",x,fun1(x),n); } return 0; }
今天的文章
C | Lab3——Newton迭代和Damped-Newton迭代分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/87912.html