牛顿法求方程的根(C&Matlab&Python语言实现)

x0=1;

do

{

x=x0; //初值

f1=pow(x,7)-28*pow(x,4)+14;

f2=7pow(x,6)-112pow(x,3); //对函数 f1 求导

x0=x-f1/f2; //迭代公式

}

while(fabs(x0-x)>1e-5);

printf(“%9.8f\n”,x0);

return 0;

}

[注]C语言中math.h的全面总结

(2)Matlab实现

%Newton 迭代法

x=1;

while abs(x.(7)-28*x.(4)+14)>0.00001

x=x-(x.(7)-28*x.(4)+14)/(7*x.(6)-112*x.(3));

end

vpa(x,8)

[注]Matlab中vpa()函数的应用。函数的应用。")(本例中精度为保留8位有效数字)

(3)Python实现

import numpy as np

from sympy import *

import matplotlib.pyplot as plt

plt.style.use(‘ggplot’) #设置绘图风格

plt.rcParams[‘font.sans-serif’] = [‘Microsoft YaHei’] #处理中文乱码

plt.rcParams[‘axes.unicode_minus’]=False #坐标轴负号的处理

x = symbols(‘x’)

x1= 0 #区间下限

x2= 0.11 #区间上限

x0 = (x1+x2)/2 #迭代初始值

x_list = [x0]

i = 0

def f(x):

f = x7-28*x4+14

return f

x_values = []

y_values = []

while True:

if diff(f(x),x).subs(x,x0) == 0: #导数为零

print(‘极值点:’,x0)

break

else:

x0 = x0 - f(x0)/diff(f(x),x).subs(x,x0) #diff()求导,subs()指定位置求导

x_list.append(x0)

‘’'if len(x_list) > 1:

i += 1

error = abs((x_list[-1] - x_list[-2]) / x_list[-1])

if error < 10 ** (-6):

print(f’迭代第{i}次后,误差小于10^-5’)

break

else:

pass’‘’

#误差为零时:

if len(x_list) > 1:

i += 1

error = abs((x_list[-1] - x_list[-2]) / x_list[-1])

x_values.append(i)

y_values.append(error)

if error == 0:

print(f’迭代第{i}次后,误差等于0’)

break

else:

pass

print(f’所求方程式的根为{x_list[-1]}')

#横坐标是迭代次数,纵坐标是误差值

plt.plot(x_values,

y_values,

color = ‘steelblue’, # 折线颜色

marker = ‘*’, # 折线图中添加圆点

markersize = 3, # 点的大小

)

修改x轴和y轴标签

plt.xlabel(‘迭代次数’)

plt.ylabel(‘误差值’)

显示图形

plt.show()

迭代第44次后,误差等于0

所求方程式的根为3.03057732650459

(4)Python中Sympy库

在(3)中有一个Python中很重要的一个库:sympy。遇到复杂计算找python绝对不让你失望,sympy是一个Python的科学计算库,用一套强大的符号计算体系完成诸如多项式求值、求极限、解方程、求积分、微分方程、级数展开、矩阵运算等等计算问题。虽然Matlab的类似科学计算能力也很强大,但是Python以其语法简单、易上手、异常丰富的三方库生态,个人认为可以更优雅地解决日常遇到的各种计算问题。

SymPy是一个符号计算的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。它完全由Python写成,不依赖于外部库。

SymPy支持符号计算、求导,求偏导,高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散数学、几何学、概率与统计、物理学等方面的功能。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

nimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值