标题:python+数值分析绘图求解
只看楼主
郭阳yang
Rank: 1
等 级:新手上路
帖 子:24
专家分:9
注 册:2020-10-24
结帖率:100%
已结贴  问题点数:20 回复次数:3 
python+数值分析绘图求解
搜索更多相关主题的帖子: 绘图 数值 python 分析 
2022-03-31 17:14
古123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:219
专家分:1098
注 册:2017-2-5
得分:20 
不怎么懂拉格朗日多项式插值,你看看对不对
程序代码:
import numpy as np
import matplotlib.pyplot as plt
from pylab import *

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set(xlim=[-5,5],ylim=[0,2])

def lagrange(x, y, num_points, x_test):
    '''
        不太懂拉格朗日多项式插值,网上找到一个函数,不知道对不对
        函数网址:https://zhuanlan. :param x:
    :param y:
    :param num_points:
    :param x_test:
    :return:
    '''
    # 所有的基函数值,每个元素代表一个基函数的值
    l = np.zeros(shape=(num_points, ))

    # 计算第k个基函数的值
    for k in range(num_points):
        # 乘法时必须先有一个值
        # 由于l[k]肯定会被至少乘n次,所以可以取1
        l[k] = 1
        # 计算第k个基函数中第k_个项(每一项:分子除以分母)
        for k_ in range(num_points):
            # 这里没搞清楚,书中公式上没有对k=k_时,即分母为0进行说明
            # 有些资料上显示k是不等于k_的
            if k != k_:
                # 基函数需要通过连乘得到
                l[k] = l[k]*(x_test-x[k_])/(x[k]-x[k_])
            else:
                pass
    # 计算当前需要预测的x_test对应的y_test值
    L = 0
    for i in range(num_points):
        # 求所有基函数值的和
        L += y[i]*l[i]
    return L

# 绘制函数图形
fun_x = np.linspace(-5,5,1000)
fun_y = [1/(1+i**2) for i in fun_x]

plt.plot(fun_x,fun_y)

# 当n取不同值的时候,使用不同颜色
color = {2:'red',4:'black',6:'green',8:'yellow',10:'purple'}
for n in [2,4,6,8,10]:
    x = []
    y = []
    # 计算Xk
    for k in range(n+1):
        xk = -5 + (10 / n) * k
        x.append(xk)
    # 计算y
    for i in x:
        y.append(1 / (1+i**2))

    # -5到5等距分n+1节点
    x_test = list(np.linspace(-5,5,n+1))
    y_predict = [lagrange(x,y,len(x),x_i) for x_i in x_test]

    plt.scatter(x_test,y_predict,color=color.get(n),marker='+')
plt.show()
2022-03-31 19:41
郭阳yang
Rank: 1
等 级:新手上路
帖 子:24
专家分:9
注 册:2020-10-24
得分:0 
回复 2楼 古123
可是要在一张图上画出所有的L(x)和f(x)的图形啊
我再研究研究

[此贴子已经被作者于2022-4-1 09:48编辑过]

2022-04-01 09:39
pvm2000
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:24
帖 子:159
专家分:256
注 册:2022-12-22
得分:0 
回复 2楼 古123
厉害
2022-12-31 01:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508738-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062062 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved