单模光纤的特征方程以及MATLAB求解

news2024/12/22 16:04:43

在之前的文章中,我们写出了单模光纤的特征方程以及对应的导波模式

这里我们在MATLAB中求解特征方程并表示出几个归一化参数的变化曲线

用到的公式是单模光纤导波模式的特征方程:

clear
close all
tic
Vmax = 10;
N =100;

for j =1:N
    V(j) = j/N*Vmax;
    Vtemp = V(j);

    Utemp = NaN;
    i = 0;

    while (isnan(Utemp) && i<N+1)
        init =Vtemp*(i+1)/N-1e-16;
        try
            Utemp = fzero(@(Utemp) ...
                besselj(0,Utemp)/(Utemp*besselj(1,Utemp)) - ...
                besselk(0,sqrt(Vtemp^2-Utemp^2))/ ...
                (sqrt(Vtemp^2-Utemp^2)*besselk(1,sqrt(Vtemp^2-Utemp^2))),init);
        catch
        end
        i = i+1;
    end
    U(j) = abs(Utemp);
end

W = sqrt(V.^2-U.^2);
Ymax = ceil(max([U,W]));

figure
subplot(1,2,1)
plot(V,U,'r');
axis equal
axis([0 Vmax 0 Ymax])
xlabel('v')
ylabel('u')
title('Lp_{01}  v-u')

subplot(1,2,2)
plot(V,W,'r');
axis equal
axis([0 Vmax 0 Ymax])
xlabel('v')
ylabel('w')
title('Lp_{01}  v-w')

toc

fzero函数能求解fun(x) = 0 的点 x。

使用方式:

x = fzero(fun,x0)

其中x0表示初始值

我们从0-10之间选取了N(100)个点,对于每一个点都有一个Vtemp与之对应

对于每一个确定的Vtemp,特征方程都有一个Utemp与之对应

结果如下:

 try catch语句在java中常见于抛出错误

在预见到会产生错误的前提下,把可能引发异常的语句封装在 try 语句块中,用以捕获可能发生的异常。

catch 语句会依据所拋出异常对象的类型进行捕获,并处理。

处理之后,程序会跳过 try 语句块中剩余的语句,转到 catch 语句块后面的第一条语句开始执行。

如果 try 语句块中没有异常发生,那么 try 块正常结束,后面的 catch 语句块被跳过,程序将从 catch 语句块后的第一条语句开始执行。

ceil函数是取整函数,将输入参数的每个元素四舍五入到大于或等于该元素的最接近整数。这里用来规划坐标轴的范围

代码的输出结果就是单模光纤UVW三个元素之间的关系,我们可以在命令行窗口看到具体的数值结果:

