
正文
python牛顿法求函数 牛顿法 python
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
python牛顿法求多项式的根
#includeiostream.h
#includemath.h
#includeconio.h
const int N=200;
//带入原函数后所得python牛顿法求函数的值
double f(float x)
{
return (x*x*x-1.8*x*x+0.15*x+0.65);
}
//带入一阶导函数后所得的值
double f1(double x)
{
return (3*x*x-3.6*x+0.15);
}
//牛顿迭代函数
double F(double x)
{
double x1;
x1=x-1.0*f(x)/f1(x);
return (x1);
}
void main()
{
double x0,D_value,x1,y[4];
int k=0,count=0;
for(;;)
{
if(count==3)break;
cout"输入初始值:";
cinx0;
do
{
k++;
x1=F(x0);
D_value=fabs(x1-x0);
x0=x1;
}
while((D_value0.000005)(k=N));
for(int j=0,flag=0;jcount;j++)
{
if(fabs(y[j]-x1)0.000005)
{ flag=1;
cout"该数值附近的根已经求出,请重新换近似值"endl;
break;
}
}
if(flag==1)
continue;
else
{
cout"方程的一个根python牛顿法求函数:"x1","" 迭代次数为:"kendl;
y[count]=x1;
count++;
}
//else
//cout"计算失败!"endl;
}
}
//你的程序其实没问题,牛顿迭代法本身循环一次只能找到一个答案,只要再建一个循环控制使
//用迭代法的次数和判断根的个数就行。python牛顿法求函数我又加python牛顿法求函数了一个判断是否有重复的根的循环。
//希望能对你有所帮助。
相关问答
Q1: 想用python来求解牛顿插值问题,编了一段程序,其中有些错误看不出来,恳请大佬指出错误,代码如下
import matplotlib.pyplot as plt
from pylab import mpl
import math
"""
牛顿插值法
插值的函数表为
xi -28.9, -12.2, 4.4, 21.1, 37.8
f(xi) 2.2, 3.9, 6.6, 10.3, 15.4
"""
x=[-28.9,-12.2,4.4,21.1,37.8]
y=[2.2,3.9,6.6,10.3,15.4]
"""计算4次差商的值"""
def Four_time_difference_quotient(x, y):
i = 0 # i记录计算差商的次数
quotient = [0, 0, 0, 0, 0,]
while i 4:
j = 4
while j i:
if i == 0:
quotient[j]=((y[j]-y[j-1])/(x[j]-x[j-1]))
else:
quotient[j] = (quotient[j]-quotient[j-1])/(x[j]-x[j-1-i])
j -= 1
i += 1
return quotient;
def function(data):
return x[0]+parameters[1]*(data-0.4)+parameters[2]*(data-0.4)*(data-0.55)+\
parameters[3]*(data-0.4)*(data-0.55)*(data-0.65)\
+parameters[4]*(data-0.4)*(data-0.55)*(data-0.80)
"""计算插值多项式的值和相应的误差"""
def calculate_data(x,parameters):
returnData=[];
for data in x:
returnData.append(function(data))
return returnData
"""画函数的图像
newData为曲线拟合后的曲线
"""
def draw(newData):
plt.scatter(x,y,label="离散数据",color="red")
plt.plot(x,newData,label="牛顿插值拟合曲线",color="black")
plt.scatter(0.596,function(0.596),label="预测函数点",color="blue")
plt.title("牛顿插值法")
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.legend(loc="upper left")
plt.show()
parameters=Four_time_difference_quotient(x, y)
yuanzu=calculate_data(x,parameters)
draw(yuanzu)
Q2: python逻辑回归怎么求正系数
Python 逻辑回归求正系数的方法可以分为两种python牛顿法求函数:
1. 使用线性模型的求解方法:可以使用sklearn中的LogisticRegression类来求解正系数python牛顿法求函数,调用其中的fit()方法就可以求解出正系数。
2. 使用梯度下降法:可以自己实现梯度下降法python牛顿法求函数,通过不断迭代更新正系数,最终获得最优的正系数。
Q3: 求解这道题目
令f(x)=2sin(x+π/3)-x,牛顿法求解f(x)=0,过程为:
f'(x)=2cos(x+π/3)-1,任取初值x₀,令x₁=x₀-f(x₀)/f'(x₀)
然后迭代执行:x₀=x₁,x₁=x₀-f(x₀)/f'(x₀),直到|x₁-x₀|=10⁻⁸,x₁即为所求
C语言代码如下:
#includestdio.h
#includemath.h
#define PI 3.141592653589793
int main() {
double x0 = PI; // 初值任取
double x1 = x0-(2*sin(x0+PI/3)-x0)/(2*cos(x0+PI/3)-1);
while (fabs(x1 - x0) 1e-8) {
x0 = x1;
x1 = x0-(2*sin(x0+PI/3)-x0)/(2*cos(x0+PI/3)-1);
}
printf("%.15f\n", x1);
return 0;
}
运行结果如图:
python代码如下:
import math
x0 = math.pi # 初值任取
x1 = x0-(2*math.sin(x0+math.pi/3)-x0)/(2*math.cos(x0+math.pi/3)-1)
while abs(x1-x0) 1e-8:
x0 = x1
x1 = x0-(2*math.sin(x0+math.pi/3)-x0)/(2*math.cos(x0+math.pi/3)-1)
print(x1)
运行结果为:
与C语言结果一致~
python牛顿法求函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于牛顿法 python、python牛顿法求函数的信息别忘了在本站进行查找喔。






