⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计7256字,阅读大概需要10分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
⏰个人网站:https://jerry-jy.co/❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我
人工智能数学与代码实现--数值分析3(拟合)
人工智能数学与代码实现–数值分析3(拟合)
实验环境
-
Oracle Linux 7.4
-
Python 3
实验目的
-
基于Python实现非线性方程求根
-
基于Python实现非线性方程组求根
知识点
-
非线性方程求根
-
非线性方程组求根
实验分析
任务实施过程
一、打开Jupyter,并新建python工程
1.桌面空白处右键,点击Konsole打开一个终端
2.切换至/experiment/jupyter
目录
cd experiment/jupyter
3.启动Jupyter,root用户下运行需加–allow-root
jupyter notebook --ip=127.0.0.1 --allow-root
4.依次点击右上角的 New,Python 3新建python工程
5.点击Untitled,在弹出框中修改标题名,点击Rename确认
二、非线性方程求根
1. 二分法求解非线性方程
基于Python用二分法求解方程2.5x^2 −15x−100=0
import numpy as np
# 定义求解函数
def f1(x):
'''
x:表示函数的未知数x。
'''
return(2.5*x**2-15*x-100)
# 定义二分法函数
def dichotomy(a,b,preci_ratio = 10**-2):
'''
a,b :表示二分法的区间。
preci_ratio:表示精确率。默认为10**-2
'''
# 判定方程在区间内是否至少一个解
if (f1(a) != 0) & (f1(b) != 0) & (f1(a) * f1(b) < 0):
result = []
# 判定是否已经满足精确率
while (np.abs((b - a))/2) >= preci_ratio:
c = (a+b)/2.0
pre = []
pre.extend([a,b,c])
if f1(a)*f1((c))>0:
a=c
elif f1(a)*f1((c)) < 0:
b = c
else:
a = b = c
pre.append(f1(c))
result.append(pre)
print(' a b (a+b)/2 f(x)')
# 将返回值变为array,方便查看
return(np.array(result))
print(dichotomy(4,14,0.01))
import numpy as np
# 定义求解函数
def f1(x):
'''
x:表示函数的未知数x。
'''
return(2.5*x**2-15<