太阳能电池特性及其应用
中南民族大学-通信工程2024-大学物理下实验
目录
- 代码实现
- 结果显示
🛠工具使用
MarsCode(插件,集成在PyCharm);
python编程(豆包AI智能体)
💻编程改进
此处是用「Matplotlib」来作图,时间有限未能完全还原老师的要求。后面将尝试用「Seaborn」 。
「Seaborn」 继承了「Matplotlib」 的强大功能,同时提供了更高级的接口和更美观的默认样式;而且易于使用,代码简洁。
代码实现
# 太阳能电池特性
import math
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats# 单晶硅
U = [0.0, 0.5, 1.0, 1.5, 2.0,2.2, 2.4, 2.6, 2.8, 3.0,3.2, 3.4, 3.6]
I1 = [0, 0.011, 0.022, 0.036, 0.051,0.058, 0.066, 0.074, 0.083, 0.094,0.107, 0.124, 0.145]
lnI1 = []
for i in range(len(I1)):if i == 0:continuelnI = math.log(I1[i])lnI1.append(lnI)# print(f'{lnI:.2f}')# 多晶硅
I2 = [0, 0.002, 0.005, 0.012, 0.023,0.029, 0.036, 0.045, 0.055, 0.067,0.082, 0.098, 0.116]
lnI2 = []
for i in range(len(I2)):if i == 0:continuelnI2.append(math.log(I2[i]))# print(# f"i{i+1:<2} = {I2[i]} lnI{i+1:<2} = {lnI:.2f}"# )# 非晶硅
I3 = [0, 0.001, 0.006, 0.050, 0.140,0.245, 0.396, 0.582, 0.807, 1.280,2.7, 6.1, 12.9]
lnI3 = []
for i in range(len(I3)):if i == 0:continuelnI3.append(math.log(I3[i]))# print(# f"i{i+1:<2} = {I3[i]} lnI{i+1:<2} = {lnI:.2f}"# )# 线性拟合求理想因子
# 转换为numpy数组
U = np.array(U[4:])
lnI1 = np.array(lnI1[3:])
lnI2 = np.array(lnI2[3:])
lnI3 = np.array(lnI3[3:])
# 绘制散点图
plt.subplot(3, 2, 2)
plt.scatter(U, lnI1, label='mc-Si')
plt.scatter(U, lnI2, label='pc-Si', marker='s')
plt.scatter(U, lnI3, label='a-Si', marker='^')
# 线性拟合
slope1, intercept1, r_value1, p_value1, std_err1 = stats.linregress(U, lnI1)
slope2, intercept2, r_value2, p_value2, std_err2 = stats.linregress(U, lnI2)
slope3, intercept3, r_value3, p_value3, std_err3 = stats.linregress(U, lnI3)
# 绘制线性拟合曲线
plt.plot(U, slope1 * U + intercept1, color='blue')
plt.plot(U, slope2 * U + intercept2, color='red')
plt.plot(U, slope3 * U + intercept3, color='green', linestyle='--')
plt.plot(U, lnI3, color='green')
# 添加图例和标签
plt.annotate(f"y={slope3:.2f}x{intercept3:.2f}\nR²={r_value3:.2f}", xy=(3.5, 1.6))
plt.annotate(f"y={slope2:.2f}x{intercept2:.2f}\nR²={r_value2:.2f}", xy=(3.5,-4))
plt.annotate(f"y={slope1:.2f}x{intercept1:.2f}\nR²={r_value1:.2f}", xy=(U[1],lnI1[1]))
plt.grid(True)
plt.title('Linear fitting for device\'s ideal factor')
plt.legend()
plt.xlabel('U/V')
plt.ylabel('lnI')
# 显示图形
print(f"Linear Fit Slope: {slope1} n:{26 / slope1}")
print(f"Linear Fit Slope: {slope2} n:{26 / slope2}")
print(f"Linear Fit Slope: {slope3} n:{26 / slope3}")# 太阳能电池暗态伏安特性
# 转换为numpy数组
U = [0.0, 0.5, 1.0, 1.5, 2.0,2.2, 2.4, 2.6, 2.8, 3.0,3.2, 3.4, 3.6]
U = np.array(U)
ax1 = plt.subplot(3, 2, 1)# 创建第一个 y 轴
ax1.scatter(U, I1, label='mc-Si') # 单晶硅
ax1.plot(U, I1) # 单晶硅
ax1.scatter(U, I2, marker='s',label='pc-Si')
ax1.plot(U, I2, ) # 多晶硅
ax1.set_xlabel('U/V')
ax1.set_ylabel('I/mA')# 创建第二个 y 轴
ax2 = plt.twinx()
ax2.scatter(U, I3, color='green', marker='^', label='a-Si')
ax2.plot(U, I3, color='green') # 非晶硅
# 添加箭头
# ax2.annotate("",xy=(3.5,5), xytext=(U[-2],I3[-2]), arrowprops=dict(facecolor='black'))ax1.grid(True)
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, loc='upper left')
plt.title('Solar cell dark state voltage-current characteristic')# 光照下太阳能电池输出特性
# 单晶硅
I11 = [0.061, 0.603, 1.492, 3.0, 5.8,7.2, 9.4, 11.1, 13.5, 16.5,20.0, 20.5, 20.5, 20.6, 20.8,20.9, 21.2, 21.2, 21.3, 21.5]
U11 = [6.11, 6.05, 6.01, 5.95, 5.84,5.77, 5.68, 5.61, 5.43, 5.00,4.02, 2.06, 1.66, 1.25, 0.84,0.43, 0.22, 0.14, 0.03, 0.01]
P1 = []
for i, u in zip(I11, U11):p = i * u# print(f"i = {i:.2f} U = {u:.2f} P = {p:.2f}")P1.append(p)# 多晶硅
I22 = [0.057, 0.573, 1.425, 2.7, 5.0,6.2, 8.0, 9.4, 11.4, 14.4,18.9, 24.3, 24.6, 24.7, 24.7,24.7, 24.6, 24.5, 24.5, 24.4]
U22 = [5.78, 5.77, 5.75, 5.35, 5.07,4.97, 4.82, 4.72, 4.58, 4.34,3.80, 2.46, 1.994, 1.504, 1.01,0.512, 0.264, 0.166, 0.04, 0.018]
P2 = []
for i, u in zip(I22, U22):p = i * u# print(f"i = {i:<5.2f} U = {u:.2f} P = {p:.2f}")P2.append(p)# 非晶硅
I33 = [0.031, 0.306, 0.760, 1.502, 3.0,3.7, 4.8, 5.6, 6.7, 8.2,9.6, 10.5, 10.6, 10.7, 10.6,10.7, 10.6, 10.7, 10.8, 10.8]
U33 = [3.1, 3.08, 3.06, 3.03, 2.97,2.93, 2.87, 2.81, 2.7, 2.47,1.93, 1.06, 0.852, 0.69, 0.428,0.22, 0.113, 0.072, 0.018, 0.008]
P3 = []
for i, u in zip(I33, U33):p = i * u# print(f"i = {i:<5.2f} U = {u:.2f} P = {p:.2f}")P3.append(p)# 输出功率和输出电压的关系
plt.subplot(3, 2, 5)
plt.scatter(U11, P1, label='mc-Si')
plt.plot(U11, P1)
plt.scatter(U22, P2, label='pc-Si', marker='s')
plt.plot(U22, P2)
plt.scatter(U33, P3, label='a-Si', marker='^')
plt.plot(U33, P3)plt.grid(True)
plt.legend()
plt.title('Output power and output voltage relationship')
plt.xlabel('U/V')
plt.ylabel('P/mW')# 光照下的太阳能电池输出特性
plt.subplot(3, 2, 6)
plt.scatter(U11, I11, label='mc-Si')
plt.plot(U11, I11)
plt.scatter(U22, I22, label='pc-Si', marker='s')
plt.plot(U22, I22)
plt.scatter(U33, I33, label='a-Si', marker='^')
plt.plot(U33, I33)plt.grid(True)
plt.legend(loc='upper right')
plt.title('Output characteristics of solar cells under illumination')
plt.xlabel('U/V')
plt.ylabel('I/mA')# 光照强度对开路电压的影响
I = [816, 323, 183, 122, 86, 67, 52, 42, 35, 29]
# 单晶硅
Uoc1 = [6.17, 5.82, 5.56, 5.41, 5.30, 5.22, 5.14, 5.08, 5.01, 4.96]
# 多晶硅
Uoc2 = [6.13, 5.82, 5.57, 5.40, 5.27, 5.18, 5.08, 5.01, 4.93, 4.86]
# 非晶硅
Uoc3 = [3.74, 3.38, 3.29, 3.22, 3.16, 3.11, 3.06, 3.01, 2.97, 2.93]plt.subplot(3, 2, 3)
plt.scatter(I, Uoc1, label='mc-Si')
plt.plot(I, Uoc1)
plt.scatter(I, Uoc2, label='pc-Si', marker='s')
plt.plot(I, Uoc2)
plt.scatter(I, Uoc3, label='a-Si', marker='^')
plt.plot(I, Uoc3)plt.grid(True)
plt.legend()
plt.title('Impact of light intensity on the open-circuit voltage')
plt.xlabel('I/(W/m²)')
plt.ylabel('Uoc/V')# 光照强度对短路电流的影响
# 单晶硅
Isc1 = [53.3, 24.7, 16.8, 9.2, 6.8, 5.1, 4.1, 3.4, 2.9, 2.4]
# 多晶硅
Isc2 = [91.8, 36.3, 22.2, 15.3, 11.2, 8.6, 6.7, 5.4, 4.4, 3.7]
# 非晶硅
Isc3 = [38.4, 19.0, 10.7, 7.0, 5.0, 3.8, 2.9, 2.3, 1.9, 1.6]plt.subplot(3, 2, 4)
plt.scatter(I, Isc1, label='mc-Si')
plt.plot(I, Isc1)
plt.scatter(I, Isc2, label='pc-Si', marker='s')
plt.plot(I, Isc2)
plt.scatter(I, Isc3, label='a-Si', marker='^')
plt.plot(I, Isc3)plt.grid(True)
plt.legend()
plt.title('Impact of light intensity on the short-circuit current')
plt.xlabel('I/(W/m²)')
plt.ylabel('Isc/mA')# 调整子图之间的间距
plt.subplots_adjust(hspace=0.5, wspace=0.3)# 显示图形
plt.show()
结果显示

