C语言复习---迭代法,牛顿迭代法,二分法求根
一:用迭代法求 x=√a。求平方根的迭代公式为:X(n+1)=(Xn+a/Xn) /2。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h> int main()
{
double x1, x2;
float a;
scanf("%f", &a);
x2 = 1.0;
do
{
x1 = x2;
x2 = (x1 + a / x1) / 2;
} while (fabs(x1-x2)>pow(10,-5));
printf("value:%lf", x2);
system("pause");
return ;
}
二:用牛顿迭代法求方程在1.5附近的根(2x3-4x2+3x-6=0)
例:方程求根牛顿迭代法 求方程 f(x)=x3+x2-3x-3=0在1.5附近的根
f(x)=x^+x^-3x-
f'(x)=3x^2+2x-3
x(n+)=xn-f(xn)/f'(xn)
令x1=1.5
x2=1.777778
x3=1.733361
x4=1.732052
x5=1.732051
x6=1.732051
如果精确到0.,则x=1.732051
准确值=根号3
重要公式

#include <stdio.h>
#include <stdlib.h>
#include <math.h> int main()
{
double x1=, x2;
double fx1, fx2;
x2 = 1.5;
while (fabs(x1 - x2)>=1e-)
{
x1 = x2;
fx1 = * x1*x1*x1 - * x1*x1 + * x1 - ; //f(xn)
fx2 = * x1*x1 - * x1 + ; //f(xn)'
x2 = x1 - fx1 / fx2;
}
printf("value:%lf", x2);
system("pause");
return ;
}
三:二分法求方程的根
给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
确定区间[a,b],验证f(a)·f(b)<0(这是前提,选取的区间必须满足这个条件),给定精确度ξ.
求区间(a,b)的中点c.
计算f(c). () 若f(c)=,则c就是函数的零点;
() 若f(a)·f(c)<,则令b=c;
() 若f(c)·f(b)<,则令a=c.
() 判断是否达到精确度ξ:即若|a-b|<ξ,则得到零点近似值a(或b),否则重复2-.
#include <stdio.h>
#include <stdlib.h>
#include <math.h> double fx(double x)
{
return * x*x*x - * x*x + * x - ;
} int main()
{
double x1 , x2;
double fx1, fx2;
double e = 1e-; do
{
printf("enter (x1,x2):\n");
scanf("%lf", &x1);
scanf("%lf", &x2);
if (x1>x2)
{
double temp = x1;
x1 = x2;
x2 = temp;
}
fx1 = fx(x1);
fx2 = fx(x2);
} while (fx1*fx2>); if (fabs(fx1) < e)
printf("solution1:%lf\n", x1);
else if (fabs(fx2) < e)
printf("solution2:%lf\n", x2);
else
{
while (fabs(x1 - x2) >= e)
{
double mid = (x1 + x2) / ;
if (fx(mid)*fx2 < )
x1 = mid;
else
x2 = mid;
}
printf("solution3:%lf", x2);
}
system("pause");
return ;
}
C语言复习---迭代法,牛顿迭代法,二分法求根的更多相关文章
- 【数值计算方法】二分法求根的C++简单实现
给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下: 1 确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ. 2 求区间(a,b)的中点c. 3 计算f(c). (1) 若f( ...
- python二分法、牛顿法求根
二分法求根 思路:对于一个连续函数,左值f(a)*右值f(b)如果<0,那么在这个区间内[a,b]必存在一个c使得f(c)=0 那么思路便是取中间点,分成两段区间,然后对这两段区间分别再比较,跳 ...
- YTU 2405: C语言习题 牛顿迭代法求根
2405: C语言习题 牛顿迭代法求根 时间限制: 1 Sec 内存限制: 128 MB 提交: 562 解决: 317 题目描述 用牛顿迭代法求根.方程为ax3+bx2+cx+d=0.系数a,b ...
- C语言之基本算法11—牛顿迭代法求平方根
//迭代法 /* ================================================================== 题目:牛顿迭代法求a的平方根!迭代公式:Xn+1 ...
- C语言之基本算法25—牛顿迭代法求方程近似根
//牛顿迭代法! /* ============================================================ 题目:用牛顿迭代法求解3*x*x*x-2*x*x-16 ...
- 141. Sqrt(x)【牛顿迭代法求平方根 by java】
Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 ...
- Atitit 迭代法 “二分法”和“牛顿迭代法 attilax总结
Atitit 迭代法 "二分法"和"牛顿迭代法 attilax总结 1.1. ."二分法"和"牛顿迭代法"属于近似迭代法1 1. ...
- 【清橙A1094】【牛顿迭代法】牛顿迭代法求方程的根
问题描述 给定三次函数f(x)=ax3+bx2+cx+d的4个系数a,b,c,d,以及一个数z,请用牛顿迭代法求出函数f(x)=0在z附近的根,并给出迭代所需要次数. 牛顿迭代法的原理如下(参考下图) ...
- 基于visual Studio2013解决C语言竞赛题之0422牛顿迭代法
题目
随机推荐
- 【源码】进入ASP.NET MVC流程的大门 - UrlRoutingModule
UrlRoutingModule的功能 在ASP.NET MVC的请求过程中,UrlRoutingModule的作用是拦截当前的请求URL,通过URL来解析出RouteData,为后续的一系列流程提供 ...
- 微信小程序在当前页面设置其他页面的数据
如果其他页面用到的数据是 globalData, 那么直接在当前页面修改 globalData 数据即可. 如果其他页面用到的数据是 storage, 那么直接在当前页面修改 storage 数据即可 ...
- Sqlserver_分组
create table orders ( id int, orderName varchar() ) go create table cars ( id ,) , ordersid int, pna ...
- DRF框架获取参数的方式
DRF获取参数的方式 例如url url(r'^demo/(?P<word>.*)/$', DemoView.as_view()) 在类视图中获取参数 url:http://127.0.0 ...
- YQCB冲刺第二周第五天
今天的任务为实现由用户设置每月初始额度的功能. 昨天的任务为实现精准查账的功能. 遇到的问题为界面的布局以及精准查账按什么标准查找,最后决定按分类查账与时间查账相结合. 站立会议 任务面板
- 第二阶段冲刺——seven
个人任务: 马佳慧:设计界面背景,统一风格. 王金萱:整体运行测试上传到公网上的程序. 季方:修改优化已上传的代码. 司宇航:整体调试程序继续优化. 站立会议: 任务看板和燃尽图:
- Linux 基础一(系统分区、格式化与挂载)
1.Linux 基础之系统分区与格式化 讲分区之前,先说一下硬盘结构:硬盘(机械)的横截面是一个圆,并且被分成等大小的扇区,每个扇区的大小是 512Byte,其中有 446Byte 被用来存储启动信息 ...
- Beta阶段敏捷冲刺①
1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 1.1昨天已完成的工作. 姓名 昨天已完成的工作 徐璐琳 熟悉"慧记" ...
- [置顶网]POWER 9为云与智能打造强大引擎
POWER 9为云与智能打造强大引擎 关键字: 浪潮商用机器 POWER9 至顶网服务器频道 (文/董培欣): 从全球角度看,政治经济波动持续.逆全球化趋势抬头.技术加速变革商业等因素促使企业需要数字 ...
- IIS 下 搭建简单的FTP服务器
1. 修改用户策略, 创建简单用户密码 命令行输入 gpedit.msc 打开组策略 位置 2. 创建一个FTP使用的用户 net user zhaobsh Test6530 /add 3. 安装II ...