求助利用MATLAB进行复杂函数的定积分方法! 详情见补充,多谢了!
f=50;R=50;c=3*10^8;
w=2*pi*f;
t=0:0.01:100;
ft=exp(j*w*t);
gt=f*(t-2*R/c);
plot(t,ft)
figure;
plot(t,gt)
这样可以么?
函数拟合优好多种,多项式、幂指数,线性的、非线性的等等,不同的又不同的拟合方法,你问的很含糊。又一个fittype这个命令你去看看
一、符号积分符号积分由函数int来实现。该函数的一般调用格式为:int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分;int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分;int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。例:求函数x^2+y^2+z^2的三重积分。内积分上下限都是函数,对z积分下限是sqrt(x*y),积分上限是x^2*y;对y积分下限是sqrt(x),积分上限是x^2;对x的积分下限1,上限是2,求解如下:>>syms x y z %定义符号变量>>F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) %注意定积分的书写格式F2 = 1610027357/6563700-6072064/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4) %给出有理数解>>VF2=vpa(F2) %给出默认精度的数值解VF2 = 224.92153573331143159790710032805 二、数值积分1.数值积分基本原理求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)•法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。2.数值积分的实现方法基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace) 基于变步长、牛顿-柯特斯(Newton-Cotes)法,MATLAB给出了quadl函数来求定积分。该函数的调用格式为:[I,n]=quadl('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分精度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。例:求函数'exp(-x*x)的定积分,积分下限为0,积分上限为1。>>fun=inline('exp(-x.*x)','x'); %用内联函数定义被积函数fname>>Isim=quad(fun,0,1) %辛普生法Isim = 0.746824180726425 IL=quadl(fun,0,1) %牛顿-柯特斯法IL = 0.746824133988447 三、梯形法求向量积分trapz(x,y)—梯形法沿列方向求函数Y关于自变量X的积分(向量形式,数值方法)。>>d=0.001; >>x=0:d:1; >>S=d*trapz(exp(-x.^2)) S= 0.7468 或:>>format long g >>x=0:0.001:1; %x向量,也可以是不等间距>>y=exp(-x.^2); %y向量,也可以不是由已知函数生成的向量>>S=trapz(x,y); %求向量积分S = 0.746824071499185 int的积分可以是定积分,也可以是不定积分(即有没有积分上下限都可以积)可以得到解析的解,比如你对x^2积分,得到的结果是1/3*x^3,这是通过解析的方法来解的。如果int(x^2,x,1,2)得到的结果是7/3 quad是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson数值积分来求得的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。如果f=inline('x.^2');quad(f,1,2)得到的结果是2.333333,这个数并不是7/3 int是符号解,无任何误差,唯一问题是计算速度;quad是数值解,有计算精度限制,优点是总是能有一定的速度,即总能在一定时间内给出一个一定精度的解。[FROM: 58.192.116.*] 对于y=exp(-(x.^2+x+1)/(1+x)),被积函数之原函数无"封闭解析表达式",符号计算无法解题,这是符号计算有限性,结果如下:>> syms x >>y=exp(-(x.^2+x+1)/(1+x)) >>s=int(y,x,0,inf) y = exp((-x^2-x-1)/(1+x))
Warning: Explicit integral could not be found. >> In sym.int at 58 s = int(exp((-x^2-x-1)/(1+x)),x = 0 .. Inf) 只有通过数值计算解法>> dx=0.05; %采样间隔>>x=0:dx:1000; %数值计算适合于有限区间上,取有限个采样点,只要终值足够大,精度不受影响>>y=exp(-(x.^2+x+1)./(1+x)); >>S=dx*cumtrapz(y); %计算区间内曲线下图形面积,为小矩形面积累加得>>S(end) ans = 0.5641 %所求定积分值或进行编程,积分上限人工输入,程序如下:%表达式保存为函数文件function y=fxy(x) y=exp(-(x.^2+x+1)./(1+x)); % save fxy.m % main --------主程序clear,clc h=.001;p=0;a=0; R=input('请输入积分上限,R=') while a0 e1=2; end end if n2==0 e2=1; else if n2>0 e2=2; end end if n3==0 e3=1; else if n3>0 e3=2; end end F=@(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9); S=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5) %求三重数值积分将以上代码保存为Fn.m程序文件,即m文件,然后运行:>> Fn(1,1,1) S = 866.9655 [FROM: 211.65.33.*] 三重积分请用三重积分函数triplequad,与三个积分上下限对应,即x=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5)
其中被积函数F用"匿名函数"来表达,即F=@(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9); 如果直接用inline或字符串的形式,则表达式中的未知数有9个,分别是e1,e2,e3,n1,n2,n3,x,y,z。而用匿名函数时,已知变量e1,e2,e3,n1,n2,n3就会以常数看待,未知数就只有x,y,z了。完整函数程序:function Fn(n1,n2,n3) if n1==0 e1=1; else if n1>0 e1=2; end end if n2==0 e2=1; else if n2>0 e2=2; end end if n3==0 e3=1; else if n3>0 e3=2; end end F=@(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9); x=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5) >> Fn(1,1,1) x = 866.9655 [FROM: 58.192.116.*]
一、符号积分符号积分由函数int来实现。该函数的一般调用格式为:int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分;int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分;int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。例:求函数x^2+y^2+z^2的三重积分。内积分上下限都是函数,对z积分下限是sqrt(x*y),积分上限是x^2*y;对y积分下限是sqrt(x),积分上限是x^2;对x的积分下限1,上限是2,求解如下:>>syms x y z %定义符号变量>>F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) %注意定积分的书写格式F2 = 1610027357/6563700-6072064/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4) %给出有理数解>>VF2=vpa(F2) %给出默认精度的数值解VF2 = 224.92153573331143159790710032805 二、数值积分1.数值积分基本原理求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)•法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。2.数值积分的实现方法基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace) 基于变步长、牛顿-柯特斯(Newton-Cotes)法,MATLAB给出了quadl函数来求定积分。该函数的调用格式为:[I,n]=quadl('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分精度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。例:求函数'exp(-x*x)的定积分,积分下限为0,积分上限为1。>>fun=inline('exp(-x.*x)','x'); %用内联函数定义被积函数fname
>>Isim=quad(fun,0,1) %辛普生法Isim = 0.746824180726425 IL=quadl(fun,0,1) %牛顿-柯特斯法IL = 0.746824133988447 三、梯形法求向量积分trapz(x,y)—梯形法沿列方向求函数Y关于自变量X的积分(向量形式,数值方法)。>>d=0.001; >>x=0:d:1; >>S=d*trapz(exp(-x.^2)) S= 0.7468 或:>>format long g >>x=0:0.001:1; %x向量,也可以是不等间距>>y=exp(-x.^2); %y向量,也可以不是由已知函数生成的向量>>S=trapz(x,y); %求向量积分S = 0.746824071499185 int的积分可以是定积分,也可以是不定积分(即有没有积分上下限都可以积)可以得到解析的解,比如你对x^2积分,得到的结果是1/3*x^3,这是通过解析的方法来解的。如果int(x^2,x,1,2)得到的结果是7/3 quad是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson数值积分来求得的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。如果f=inline('x.^2');quad(f,1,2)得到的结果是2.333333,这个数并不是7/3 int是符号解,无任何误差,唯一问题是计算速度;quad是数值解,有计算精度限制,优点是总是能有一定的速度,即总能在一定时间内给出一个一定精度的解。[FROM: 58.192.116.*] 对于y=exp(-(x.^2+x+1)/(1+x)),被积函数之原函数无"封闭解析表达式",符号计算无法解题,这是符号计算有限性,结果如下:>> syms x >>y=exp(-(x.^2+x+1)/(1+x)) >>s=int(y,x,0,inf) y = exp((-x^2-x-1)/(1+x))
Warning: Explicit integral could not be found. >> In sym.int at 58 s = int(exp((-x^2-x-1)/(1+x)),x = 0 .. Inf) 只有通过数值计算解法>> dx=0.05; %采样间隔>>x=0:dx:1000; %数值计算适合于有限区间上,取有限个采样点,只要终值足够大,精度不受影响>>y=exp(-(x.^2+x+1)./(1+x)); >>S=dx*cumtrapz(y); %计算区间内曲线下图形面积,为小矩形面积累加得>>S(end) ans = 0.5641 %所求定积分值或进行编程,积分上限人工输入,程序如下:%表达式保存为函数文件function y=fxy(x) y=exp(-(x.^2+x+1)./(1+x)); % save fxy.m % main --------主程序clear,clc h=.001;p=0;a=0; R=input('请输入积分上限,R=') while a<R p=p+(fxy(a)+fxy(a+h))*h/2; a=a+h; end p=vpa(p,10) 运行主程序后得到结果:请输入积分上限,R=1000 R = 1000 p = .5641346055 其它结果如下:0-1: int=.3067601686 0-2: int=.4599633159 0-5: int=.5583068217 0-10: int=.5640928975 0-100: int=.5641346055 0-1000: int=.5641346055 [FROM: 211.65.33.*]
在积分函数中, sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9);已知变量e1,e2,e3,n1,n2,n3通过函数参数输入,如果直接用inline或字符串的形式,则表达式中的未知数有9个,分别是e1,e2,e3,n1,n2,n3,x,y,z。而用匿名函数时,已知变量e1,e2,e3,n1,n2,n3就会以常数看待,未知数就只有x,y,z了,可以求三重积分了。完整函数程序:function Fn(n1,n2,n3) if n1==0 e1=1; else if n1>0 e1=2; end end if n2==0 e2=1; else if n2>0 e2=2; end end if n3==0 e3=1; else if n3>0 e3=2; end end F=@(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9); S=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5) %求三重数值积分将以上代码保存为Fn.m程序文件,即m文件,然后运行:>> Fn(1,1,1) S = 866.9655 [FROM: 211.65.33.*] 三重积分请用三重积分函数triplequad,与三个积分上下限对应,即x=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5)
其中被积函数F用"匿名函数"来表达,即F=@(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9); 如果直接用inline或字符串的形式,则表达式中的未知数有9个,分别是e1,e2,e3,n1,n2,n3,x,y,z。而用匿名函数时,已知变量e1,e2,e3,n1,n2,n3就会以常数看待,未知数就只有x,y,z了。完整函数程序:function Fn(n1,n2,n3) if n1==0 e1=1; else if n1>0 e1=2; end end if n2==0 e2=1; else if n2>0 e2=2; end end if n3==0 e3=1; else if n3>0 e3=2; end end F=@(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9); x=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5) >> Fn(1,1,1) x = 866.9655 [FROM: 58.192.116.*]
只要不是不定积分要求得到积分后的表达式,能实际计算出结果的积分就是定积分了。定积分不就是求函数在某区间或领域下的面积或体积么,所以可以用梯形法之类的方法来近似求解这个面积。比如说步长为h,那么求出f(0),f(h),f(2h),......f(nh),
则f(x)在0~nh的定积分得到的面积就是h*(f(0)+f(h)+...+f(nh))。
matlab给出的求解积分的函数指令为intf=int(f,v,a,b),表示对f求指定变量v的定积分,积分区间为[a,b]。当v缺省时,由symvar确认变量,当a,b缺省时,则是求f指定变量的不定积分。
学习matlab有什么用处呢?
所以一方面好好学习理论知识,尽最大可能结合实际,另一方面灵活运用matlab实现自己的设计。3)如果要学好matlab应该先从它的什么地方开始下手最好? 不要买《matlab入门》之类的书。最好的学习方法永远是从例子开始。买一些你领域里面的《实例》书,读懂每个例子。搞清楚每个语句,那你就入门了。4)help。
什么是MATLAB,MATLAB有什么用处?
使用 MATLAB可以较使用传统的编程语言(如 C、C++ 和 Fortran)更快地解决技术计算问题。MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是矩阵实验室(Matrix Laboratory)的简称,和...
MATLAB辅助现代工程数字信号处理内容简介
《MATLAB在现代工程数字信号处理中的应用(第2版)》深入解析了数字信号处理的核心理论和实践操作,特别强调了MATLAB这一工具在实际应用中的关键作用。本书共分为10个章节,详细探讨了确定性信号处理与随机信号处理两个主要部分。在确定性信号处理部分,它涵盖了离散时间信号与系统的理论,以及频域分析方法。
matlab在高等数学中的应用
在三维图形学习过程中,学生对马鞍面图形的理解往往有困难,即可利用Matlab的作图功能,借助多媒体手段直观呈现,协助学习过程。通过图形,函数特性可以具象直观的展现,对函数的理解不在停留于想象层面,只需观察图形即可深入学习函数特性, 一目了然,记忆深刻,有助于接下来的导数、极限、积分及微积分的学习理解...
机电系统动态仿真——基于MATLAB\/Simulink内容简介
本书的核心内容是详尽阐述如何借助MATLAB进行机电系统动态仿真。它涵盖了MATLAB 6.X及Simulink软件包中与机电系统仿真相关的基础知识,包括机电液系统建模技术、动态特性分析、控制系统设计以及计算机仿真技术的理论和实践应用。书中精心设计的实例和习题,涉及了控制原理、机构学、机械振动、液压传动、伺服系统...
matlab方程仿真
MATLAB是一个强大的数学工具,它在方程求解和仿真中发挥着关键作用。以下是使用MATLAB进行不同类型方程处理的实例:1. 代数方程求解例如,对于一元方程x^2 - 4x + 4 = 0,利用solve函数,我们可以轻松得到x = 2的结果。2. 微分方程仿真考虑一阶常微分方程dy\/dx = -2y,通过dsolve函数,可以模拟并...
Maple toolbox for Matlab提供帮助
Maple Toolbox for MATLAB是一个强大的辅助工具,它为用户提供了前所未有的数学功能。这款工具箱内置了世界上最先进的符号数学引擎,极大地增强了MATLAB的基础功能,包括扩展了统计、优化、单位计算以及微分方程求解的深度,使复杂问题的处理更为高效。在图形处理方面,Maple Toolbox同样表现出色,支持参数...
机械原理MATLAB辅助分析目录
机械原理MATLAB辅助分析目录在MATLAB的辅助下,机械原理的学习和分析变得更为高效。以下内容涵盖了平面连杆机构和常见机构的设计及分析。首先,第一章探讨平面连杆机构的运动分析,包括:平面连杆机构的运动分析概述,介绍了基本概念和MATLAB在分析中的应用。第二节铰链四杆机构运动分析,详细解析了MATLAB如何辅助...
grid on在matlab中的用法
生成数据 x = linspace(0, 2*pi, 100); y = cos(2*x); % 绘图 plot(x, y); grid on;这段代码将绘制一个函数曲线,并打开网格线。二、gridon在matlab中的作用 对于二维绘图(如函数曲线、散点图等),添加网格线可以使得图像更加美观,同时也有助于更好地理解和分析数据。通过使用gridon...
如何利用matlab创建Hilbert矩阵
用matlab自带函数eig计算 这里我们用matlab自带的产生Hilbert矩阵的函数hilb(n)计算一下。所用的时间为0.003173秒。可以看出所用的时间最短,所以在编程时我们应该尽量使用matlab已经有的相应功能的函数,如实在找不到在自己变。这样可以节省计算时间。希尔伯特矩阵的逆 此外matlab还自带有求希尔伯特矩阵的逆...
辕钢八珍: 对于平面函数,将横坐标向量赋予x值,再在command窗口输入公式,即可,命令如下: x=[横坐标向量]; y=f(x); %无论f有多复杂都可以 plot(x,y);
友谊县19558387537: 怎么在MATLAB中画一个比较复杂的函数? - ?
辕钢八珍: 首先,你不清楚一个问题,matlab中认为所有的数据都是矩阵,因此在你进行操作的时候,也必须清楚这个概念,画图的时候,x是一个向量,因此后边的表达式应该是向量表达式,也就是说使用的是很向量操作,那么你就不能使用这种操作方式,向量的乘法分为点乘和矩阵乘法,你需要的是点乘,运算的时候必须使用'.',加以说明,因此正常的操作应该是:>> x=0:0.1:100;%创建向量;>> plot(x,(exp(-x).*((-1/6)*27.2*x.*x-13.6*x-2/3.*x+1./x-13.6)));%画图>>
友谊县19558387537: 求助利用MATLAB进行复杂函数的定积分方法! 详情见补充,多谢了! - ?
辕钢八珍: 只要不是不定积分要求得到积分后的表达式,能实际计算出结果的积分就是定积分了.定积分不就是求函数在某区间或领域下的面积或体积么,所以可以用梯形法之类的方法来近似求解这个面积.比如说步长为h,那么求出f(0),f(h),f(2h),......f(nh),则f(x)在0~nh的定积分得到的面积就是h*(f(0)+f(h)+...+f(nh)).matlab给出的求解积分的函数指令为intf=int(f,v,a,b),表示对f求指定变量v的定积分,积分区间为[a,b].当v缺省时,由symvar确认变量,当a,b缺省时,则是求f指定变量的不定积分.
友谊县19558387537: matlab中如何自定义编写复杂函数并用它拟合 - ?
辕钢八珍: 你可以查看这些回答,其具体的拟合方法和过程. 求一个MATLAB程序:要求用MATLAB 幂函数拟合方程 Y=A(X-h)^M;求程序以及A、h、M的值 求教如何用matlab拟合出一个复杂反应体系的动力学参数 求助一个带有线性约束条件的多条非线性曲线拟合问题 如何使用 MATLAB 进行威布尔函数拟合曲线 用matlab 将一组数据进行正态分布拟合如有问题,可以进一步讨论.或私信联络.
友谊县19558387537: matlab中函数求和 比较复杂的函数该怎么弄?求教 - ?
辕钢八珍: 用matlab中函数求和 比较复杂的函数,可以这样来考虑: 1、求和关系比较清晰的一般可以用symsum()函数求解,其格式: F = symsum(f,k,a,b) 2、求和关系比较复杂(数据是离散的)用循环语句来求,其格式: x=0, for i=1:n for j=1:m x=x+A(i,j) %求和表达式 end end
友谊县19558387537: matlab 复杂函数 - ?
辕钢八珍: r = linspace(0,0.7,100);%阻尼比从0到0.7 w = linspace(0,1.5,100);%频率比从0到1.5 a = (1./sqrt((1-(1-2*r.^2).*w.^2).^2+4*r.^2.*(1-2*r.^2).*w.^2));
友谊县19558387537: 怎么用matlab求一个复杂函数的偏导? - ?
辕钢八珍: 举例说明:(1)z=x2y-xy2,x=ucosv,y=usinv,求 dz/dv,dz/du syms x y z u v x=u*cos(v),y=u*sin(v) z=x^2*y-x*y^2,dzdu=diff(z,'u'),dzdv=diff(z,'v')(2)求解常微分方程y'=-ay的通解,并用C1=3,a=50替换解的变量 y = dsolve('Dy = -a*y') % 求微分方程的通解 a =50;C1=3;subs(y) % 进行参数的替换 y = C1*exp(-a*t) ans = 3*exp(-50*t)
友谊县19558387537: 使用MATLAB拟合一个比较复杂的函数 - ?
辕钢八珍: 形式复杂没关系,还是用那个拟合函数.只是涉及到无穷的,往往就不是初等函数了,搂入如果可以化简(将求和上面的无穷符号去掉)在进行拟合吧,否则应该是不可以的.
友谊县19558387537: 求大神帮忙画一个matlab复杂函数图像 - ?
辕钢八珍: 用matlab绘制其复杂函数图像,应考虑其图形的特殊性,即数值的数量级.在出图时,可以根据数值的大小进行缩放.实现代码, v=linspace(0,10,100); N=表达式 plot(v,N/1e36,'.-') grid on xlabel('v'),ylabel('N*10^{-36}')
友谊县19558387537: matlab画一个比较复杂的函数 - ?
辕钢八珍: NA=0.25; n1=1; s=1; % 问下你这里的s是神马东东? n=1:0.1:8; deltax=2*s*(tan(asin(NA/n1))-tan(asin(NA./n))); plot(deltax,n)