Python解方程demo:scipy.optimize -root

该代码利用Python实现解方程功能
使用了scipy.optimize root 求解方程

  • 可以正常调用numpy提供的数学计算函数
  • 可以给创建的方程传参
# 导入所需的模块
from scipy.optimize import root
import numpy as np

# 定义待求解方程
def Equation1(n_eff2, b_1, n_0, n_1, n_2, mode_n):
    # 参数定义
    k_0 = 1. / 1550e-9

    # 计算方程中的中间变量
    K_y = (k_0 ** 2 * n_1 ** 2 - k_0 ** 2 * n_eff2 ** 2) ** 0.5
    p_y = (k_0 ** 2 * n_eff2 ** 2 - k_0 ** 2 * n_0 ** 2) ** 0.5
    q_y = (k_0 ** 2 * n_eff2 ** 2 - k_0 ** 2 * n_2 ** 2) ** 0.5

    # 定义方程
    eq = mode_n * np.pi - np.arctan(K_y / p_y) - np.arctan(K_y / q_y) - (K_y * b_1)
    return eq  # 返回方程


def Cal_Ex_MODE_neff(a, b_1, b_2, n_0, n_1, n_2, n_3, mode_m, mode_n):
    # 初始猜测值
    n_eff2 = np.array([3.2])
    # 参数打包,供root函数使用
    args = (b_1, n_0, n_1, n_2, mode_n)
    # 使用root函数来求解该方程
    sol = root(Equation1, n_eff2, args=args)
    # 打印求解结果的有效折射率
    print(sol.x)

# 主程序代码
if __name__ == "__main__":
    n_0 = 3.1 
    n_1 = 3.3 
    n_2 = 1.44 
    n_3 = 3.1  

    a = 1.5e-6 
    b_1 = 500e-9 
    b_2 = 1000e-9

    mode_n = 1  

    # 调用计算函数
    Cal_Ex_MODE_neff(
        a=a,
        b_1=b_1,
        b_2=b_2,
        n_0=n_0,
        n_1=n_1,
        n_2=n_2,
        n_3=n_3,
        mode_m=0, 
        mode_n=0  
    )
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值