[V' U' W']

截取前一段来观察:

在V很小时,U和W没有数值解,也就是不存在合适的U和W形成导波模式

在曲线的起始端,对应的数值分别为Vc和Uc

随着V不断增加,U和W都增大,但是,W的增加近似于线性(在V较大的情况下),U的增加趋近于一个有限值

我们可以用多项式拟合得到近似的直线,并和通过特征方程求解的结果作对比:

NN = 15:24
x = V(NN);
y = W(NN);
p = polyfit(x,y,1);
f = polyval(p,x);
maxerr = max(y-f)
figure
plot(x,y,'o',x,f,'-')
xlabel('v')
ylabel('w')

polyfit函数用于拟合函数,返回次数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(基于最小二乘指标)。p 中的系数按降幂排列,p 的长度为 n+1

这里我们设置阶数为1,也就是直线拟合

结果如下:

polyval函数计算多项式 p 在 x 的每个点处的值。参数 p 是长度为 n+1 的向量,其元素是 n 次多项式的系数(降幂排序)

通过这两个函数组合,我们得到了拟合直线的表达式以及拟合直线的在对应点的结果

在命令行窗口读出最大的误差,可以看到最大的误差是10^{-4}数量级。

参考《高等光学仿真——光波导、激光》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/550334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑微信占用100多GB空间 解决办法来了:重回清爽流畅

这几天微信吃内存的话题又上热搜了&#xff0c;作为一款10亿用户的国民级APP&#xff0c;微信的真是让人又爱又恨&#xff0c;不用几乎不可能&#xff0c;用起来槽点又多&#xff0c;光是磁盘占用就是个头疼的问题。 不论是工作还是日常沟通&#xff0c;微信里面的文件及语音、…

python中的类型转换

文章目录 类型转换简介int()float()str()bool() 类型转换简介 所谓的类型转换&#xff0c;将一个类型的对象转换为其他对象。 类型转换不是改变对象本身的类型&#xff0c;而是将对象的值转换为新的对象。 类型转换四个函数 int() 、 float() 、 str() 、 bool() int() int()…

cpp11实现线程池(一)——项目介绍

项目介绍 线程池是库的形式提供给用户&#xff0c;是必须放到代码中&#xff0c;不能单独运行&#xff0c;亦称为基础组件 第一版线程池任务对象使用继承技术&#xff0c;提供一个抽象基类Task&#xff0c;里面有一个纯虚函数run()&#xff0c;使用时继承该类&#xff0c;并重…

第二篇:强化学习中的7个基础概念

你好&#xff0c;我是zhenguo&#xff08;郭震&#xff09; 这是强化学习第二篇&#xff1a;强化学习7个基础概念 在强化学习中&#xff0c;智能体需要在不断尝试和错误的过程中学习&#xff0c;通过观察环境的反馈&#xff08;奖励或惩罚&#xff09;来调整自己的行为&#xf…

windows系统安装curl

下载安装包 https://curl.se/windows/ 2.如图所示&#xff0c;把下载的zip包解压到C盘某个目录下 把bin目录配置到系统环境变量Path里 在命令行里直接输入curl即可开始使用 5.curl测试访问百度 6.curl 测试ip端口连通性 用法&#xff1a;curl -v ip:port

推荐一款C端的低代码产品

目录 写在前面 低代码平台 平台怎么选 各平台区别 为什么选它 写在前面 大家都知道低代码这个叫法是从B端叫起来的&#xff0c;也就是说不管是业务人员还是开发人员&#xff0c;都是企业内部使用。那么有没有C端的&#xff0c;且免费使用的低代码产品呢&#xff1f; 低代码…

Matlab论文插图绘制模板第93期—带类别标签的散点图

在之前的文章中&#xff0c;分享了很多Matlab散点图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一种特殊的散点图&#xff1a;带类别标签的散点图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请…

数据库基础5-复合查询

文章目录 多表查询自连接子查询合并查询 基础查询中&#xff0c;再补充一个点&#xff1a; 在使用年薪进行降序排序中&#xff0c;我们有以下语句 //A: select ename, sal*12ifnull(comm,0) as 年薪 from emp order by 年薪 desc;查询到的结果&#xff1a; //B: select ename,…

Leetcode 剑指 Offer II 027. 回文链表

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个链表的 头节点 head &#xff0c;请判断其是否为回文链表…

ROS 开发环境搭建(虚拟机版本)(一)

相关工具&#xff0c;以及镜像&#xff08;以后有用&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1xgtp-XGFFNCACV_-0TJO2A 提取码&#xff1a;ar1w 1. 下载vm虚拟机&#xff08;我选择的官方最新的vm虚拟机&#xff09;&#xff0c;安装好 2.安装百度网盘里面的…

办公智慧化风起云涌,华为MateBook X Pro 2023是最短距离

今年以来&#xff0c;我们几乎每个月&#xff0c;甚至每星期都可以看到大模型应用&#xff0c;在办公场景下推陈出新。 办公智慧化已成必然&#xff0c;大量智力工作正在被自动化。一个普遍共识是&#xff1a;AI能力范围之内的职业岌岌可危&#xff0c;AI 能力范围之外的职业欣…

【TES710D】基于复旦微的FMQL10S400全国产化ARM核心模块

板卡概述 TES710D是一款基于上海复旦微电子FMQL10S400的全国产化核心模块。该核心模块将复旦微的FMQL10S400&#xff08;兼容FMQL20S400&#xff09;的最小系统集成在了一个50*70mm的核心板上&#xff0c;可以作为一个核心模块&#xff0c;进行功能性扩展&#xff0c;特别是用…

第二章、认识用户体验五要素(本文作用是通俗讲解,让你更容易理解)

1.用户体验要素分五个层面&#xff0c;分别是战略层、范围层、结构层、框架层、表现层。 战略层&#xff1a;指的是产品所要解决的社会问题&#xff0c;和公司在这个产品上的收益目标。也就是大家所说的产品战略。 范围层&#xff1a;指的是我们要做的业务范围&#xff0c;我…

零基础学Java——基础part01

java基础第一篇 今日任务&#xff1a; 1、什么是软件开发 2、人机交互 3、常用的dos命令&#xff08;了解&#xff09; 4、什么是计算机语言 5、Java三种技术架构&#xff08;了解&#xff09; 6、Java语言特性&#xff08;跨平台原理) (了解&#xff09; 7、Java开发环境搭…

模拟运行600万年 数据0损坏!Solidigm把QLC闪存玩到了极致

不可否认的是&#xff0c;SLC、MLC、TLC、QLC、PLC、HLC……闪存技术一路走下来&#xff0c;整体的可靠性、寿命指标是逐步走低的&#xff0c;这也是NAND闪存架构天然属性所决定的。 当然&#xff0c;这不代表QLC、PLC闪存的就难堪大用&#xff0c;关键是看如何设计与优化&…

Carla自动驾驶仿真四:pygame渲染Camera画面及车辆控制(代码详解)

文章目录 前言一、依赖库安装1、pygame安装2、numpy安装 二、Pygame渲染Carla Camera画面1、连接Carla并初始化TrafficManager2、生成自动驾驶车辆并设置交通行为3、创建初始化pygame surface对象的函数4、创建pygame处理Carla图像的回调函数5、创建pygame键盘控制车辆运动的函…

软件设计师 试题二做题技巧

问题一&#xff1a;去需求分析中找相应的联系类型 问题二先看缺少的属性是不是er图中的实体&#xff0c;如果是实体文中就会有相关的信息&#xff0c;如果没有就对应的去图中找&#xff0c;转化为关系模式对应的联系也要转化为关系模式 如果是一对一就把联系归并到任意一方实…

JS 实现拖拽元素的功能

JS 实现拖拽元素的功能 这篇笔记比较短&#xff0c;主要过一遍 draggable 的事件。 首先简单看一下 HTML 实现&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Comp…

【小程序修改说明】分享朋友的,请忽略!

一、把js文件夹复制到根目录&#xff0c;跟pages同一目录 二、把下面的代码放到app.wxss最下面 代码 import "/js/font-awesome.wxss"; import "/js/font-awesome_small.wxss"; 三、ywym.wxml修改 1、ywym.wxml的最上边加上如下代码 <navigator url&…