o
    RiY                     @   s   d dl Zd dlZd dlZd dlmZ d dlmZ d dlmZ dd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd Zdd Z	 eeeddgddggdd eeejddgddggdd eeeddgddggdd eeeddgddggdd dS )    N)p_roots)gammajvc                 C   sJ   | |d|   d| ||   d| ||   | |d|   d|  S )N          )fhzr	   r	   4/srv/http/uni/2025-spr/35006-nm/assign/final/main.pydiff   s   Jr   c           	         s   d}|  d |  | |  }t |D ]7}t fddt d| D }|d d t| |  }|dkrGt|| |k rG|  S d |}qtd d S )Nd   r   c                    s    g | ]} d   |  qS )r   r	   ).0jar   r	   r   
<listcomp>   s     ztrapquad.<locals>.<listcomp>   "Error occured: tolerance unreached)rangenparraysumabsprint)	r
   r   btolmaxnI0pxIr	   r   r   trapquad   s   "r$   c           
      C   s   d}d}t d|D ]0}t|\}}|| d t|| || | d || d    }	t||	 |k r7|	  S |	}q	td d S )Nr   r   r   r   r   )r   r   r   r   r   )
r
   r   r   r   r   r    nr"   wr#   r	   r	   r   glquad!   s   4r'   c           
      C   s   |du rt }n	 t}|d d |d d d  |d d |d d d  |d d |d d d  |d d |d d d  g}d}tddD ]}||d d  }||d  }	||| |	||7 }qG|S )NTr   r                 ?   )r$   r'   r   )
r
   effdomr   intfunccycr#   kr   r   r	   r	   r   contint.   s   lr/   c                    s  g }t |d d |d d |}t |d d |d d |}t j||dd\}} fdd}t|d D ]S}	t|d D ]J}
t t|d||	 |
 ||	d  |
 g||	 |
 ||	 |
d  ggdd}|dk r|||	 |
 ||	d  |
 g||	 |
 ||	 |
d  gg q>q6|S )	Nr   r   ij)indexingc                    s"   t  d| dtj d  |   S )NV瞯<r   r(   )r   r   pi)tr
   r	   r   cpafB   s   "zbracketpoles.<locals>.cpafTg?)r   linspacemeshgridr   roundr/   append)r
   bregionr%   bracr"   yXYr6   ir.   r#   r	   r5   r   bracketpoles=   s   J>rA   c           
   	   C   s   g }t | ||}|D ]n}d}|d d |d d d  |d d  |d d d  d }d}	t|| |krx|	dk rx|}|| |t| d|  }|	d7 }	t|| |k rl|	dkrl||t| d||dtj d  g nt|| |krx|	dk s:q
|S )	Nr   r   r(   r   r   r2      F)rA   r   r   r:   r/   r   r3   )
r
   r+   r%   r   residuesr<   r   p0r!   itr	   r	   r   resM   s    <&rF   c                 C   s   t | | d d|   d  S )NrB   r   )r   expr   r	   r	   r   r
   ]   s   r
   c                 C   s   dt d|  S )Nr   r   r   rH   r	   r	   r   	invbessel`   s   rI   g      rB   2   g&.>)numpyr   mathtimescipy.specialr   r   r   r   r$   r'   r/   rA   rF   r
   rI   r   tanr	   r	   r	   r   <module>   s&    "