Matlab学习笔记---一个绘制多元酸分布分数-ph图的function

3df29cdff03a44cbba764c4bcaac0d20.jpeg

乙二胺四乙酸的分布图

 

一酸HA的分布系数:δ0=[A-]/c,δ1=[HA]/c,其中δ0+δ1=1。

推广到m元酸,容易推导出通式:

δ(n)=    %5Csum_%7Bj%3D1%7D%5E%7Bm+1%7D%28%5BH%5E%7B+%7D%5D%5E%7Bm+1-j%7D*%5Cprod_%7Bi%3D1%7D%5E%7Bj%7DKa_%7Bi-1%7D%29

其中,令K0=1

 

在计算δ的表达式时将分子分母分别计算,用for画图。

将K的值input到一个array里,添加上第一项k0=1,

m=input('m=');
matk=input('input the array of K from K1 to Km:');

matk=[1,matk];
%加入第一項K0,令K0為1以滿足關係式

   


用indexing取array中的前m+1项,使用cumprod函数求积。
 

  syms x
    
    figure 
    hold on
    sigq=(10.^-x).^(m);
    
    for j=2:m+1
        
        piaim2=matk(1:j);
        sig1=(10.^-x).^(m+1-j).*cumprod(piaim2)+sigq;
        sigq=sig1(1,j);
        %計算分母

end

再计算各个分子,画图,注意需要的式子在syms里的位置,用indexing的方法取出。另外注意分子分母array size是否相同。

for k=1:m+1
        
        piaim1=matk(1:k);
        sig2=(10.^-x).^(m+1-k).*(cumprod(piaim1));  
        f=sig2(k)./sigq;
        fplot(f)
        %計算分子,對每一個delta繪圖
        
                
    end


    

完整代码如下

function deltapf

m=input('m=');
matk=input('input the array of K from K1 to Km:');

matk=[1,matk];
%加入第一項K0,令K0為1以滿足關係式

if size(matk)==[1,m+1]
    
    syms x
    
    figure 
    hold on
    sigq=(10.^-x).^(m);
    
    for j=2:m+1
        
        piaim2=matk(1:j);
        sig1=(10.^-x).^(m+1-j).*cumprod(piaim2)+sigq;
        sigq=sig1(1,j);
        %計算分母
        
    end
    
    for k=1:m+1
        
        piaim1=matk(1:k);
        sig2=(10.^-x).^(m+1-k).*(cumprod(piaim1));  
        f=sig2(k)./sigq;
        fplot(f)
        %計算分子,對每一個delta繪圖
        
                
    end
    
    hold off
    box on
    xlim([0 14]);
    ylim([0 1]);
    title('Delta');
    xlabel('PH');
    ylabel('δ');
    %將範圍規為x(0,14),y(0,1)
    
    
else
    
    disp('wrong k input')
    
end

p.s.不知道为什么matlab里简体注释出现[X],繁体是正常的

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 拉盖尔-高阶高斯光束是一种特殊形式的光束,它在横向和纵向都具有高斯的横向模式,但纵向模式却是拉盖尔多项式。在Matlab中,我们可以通过调用besselj和bessely函数来定义它。然后,我们可以使用meshgrid函数创建一个二维的网格,并用我们定义的光束函数计算每一点的光强。 具体来说,在Matlab中,我们可以定义一个函数,例如: function I = LaguerreGaussBeam(x,y,p,l,w,z) % x和y是二维网格,p是模式数,l是角动量量子数,w是束腰半径,z是距离 % 定义必须的常量 k = 2*pi/lambda; R = z + 1i*k*w^2/2; w0 = w*sqrt(1+z^2/(k*w^2)^2); % 计算横向和纵向高斯函数 Gx = exp(-x.^2/w0^2); Gy = exp(-y.^2/w0^2); % 计算拉盖尔多项式 L = LaguerrePolynomial(p,l,sqrt(2)*x/w0); % 计算光强 I = (k*w0^2/2)./R.^2 .* (sqrt(2)*x./w0).^2 .* (abs(L.*Gx.*Gy).^2); 其中,LaguerrePolynomial函数计算拉盖尔多项式,它可以通过递归来定义。 最后,我们可以使用surf函数绘制光强分布,例如: [x,y] = meshgrid(-10:0.1:10); I = LaguerreGaussBeam(x,y,2,1,1,1000); surf(x,y,I); 这将生成一个三维形,显示光强在横向和纵向的分布。如果想查看沿x和y轴的切片,可以使用slice函数。 ### 回答2: 拉盖尔-高阶高斯光束同样是一种高阶光束,具有复杂的光场分布和光强分布。在matlab中进行仿真,需要先进行数学模型的建立和求解。 首先,我们可以利用拉盖尔多项式和高斯函数来表示拉盖尔-高阶高斯光束。然后,利用数值方法解出模拟得到的光场。 接下来,需要对获得的光场进行优化和处理,得到光强分布。以三阶拉盖尔-高斯光束为例,可以通过绘制其光强分布来直观地展示其光场特性。 处理光强分布时,可以采用matlab中的plot或surf函数,通过二维形展示光强分布。同时,也可以采用三维形来呈现光场的分布特性。 在绘制光强分布时,需要注意对光束的参数进行调整,以保证仿真结果的精度和准确性。此外,还需对仿真过程中的误差进行分析和评估,优化仿真结果。 总之,matlab仿真拉盖尔-高阶高斯光束并绘制其光强分布,可帮助深入了解该光束的光场特性和应用场景,并为相关研究提供参考和支持。 ### 回答3: 拉盖尔-高阶高斯光束是一种特殊的激光束,具有非常特殊的光学特性,可以在不同的工程领域中广泛应用。Matlab作为一款强大的数学计算软件,可以非常方便地进行拉盖尔-高阶高斯光束的仿真,同时绘制其光强分布。 首先,在Matlab中需要定义拉盖尔-高阶高斯光束的初始参数,包括光束的波长、半径、光束数量等参数。然后,可以通过调用Matlab中的计算函数,计算得到拉盖尔-高阶高斯光束的光强分布。同时,还可以对光强分布进行可视化展示,包括将其转化为灰度像,或者采用彩色像的方式进行展示。 需要注意的是,绘制拉盖尔-高阶高斯光束的光强分布,需要对Matlab中的计算函数和绘函数非常熟悉,同时也需要了解光学领域相关的基本理论知识。通过对Matlab仿真拉盖尔-高阶高斯光束的练习,可以更进一步的提高自己的理论水平和实际操作技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值