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牛顿迭代法
题目
随机推荐
- 解决 div 设为 inline-block 后标题不对齐
vertical-align 属性设置元素的垂直对齐方式.该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐.允许指定负长度值和百分比值.这会使元素降低而不是升高.在表单元格中,这个属性会设置 ...
- 使用Windows Server 2003搭建一个asp+access网站
鼠标右键->新建->网站->下一步->描述(随便给一个,这里我以test为例) ->下一步->下一步->输入主目录的路径,默认路径下是C:\Inetpub\w ...
- LAXCUS大数据操作系统节点挂掉后的处理
昨天回公司加班跑一个LAXCUS大数据应用,JVM直接挂了,没有留下任何异常信息,查看代码,也没有内存泄漏的问题.百思不得姐,只好去求教LAXCUS大数据操作系统的技术客服,客服查看了故障节点配置.日 ...
- Git多人协作工作流程
前言 之前一直把Git当做个人版本控制的工具使用,现在由于工作需要,需要多人协作维护文档,所以去简单了解了下Git多人协作的工作流程,发现还真的很多讲解的,而且大神也已经讲解得很清楚了,这里就做一个简 ...
- Linux内核分析第一周——计算机是如何工作的
冯诺依曼体系结构 核心思想 1.冯诺依曼是:数字计算机的数制采用二进制:计算机应该按照程序顺序执行. 2.采用二进制作为计算机数值计算的基础,以0.1代表数值.不采用人类常用的十进制计数方法,二进制使 ...
- HTML5遇到的问题
一.Uncaught SyntaxError: Unexpected identifier 解决办法: Uncaught SyntaxError: Unexpected identifier这个问题, ...
- 第二个spring冲刺第3天
今天天气突然变得很冷,所以我们队的人都有少许的不适.加上天气比较冷,我们都不怎么想做.幸好在队长的提醒下,我们终于继续投入研发的工作中.由于市面上的同类软件的数量不少所以我们下载了一些来看,希望能找到 ...
- beta1
组长:吴晓晖 过去两天完成了哪些任务: 代码重构进行中,界面,预计两个beta单位完成 展示GitHub当日代码/文档签入记录 接下来的计划 更加人性化的推荐算法 还剩下哪些任务 有哪些困难 有哪些收 ...
- ns3 myfirst.cc 两个节点点对点通信
首先在ns3.25/examples/tutorial/下找到 first.cc文件,将他拷贝到到scratch目录下. 然后为了方便将代码打出来 /* -*- Mode:C++; c-file-st ...
- CentOS修改主机名字
目录 查看hostnmae 修改hostname 远程别名/etc/hosts 查看hostnmae [root@centos ~]$ hostname centos 修改hostname [root ...