牛顿迭代法(C语言实现)

---

title: 牛顿迭代法
date: 2021-10-15 19:20:43
tags: 算法

牛顿迭代算法

牛顿迭代算法
百度百科上讲述的比较清楚,这里大致介绍一下。
背景:多数方程不存在求根公式,因此求精确根比较复杂,甚至不可解,从而寻找方程的近似解就显得很重要。方法是使用*f(x)*的泰勒级数的前面几项来寻找方程f(x)的根。

牛顿迭代公式

Markdown中Latex数学公式基本语法;设rf(x)=0的根,选取x0作为r的初始近似值,过点\((x0,f(x0))\)做曲线y=f(x)的切线:L:y=f(x0)+f’(x0)(x-x0)Lx轴的交点的横坐标\(x_1=x_0-\frac{f(x0)} {f’(x0)}\) 称x1为r的一次近似值。过点\((x1,f(x1))\)做曲线\(y=f(x)\)的切线x2=x1-\(\frac{f(x1)}{f’(x1)}\);由上式可以迭代求算推导出公式为:\(x_(n+1)=x_n-\frac{f(x_n)}{f’(x_n)}\)根据以上公式便可以编程计算。
例题:P138第十四题

//牛顿迭代法
#include<stdio.h>
#include<math.h>
int main()
{
	float f1, x=1.5, f2,x1;
	int m = 0;
	//f1 = 2 * x * x * x - 4 * x * x + 3 * x - 6;//原函数
	//f2 = 5 * x * x - 8 * x + 3;//原函数一阶导数
	for (int i = 0;i < 30;i++)
	{
		f1 = 2 * x * x * x - 4 * x * x + 3 * x - 6;//原函数
		f2 =  6* x * x - 8 * x + 3;//原函数一阶导数
		x1 = x - (f1 / f2);
		if (fabs(x - x1) < 1e-5)
			break;
		m++;
		x = x1;
		
	}
	printf("%.2f\n",x);
	printf("%d\n",m);
}

至于具体函数需要具体配置,这里算是是实现了牛顿插值公式的思想。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值