相关文章:
太阳能电池特性及其应用
中南民族大学-通信工程2024-大学物理下实验 目录 代码实现结果显示 🛠工具使用 MarsCode(插件,集成在PyCharm); python编程(豆包AI智能体) 💻编程改进 此处是用「Matplotlib」来作图…...
日语学习零基础生活日语口语柯桥外语学校|股票用日语怎么说?
在日语中,“股票”可以说: • 株(かぶ) 这是最常用的表达方式,直接表示“股票”。 例如: 株を買う - 买股票 株を売る - 卖股票 • 株式(かぶしき) 这个词也是“股票”的意…...
第2关:寻找一个序列中的第K小的元素(即第k小元问题)
[TOC]寻找一个序列中的第K小的元素(即第k小元问题) 对于给定的含有n(n<100)元素的无序序列,求这个序列中第k(1≤k≤n)小的元素。 任务描述 本关任务:编写一个能计算数组中的第k小的元素的小程序。 相关…...
docker 搭建 vue3 + vite
vue3发布了,今天就分享一下我使用docker 搭建 vue3 vite 开发环境。至于为什么使用docker搭建,因为多版本可以快速切换,和本地环境避免冲突。好了话不多说我们开始吧。 1. 准备资料 Docker Desktop wsl2 ubuntu 下载地址 : https://www.docker.…...
【网易云音乐】--源代码分享
最近写了一个网易云音乐的音乐实现部分,是通过JavaScript和jQuery实现的,具体效果大家可以参照下面的视频 源代码分享 - git地址: 网易云音乐源代码 下面将着重讲解一下音乐实现部分 视频有点模糊,不好意思,在b站上添加视频的时候…...
股市大涨下的会展业创新者
近期,股市涨势强劲有力,各大指数普遍上扬,市场活力空前。与此同时,伴随全球经济逐步复苏及会展行业不断发展,上市展览公司机遇与挑战并存。国内外市场需求持续增长拓展了广阔发展空间,但同时行业竞争愈发激…...
工具篇-完整的 Git 项目管理工具教程(在命令框中使用 Git、在 IDEA 中使用 Git)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Git 概述 2.0 Git 的安装和配置 3.0 获取本地仓库 3.1 基础操作指令 3.2 分支 4.0 Git 远程仓库 4.1 创建远程仓库 4.2 配置 SSH 公钥 4.3 操作远程仓库 5.0 使用…...
关于Amazon Linux 2023的版本及包管理器
在亚马逊上创建EC2实例时,会看到有一个Amazon Linux镜像。 那这个镜像与其他Linux有什么关系和区别呢? 网站是介绍:Amazon Linux 2023 是基于 Linux 的现代化通用操作系统,提供 5 年的长期支持。它针对 AWS 进行了优化࿰…...
Java面向对象编程--高级
目录 一、static关键字 1.1 静态变量 1.2 静态内存解析 1.3 static的应用与练习 二、单例设计模式 2.1 单例模式 2.2 如何实现单例模式 三、代码块 3.1 详解 3.2 练习,测试 四、final关键字 五、抽象类与抽象方法 5.1 abstract 5.2 练习 六、接口 6.…...
Vert.x,Web - 静态资源/模板
静态资源 Vert.x-Web带有开箱即用的处理器(StaticHandler),用于处理静态Web资源(.html, .css, .js, …), 因此可以非常轻松地编写静态Web服务器。 默认静态文件目录为类路径下的webroot目录,对于maven的项目,按规范放在src/main/…...
OpenAI今天Open了一下:开源多智能体框架Swarm
来源 | 机器之心 毫无疑问,多智能体肯定是 OpenAI 未来重要的研究方向之一,前些天 OpenAI 著名研究科学家 Noam Brown还在 X 上为 OpenAI 正在组建的一个新的多智能体研究团队招募机器学习工程师。 就在几个小时前,这个或许还没有组建完成的新…...
车辆重识别(2021NIPS无分类器扩散指南)论文阅读2024/10/08
[1] CLASSIFIER-FREE DIFFUSION GUIDANCE(无分类器扩散指导) (NIPS 2021) 作者:Jonathan Ho & Tim Salimans 单位:Google Research, Brain team(谷歌团队) 摘要: 分类器指导是最近引入的一…...
JavaSE——认识异常
1.概念 在生活中,人有时会生病,在程序中也是一样,程序猿是一帮办事严谨、追求完美的高科技人才。在日常开发中,绞尽脑汁将代码写的尽善尽美,在程序运行过程中,难免会出现一些奇奇怪怪的问题。有时通过代码很…...
嵌入式数据结构中顺序栈用法
第一:嵌入式C语言中栈特点 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。特点 :后进先出(LIFO)。...
PE结构之绑定导入表
打印绑定导入表 //打印 绑定导入表 BOOL PrintBoundImport(__in char* m_fileName) {char* Filebuffer NULL;if (!GetFileBuffer(m_fileName, &Filebuffer)) return FALSE;PIMAGE_DOS_HEADER LPdosHeader NULL;PIMAGE_NT_HEADERS LPntHeader NULL;LPdosHeader (PIMAGE…...
【python学习】1-2 配置python系统环境变量
1.点击“我的电脑”右键,点击属性,点击“高级系统设置”,再点击环境变量。 2.选择“系统变量”中的Path后,点击编辑。 3.点击新建,添加如图两个路径,即是python安装的路径位置后,点击确定。...
日均千万订单的交易平台设计稿
业务背景 平台主要售卖电子商品和少量特定的实物商品。 经营模式,主要分为平台商家和自营店,自营店的流量占整个平台业务的50%以上,我负责自营店交易履约相关业务。 以前的架构,平台交易和履约中心是所有流量共享,在…...
如何在 iPad 上恢复已删除的历史记录?
iPad 配备了一个名为 Safari 的内置网络浏览器。这是一种在旅途中保持联系和浏览网页的强大且便捷的方式。但如果您不小心删除了浏览历史记录,则尝试恢复它可能会很令人沮丧。 幸运的是,您可以通过多种方法在 iPad 上恢复已删除的 Safari 历史记录。您应…...
Haar cascade训练人脸小模型做人脸辨别
代码讲解 1. 导入必要的库 import cv2 import os from pathlib import Path import shutil import numpy as np import loggingcv2: OpenCV 库,用于图像处理和计算机视觉。os: 提供了一种便携的方式使用操作系统依赖的功能。pathlib.Path: 提供了对象导向的路径处…...
DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中?
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 原文链接:DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中? 如何将 (.mdf) 和 (.ldf) 的SQL Server 数据库文件导入到当前数据库中? Step 1.登录到 Sql Server 服…...
【人生底稿 28】新疆出差终章:几番波折终汇报,尽兴踏归津门路
三日游玩尽数落幕,忙碌工作正式回归。轻松的闲暇时光悄然收尾,紧绷的工作状态再次上线。整趟新疆之行,在起伏辗转中迎来最终收尾。一、深夜复盘材料,彻夜待汇报游玩结束回到酒店,我没有松懈休息,静下心重新…...
保姆级教程:用Python+NumPy复现经典Laplacian曲面编辑算法(附源码)
从理论到代码:Python实现Laplacian曲面编辑的完整指南 在三维图形处理领域,Laplacian曲面编辑技术因其出色的细节保持能力而备受推崇。这项技术允许开发者对三维模型进行直观的变形操作,同时保持模型表面的几何细节不被破坏。本文将带您从零开…...
C语言结构体、枚举、联合体:从内存布局看区别,新手避坑指南
C语言结构体、枚举、联合体:从内存布局看区别,新手避坑指南 在C语言开发中,结构体、枚举和联合体是构建复杂数据模型的三大基石。但很多开发者在实际项目中常遇到这样的困惑:为什么结构体占用的内存比预期大?枚举变量在…...
告别时间混乱:一份超全的Hive日期函数使用手册与常见错误排查
告别时间混乱:一份超全的Hive日期函数使用手册与常见错误排查 在数据开发领域,时间数据处理一直是高频且易错的环节。无论是日志分析、用户行为追踪还是财务报表生成,准确的时间计算都是确保数据质量的基础。Hive作为大数据生态中广泛使用的数…...
fold命令行工具:高效文本数据聚合与分析的瑞士军刀
1. 项目概述:一个为“折叠”而生的高效工具 最近在折腾一些数据处理和文件整理的工作流时,我一直在寻找一个能让我“折叠”起来思考的工具。我说的“折叠”,不是物理上的,而是逻辑上的——把复杂的、多维度的信息,按照…...
从零构建Go Web框架:解析the0极简框架的设计原理与实现
1. 项目概述:一个极简主义Web框架的诞生在Web开发的世界里,我们常常面临一个选择:是拥抱功能齐全但略显臃肿的“巨无霸”框架,还是追求极致轻量与灵活的自定义方案?对于许多追求性能、热爱掌控感,或是需要构…...
基于RP2040与CircuitPython的键盘内嵌DOOM游戏启动器DIY指南
1. 项目概述与核心思路几年前,我还在用笨重的全尺寸键盘时,就总琢磨着怎么给这每天摸上八小时的家伙加点“私货”。直到后来玩起了RP2040和CircuitPython,一个念头就冒出来了:能不能把游戏直接“焊”进键盘里?不是那种…...
Git Worktree CLI工具:告别分支切换焦虑,实现高效并行开发
1. 项目概述与核心价值如果你和我一样,长期在多个Git分支间穿梭,同时维护着几个不同的功能特性或修复补丁,那你一定对那种在分支间反复切换、代码状态混乱、甚至不小心提交到错误分支的“切分支焦虑症”深有体会。传统的git checkout或git sw…...
Linux内核C11升级:从C89到现代C语言的演进与挑战
1. 项目概述:一次内核语言的“心脏移植”手术最近Linux内核社区放出了一个重磅消息,未来计划将内核的C语言标准从使用了二十多年的C89/C90,升级到C11。这个消息一出,在开发者圈子里激起的讨论,不亚于当年从Python 2迁移…...
ncmdump终极指南:如何快速免费解锁网易云音乐NCM格式
ncmdump终极指南:如何快速免费解锁网易云音乐NCM格式 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的加密文件无法在其他设备播放而烦恼吗?ncmdump正是你需要的解决方案!这…...
