第三题暂缺,之后补充。

import matplotlib.pyplot as plt
import numpy as np
import scipy.optimize as so
import sympy as sp x = sp.symbols('x') def calculate(expr_i, expr_j, expr_value,expr_omega):
ans=0
for cnt,v in enumerate(expr_value):
if isinstance(expr_i,(type(x),type(x*x))):
actual_expr_i=expr_i.subs(x, v[0])
elif expr_i==1: # which means 1 or 0
actual_expr_i=1
else:
actual_expr_i=v[1]
if isinstance(expr_j,(type(x),type(x*x))):
actual_expr_j=expr_j.subs(x, v[0])
else: # which means 1
actual_expr_j=1
if type(expr_omega)==type(1):
ans=ans+expr_omega*actual_expr_i*actual_expr_j
else:
ans=ans+expr_omega[cnt]*actual_expr_i*actual_expr_j return ans def least_squares(_psi,_value,_omega):
G=np.empty((len(_psi),len(_psi)))
d=np.empty(len(_psi))
for i,expr_i in enumerate(_psi):
for j,expr_j in enumerate(_psi):
G[i][j]=calculate(expr_i,expr_j,_value,_omega)
d[i]=calculate(0,_psi[i],_value,_omega)
a=np.linalg.solve(G, d.T) # Oh, I love solve()!
ls_f_x=0
for i,element in enumerate(a):
ls_f_x=ls_f_x+element*_psi[i]
return ls_f_x psi=[1,x,x*x,x*x*x]
#psi=[1,x]
value=np.loadtxt('input.txt')
omega=1
#omega=[2,1,3,1,1]
ls_f_x=least_squares(psi,value,omega)
print(ls_f_x)
f_x=1/(1+25*x*x)
# p1=sp.plot(f_x,ls_f_x,(x,-1,1)) """
# using system functions
def func(p,x):
a0,a1,a2,a3 = p
return a0+a1*x+a2*x*x+a3*x*x*x
def err(p,x,y):
return func(p,x)-y
arg_f=(np.array([x[0] for x in value[:,:1]]),np.array([y[0] for y in value[:,1:2]]))
coef_ls = so.leastsq(err, [1,1,1,1], args=arg_f)
print(coef_ls)
system_ls_f_x=0
for i,element in enumerate(coef_ls[0]):
system_ls_f_x=system_ls_f_x+element*psi[i]
print(system_ls_f_x)
p1=sp.plot(f_x,ls_f_x,system_ls_f_x,(x,-1,1),show=False)
p1[1].line_color='r'
p1[2].line_color='g'
p1.show()
""" # problem 2:
fig=plt.figure() value=np.array([[0,1],[0.1,0.41],[0.2,0.50],[0.3,0.61], [0.5,0.91],[0.8,2.02],[1.0,2.46]]) ls_f_x=least_squares(psi,value,omega)
print_f=sp.lambdify(x,ls_f_x,"numpy")
print_x=np.linspace(-1,1,100)
print_y=print_f(print_x)
plt.plot(print_x,print_y,label='x^3') psi=[1,x,x**2,x**3,x**4]
ls_f_x=least_squares(psi,value,omega)
print_f=sp.lambdify(x,ls_f_x,"numpy")
print_y=print_f(print_x)
plt.plot(print_x,print_y,label='x^4') psi=[1,x]
ls_f_x=least_squares(psi,value,omega)
print_f=sp.lambdify(x,ls_f_x,"numpy")
print_y=print_f(print_x)
plt.plot(print_x,print_y,label='kx+b') plt.scatter(np.array([x[0] for x in value[:,:1]]),np.array([y[0] for y in value[:,1:2]]),marker='x',label='data')
plt.legend(loc='best')
plt.savefig('output.svg')

「学习记录」《数值分析》第三章计算实习题(Python语言)的更多相关文章

  1. 「学习记录」《数值分析》第二章计算实习题(Python语言)

    在假期利用Python完成了<数值分析>第二章的计算实习题,主要实现了牛顿插值法和三次样条插值,给出了自己的实现与调用Python包的实现--现在能搜到的基本上都是MATLAB版,或者是各 ...

  2. 「学习笔记」FFT 快速傅里叶变换

    目录 「学习笔记」FFT 快速傅里叶变换 啥是 FFT 呀?它可以干什么? 必备芝士 点值表示 复数 傅立叶正变换 傅里叶逆变换 FFT 的代码实现 还会有的 NTT 和三模数 NTT... 「学习笔 ...

  3. 「学习笔记」Treap

    「学习笔记」Treap 前言 什么是 Treap ? 二叉搜索树 (Binary Search Tree/Binary Sort Tree/BST) 基础定义 查找元素 插入元素 删除元素 查找后继 ...

  4. 「学习笔记」字符串基础:Hash,KMP与Trie

    「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...

  5. 「学习笔记」Min25筛

    「学习笔记」Min25筛 前言 周指导今天模拟赛五分钟秒第一题,十分钟说第二题是 \(\text{Min25}​\) 筛板子题,要不是第三题出题人数据范围给错了,周指导十五分钟就 \(\text{AK ...

  6. 「学习笔记」FFT 之优化——NTT

    目录 「学习笔记」FFT 之优化--NTT 前言 引入 快速数论变换--NTT 一些引申问题及解决方法 三模数 NTT 拆系数 FFT (MTT) 「学习笔记」FFT 之优化--NTT 前言 \(NT ...

  7. KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册

    计算监控属性构造参考 计算监控属性可使用以下形式进行构造: ko.computed( evaluator [, targetObject, options] ) - 这种形式是创建一个计算监控属性最常 ...

  8. 精读《C++ primer》学习笔记(第一至三章)

    第一章: 重要知识点: 类型:一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算:所以说类定义,实际上就是定义了一种数据类型: >>和<<运算符返回其左侧的运算 ...

  9. 「学习笔记」wqs二分/dp凸优化

    [学习笔记]wqs二分/DP凸优化 从一个经典问题谈起: 有一个长度为 \(n\) 的序列 \(a\),要求找出恰好 \(k\) 个不相交的连续子序列,使得这 \(k\) 个序列的和最大 \(1 \l ...

随机推荐

  1. HDU 5258 数长方形【离散化+暴力】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5258 数长方形 Time Limit: 2000/1000 MS (Java/Others)    Me ...

  2. 生成二维码、微信自定义分享到朋友圈、ipa不从应用商店安装

    生成二维码网址:http://www.liantu.com/ 微信自定义分享到朋友圈:http://www.cnblogs.com/memor-y/p/6728179.html ipa不从应用商店安装 ...

  3. C# .Net Framework4.5中配置和使用managedCUDA及常见问题解决办法

    主要参考英文帖子.我就不翻译了哈.很容易懂的. 先说明我的运行平台: 1.IDE:Visual Studio 2012 C# .Net Framework4.5,使用默认安装路径: 2.显卡类型:NV ...

  4. EF Ccore 主从配置 最简化

    业务需要 配置一主多从数据库 读写分离  orm用的ef core , 把思路和代码写下 1. 配置2个数据库上下文 ETMasterContext  ETSlaveContext(把增删改功能禁用掉 ...

  5. js 原生获取Class元素

    function getElementsByClassName(n) { var classElements = [] allElements = document.getElementsByTagN ...

  6. js面向对象编程——创建对象

    JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象. 当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找 ...

  7. JavaScript js调用堆栈(一)

    本文主要介绍JavaScript程序内部的执行机制 首先先了解什么是执行上下文 执行上下文就是当前JavaScript代码被解析和执行是所在环境的抽象概念,JavaScript中运行任何的代码都是在执 ...

  8. python学习笔记--变量和运算符

    一.变量命名规则 1.字母.数字.下划线组成 2.不以数字开头 3.关键字(也叫保留字),不能用作变量名 4.遵循PEP8命名规范 二.变量赋值 1.赋值符号 = 2.多重赋值 x=y=123 3.多 ...

  9. TIDB3 —— 三篇文章了解 TiDB 技术内幕 - 说计算

    原文地址:https://pingcap.com/blog-cn/tidb-internal-2/ 关系模型到 Key-Value 模型的映射 在这我们将关系模型简单理解为 Table 和 SQL 语 ...

  10. 菜鸟笔记 -- Chapter 6.2.2 标识符

    6.2.2  标识符 Java中使用标识符来作为类.方法.字段的名称,在Java基础中我们已经简单了解过标识符的定义方法和驼峰命名.本节我们来研究一下标识符的长度问题,难道类名.方法名都可以无限长吗? ...