1.å¦Pythonè½å¹²ä»ä¹ï¼
2.MATLAB数值分析编辑推荐
3.å¦ä½ç³»ç»å°èªå¦ Python
4.超详细 | 鲸鱼优化算法原理及其实现(Matlab/Python)
å¦Pythonè½å¹²ä»ä¹ï¼
Pythonå¯ä»¥åä»ä¹ï¼
1ï¼ç½ç«å端ç¨åºåï¼ä½¿ç¨å®åé´ç½ç«ï¼åå°æå¡æ¯è¾å®¹æç»´æ¤ãå¦ï¼GmailãYoutubeãç¥ä¹ãè±ç£
2ï¼èªå¨åè¿ç»´ï¼èªå¨åå¤ç大éçè¿ç»´ä»»å¡
3ï¼æ°æ®åæå¸ï¼å¿«éå¼åå¿«ééªè¯ï¼åææ°æ®å¾å°ç»æ
4ï¼æ¸¸æå¼åè ï¼ä¸è¬æ¯ä½ä¸ºæ¸¸æèæ¬å åµå¨æ¸¸æä¸
5ï¼èªå¨åæµè¯ï¼ç¼å为ç®åçå®ç°èæ¬ï¼è¿ç¨å¨Selenium/lrä¸ï¼å®ç°èªå¨åã
6ï¼ç½ç«å¼åï¼åå©django,源码flaskæ¡æ¶èªå·±æ建ç½ç«ã
7ï¼ç¬è«è·åæå¤ç大éä¿¡æ¯ï¼æ¹éä¸è½½ç¾å§ãè¿è¡æèµçç¥ãç¬åéæ¿æºãç³»ç»ç®¡çåçèæ¬ä»»å¡çã
MATLAB数值分析编辑推荐
本书《MATLAB数值分析》提供了一套合理、完善的剖析知识体系结构,内容丰富,源码重点突出,剖析具有很强的源码应用性。它免费提供了相关程序源代码下载,剖析微信人脉互粉大厅源码深入、源码详细剖析了MATLAB工程应用技术。剖析全书共分为9章,源码第1、剖析2章讲解了MATLAB基础知识,源码随后的剖析章节分别深入探讨了数值分析方法与图形可视化的内容,包括误差、源码赛事报名源码插值法与曲线拟合、剖析线性方程组的源码数值解法、非线性方程求解、数值微分与数值积分、矩阵特征值计算和常微分方程的数值解。通过使用MATLAB,传统数值分析的编程观念得到了改变,它成为实现上述目标的强大工具。 本书作为教材或参考书,适合理工科各专业本科生、研究生以及应用MATLAB的相关科技人员学习MATLAB数值分析、建模和仿真技术。防滴滴源码通过系统学习本书,读者能够深入理解MATLAB在数值分析领域的应用,掌握相关的编程技能,以及解决实际问题的能力。本书不仅提供了理论知识的阐述,还强调了实践操作,通过具体的例子和练习,帮助读者更好地理解和应用MATLAB进行数值分析。 总之,《MATLAB数值分析》是一本内容丰富、深入浅出的书籍,它不仅涵盖了MATLAB数值分析的片刻网站源码基础知识,还提供了丰富的实例和实践指导,是学习MATLAB数值分析、建模和仿真的理想选择。无论是作为教材还是自学工具,本书都能为读者提供宝贵的知识资源和实践指导,帮助他们提升在MATLAB数值分析领域的专业技能。扩展资料
《MATLAB数值分析》以最新版MATLAB为平台,介绍了数值分析方法与图形可视化。全书共分9章,第1、2章讲解了MATLAB基础知识,第3~9章分别讲解了误差、mingdao oa 源码插值法与曲线拟合、线性方程组的数值解法、非线性方程求解、数值微分与数值积分、矩阵特征值计算和常微分方程的数值解。MATLAB以其独特的魅力,改变了传统数值分析的编程观念,从而成为实现上述目标的有利工具。 《MATLAB数值分析》可作为理工科各专业本科生、研究生以及应用MATLAB的相关科技人员学习MATLAB数值分析、建模、仿真的教材或参考书。å¦ä½ç³»ç»å°èªå¦ Python
æ¯å¦é常æ³å¦å¥½ Pythonï¼ä¸æ¹é¢è¢«çäºçº ç¼ ï¼ä¸ç´æ²¡è½å¨æï¼å¦ä¸æ¹é¢ï¼æ å¿å¦ä¹ ææ¬å¤ªé«ï¼å¿éé»é»æ²çéå é¼ï¼å¹¸è¿çæ¯ï¼Python æ¯ä¸é¨åå¦è å好çç¼ç¨è¯è¨ï¼æ³è¦å®å ¨ææ¡å®ï¼ä½ ä¸å¿ è±ä¸å¤ªå¤çæ¶é´åç²¾åã
Python ç设计å²å¦ä¹ä¸å°±æ¯ç®åæå¦ï¼ä½ç°å¨ä¸¤ä¸ªæ¹é¢ï¼
è¯æ³ç®æ´æäºï¼ç¸å¯¹ Ruby å Perlï¼å®çè¯æ³ç¹æ§ä¸å¤ä¸å°ï¼å¤§å¤æ°é½å¾ç®åç´æ¥ï¼ä¸ç©å¿çå¦ã
åå ¥ç¹å¾å¤ï¼Python å¯ä»¥è®©ä½ å¯ä»¥åå¾å¤äºæ ï¼ç§å¦è®¡ç®åæ°æ®åæãç¬è«ãWeb ç½ç«ã游æãå½ä»¤è¡å®ç¨å·¥å ·ççççï¼æ»æä¸ä¸ªæ¯ä½ æå ´è¶£å¹¶ä¸æ¿ææå ¥æ¶é´çã
åºè¯ä¸å¤è¯´ï¼å¦ä¼ä¸é¨è¯è¨çæ·å¾åªæä¸ä¸ªï¼ Getting Started
¶ èµ·æ¥é¶æ®µ
ä»»ä½ä¸ç§ç¼ç¨è¯è¨é½å å«ä¸¤ä¸ªé¨åï¼ç¡¬ç¥è¯å软ç¥è¯ï¼èµ·æ¥é¶æ®µç主è¦ä»»å¡æ¯ææ¡ç¡¬ç¥è¯ã
硬ç¥è¯
â硬ç¥è¯âæçæ¯ç¼ç¨è¯è¨çè¯æ³ãç®æ³åæ°æ®ç»æãç¼ç¨èå¼çï¼ä¾å¦ï¼åéåç±»åã循ç¯è¯å¥ãåæ¯ãå½æ°ãç±»ãè¿é¨åç¥è¯ä¹æ¯å ·ææ®éæ§çï¼çä¸å»æ¯ææ¡äºä¸ç§è¯æ³ï¼å®é æ¯å»ºç«äºä¸ç§æç»´ãä¾å¦ï¼è®©ä¸ä¸ª Java ç¨åºåå»å¦ä¹ Pythonï¼ä»å¯ä»¥å¾å¿«çå° Java ä¸çå¦å°çé¢å对象çç¥è¯ map å° Python ä¸æ¥ï¼å æ¤è½å¤å¿«éææ¡ Python ä¸é¢å对象çç¹æ§ã
å¦æä½ æ¯åå¼å§å¦ä¹ ç¼ç¨çæ°æï¼ä¸æ¬å¯é çè¯æ³ä¹¦æ¯é常éè¦çãå®çä¸å»å¯è½é常æ¯ç¥ä¹å³ï¼ä½å¯¹äºå»ºç«ç¨³åºçç¼ç¨æç»´æ¯å¿ ä¸å¯å°ã
ä¸é¢ååºäºä¸äºéååå¦è å ¥é¨çæå¦ææï¼
å»éªå³°ç Python æç¨ Python ä¸ææç¨çç¿æ¥ï¼ä¸ä¸ºååæ¥å ¥ç¨åºä¸ççå°ç½æé ã
笨æ¹æ³å¦ Python è¿æ¬ä¹¦å¨è®²è§£ Python çè¯æ³æåæ¶ï¼è¿é带大éå¯å®è·µçä¾åï¼é常éåå¿«éèµ·æ¥ã
The Hitchhikerâs Guide to Python! è¿æ¬æåçéäº Python çæä½³å®è·µï¼ä¸ç®¡ä½ æ¯ Python ä¸å®¶è¿æ¯æ°æï¼é½è½è·å¾æ大ç帮å©ã
Python çå²å¦ï¼
ç¨ä¸ç§æ¹æ³ï¼æ好æ¯åªæä¸ç§æ¹æ³æ¥åä¸ä»¶äºãå¦ä¹ ä¹æ¯ä¸æ ·ï¼è½ç¶æ¨èäºå¤ç§å¦ä¹ èµæï¼ä½å®é å¦ä¹ çæ¶åï¼æ好åªéæ©å ¶ä¸çä¸ä¸ªï¼åæçå®ã
å¿ è¦çæ¶åï¼å¯è½éè¦é 读讲解æ°æ®ç»æåç®æ³ç书ï¼è¿äºç¥è¯å¯¹äºç解åä½¿ç¨ Python ä¸ç对象模åæçå¾å¤§ç帮å©ã
软ç¥è¯
â软ç¥è¯âåæ¯ç¹å®è¯è¨ç¯å¢ä¸çè¯æ³æå·§ãç±»åºç使ç¨ãIDEçéæ©ççãè¿ä¸é¨åï¼å³ä½¿å®å ¨ä¸äºè§£ä¸ä¼ä½¿ç¨ï¼ä¹ä¸ä¼å¦¨ç¢ä½ å»ç¼ç¨ï¼åªä¸è¿ååºçç¨åºï¼çä¸å»æ¾å¾âå»âäºäºã
对è¿äºç¥è¯çå¦ä¹ ï¼åå³äºä½ å°è¯è§£å³çé®é¢çé¢åå深度ã对åå¦è èè¨ï¼èµ·æ¥é¶æ®µææèµ°ç«ï¼æè å¨éæ© Python çæ¬æ¶å¾å¾ä¸å³ï¼ä¸ä¼å¿ç 2.7 ä¸ä¼å¿åè½¬å° 3.0ï¼æè å¾å¾å¨ç±»åºç大海ä¸æ æ³èªæï¼Scrapyï¼Numpyï¼Django ä»ä¹é½è¦è¯è¯ï¼æè åä¸ç¼è¾å¨å£æã大æ¬å·ç¼©è¿æ¢ç©¶ãæä½ç³»ç»è¾©è®ºèµçæ æä¹æ´»å¨ï¼æè æ´å¤©è·ªèè¯æ³ç³ï¼èæ³çæä¹ä¸è¡ä»£ç æææçäºæ åå®ï¼æè å»ææ³å£æ´çæ§è½å®å ¨éç¨æ§å¥å£®æ§å ¨é¨æ»¡åç解å³æ¹æ¡ã
å¾å¤â大çâé½ä¼å诫åå¦è ï¼ç¨è¿ä¸ªç¨é£ä¸ªï¼å°èµ°å¼¯è·¯ï¼è¿æ ·åèæåå¦è æ¨åäºçæ£ç弯路ã
è¿ä¸å¦åè¯åå¦è ï¼å¦ä¹ æ¬æ¥å°±æ¯ä¸ªéè¦ä½ å»èµ°å¼¯è·¯åº Bugï¼åªè½èè¸å®å°ï¼æ²¡æå¥è¿¹åªæçå±çè¿ç¨ã
éæ©ä¸ä¸ªæ¹åå èµ°ä¸å»ï¼åªæèä¸å·®ï¼èµ°ä¸å¨äºåççæ没ææ´å¥½ç解å³éå¾ã
èªå·±èµ°äºå¼¯è·¯ï¼ä½ æç¥éè¿ä¹åç好å¤ï¼æè½ç解为ä»ä¹äººä»¬å¯ä»¥æåç¶ææºå»å¹é å´åè¦åææ£å表达å¼ï¼ä¸ºä»ä¹é¢åè¿ç¨å¯ä»¥è§£å³å´åè¦é¢å对象ï¼ä¸ºä»ä¹æå¯ä»¥æ纵æ¯ä¸æ ¹æéå´åè¦èªå¨ç®¡çå åï¼ä¸ºä»ä¹æå¯ä»¥åµå¥åè°å´åè¦ç¨ Promise...
æ´éè¦çæ¯ï¼ä½ ä¼æç½ï¼é«å±æ¬¡ç解å³æ¹æ³é½æ¯å¯¹ä½å±æ¬¡çå°è£ ï¼å¹¶ä¸æ¯ä»»ä½æ åµä¸é½æ¯ææææåéçã
ææ¯æ¶è¿å°±å波浪ä¸æ ·ï¼é£äºéæ§çå°åå·²ä¹ çææ¯ï¼æ¶éäºè¿æ©è¿ä¼æ¶åçãå°±åç°å¨ç§»å¨ç«¯åºç¨ãæ游å HTML5 çç«çï¼æäºæ¹é¢ä¸æ£å¨éæ¼è¿å» PC çé£äºåå²ä¹ï¼
å æ¤ï¼ä¸è¦æ å¿èªå·±èµ°é路误äºç»èº«ï¼åæ并ä¿æè¿æ¥ææ¯æ£éã
èµ·æ¥é¶æ®µçæ ¸å¿ä»»å¡æ¯ææ¡ç¡¬ç¥è¯ï¼è½¯ç¥è¯åéå½äºè§£ï¼æäºç¨³åºçæ ¹ï¼ç²å£®çæå¹²ï¼æè½é¿åºæµå¯çå¶åï¼ç»åºçç¾çæå®ã
¶ åå±é¶æ®µ
å®æäºåºç¡ç¥è¯çå¦ä¹ ï¼å¿ å®ä¼æå°ä¸éµç©ºèï¼æçè¿äºè¯æ³ç¥è¯æ¯ä¸æ¯ççæç¨ã
没éï¼ä½ çæçæ¯é常æ£ç¡®çãè¦è®© Python åæ¥åºå®çä»·å¼ï¼å½ç¶ä¸è½åçå¨è¯æ³å±é¢ã
åå±é¶æ®µçæ ¸å¿ä»»å¡ï¼å°±æ¯âè·³åº Pythonï¼æ¥æ±ä¸çâã
å¨ä½ é¢åä¼æå¤ä¸ªåæ¯ï¼ç§å¦è®¡ç®åæ°æ®åæãç¬è«ãWeb ç½ç«ã游æãå½ä»¤è¡å®ç¨å·¥å ·ççççï¼è¿äºé½ä¸æ¯ä» ä» ç¥é Python è¯æ³å°±è½è§£å³çé®é¢ã
æ¿ç¬è«ä¸¾ä¾ï¼å¦æä½ å¯¹è®¡ç®æºç½ç»ï¼HTTP åè®®ï¼HTMLï¼ææ¬ç¼ç ï¼JSON ä¸æ æç¥ï¼ä½ è½å好è¿é¨åçå·¥ä½ä¹ï¼èä½ å¨èµ·æ¥é¶æ®µçåºç¡ç¥è¯ä¹åæ ·éè¦ï¼å¦æä½ è¿å¾ªç¯éå½æä¹åé½è¿è¦æ¥ææ¡£ï¼è¿ BFS é½ä¸ç¥éæä¹å®ç°ï¼è¿å°±åå·¥å åç³å³æ¯æ¬¡èµ·é¤é½è¦æèé¤åæä¹ä½¿ç¨ä¸æ ·ï¼é常ä½æã
å¨è¿ä¸ªé¶æ®µï¼ä¸å¯é¿å è¦æ¥è§¦å¤§éç±»åºï¼é 读大é书ç±çã
ç±»åºæ¹é¢
ãAwesome Python 项ç®ãï¼vinta/awesome-python · GitHub
è¿éååºäºä½ å¨å°è¯è§£å³åç§å®é é®é¢æ¶ï¼Python 社åºå·²æçå·¥å ·åç±»åºï¼å¦ä¸å¾æ示ï¼
请ç¹å»è¾å ¥å¾çæè¿°
vinta/awesome-python
ä½ å¯ä»¥æç §å®é éæ±ï¼å¯»æ¾ä½ éè¦çç±»åºã
è³äºç¸å ³ç±»åºå¦ä½ä½¿ç¨ï¼å¿ é¡»ææ¡çæè½ä¾¿æ¯é 读ææ¡£ãç±äºå¼æºç¤¾åºå¤§å¤æ°ææ¡£é½æ¯è±æåæçï¼æ以ï¼è±è¯ä¸å¥½çåå¦ï¼éè¦æ¶è¡¥ä¸ã
书ç±æ¹é¢
è¿éæåªååºä¸äºæè§å¾æ¯è¾æä¸äºå¸®å©ç书ç±ï¼è¯¦ç»ç请çè±ç£ç书è¯ï¼
ç§å¦åæ°æ®åæï¼
❖ãéä½æºæ §ç¼ç¨ãï¼éä½æºæ §ç¼ç¨ (è±ç£)
❖ãæ°å¦ä¹ç¾ãï¼æ°å¦ä¹ç¾ (è±ç£)
❖ãç»è®¡å¦ä¹ æ¹æ³ãï¼ç»è®¡å¦ä¹ æ¹æ³ (è±ç£)
❖ãPattern Recognition And Machine Learningãï¼Pattern Recognition And Machine Learning (è±ç£)
❖ãæ°æ®ç§å¦å®æãï¼æ°æ®ç§å¦å®æ (è±ç£)
❖ãæ°æ®æ£ç´¢å¯¼è®ºãï¼ä¿¡æ¯æ£ç´¢å¯¼è®º (è±ç£)
ç¬è«ï¼
❖ãHTTP æå¨æåãï¼HTTPæå¨æå (è±ç£)
Web ç½ç«ï¼
❖ãHTML & CSS 设计ä¸æ建ç½ç«ãï¼HTML & CSS设计ä¸æ建ç½ç« (è±ç£)
...
åå°è¿éå·²ç»ä¸éè¦ç»§ç»äºã
èªæçä½ ä¸å®ä¼åç°ä¸é¢ç大é¨å书ç±ï¼å¹¶ä¸æ¯è®² Python ç书ï¼èæ´å¤çæ¯ä¸ä¸ç¥è¯ã
äºå®ä¸ï¼è¿éæè°âè·³åº Pythonï¼æ¥æ±ä¸çâï¼å ¶å®æ¯åç° Python åä¸ä¸ç¥è¯ç¸ç»åï¼è½å¤è§£å³å¾å¤å®é é®é¢ãè¿ä¸ªé¶æ®µè½èµ°å°ä»ä¹ç¨åº¦ï¼æ´å¤çåå³äºèªå·±çä¸ä¸ç¥è¯ã
¶ æ·±å ¥é¶æ®µ
è¿ä¸ªé¶æ®µçä½ ï¼å¯¹ Python å ä¹äºå¦ææï¼é£ä¹ä½ ä¸å®ç¥é Python æ¯ç¨ C è¯è¨å®ç°çã
å¯æ¯ Python 对象çâå¨æç¹å¾âæ¯æä¹ç¨ç¸å¯¹åºå±ï¼è¿èªå¨å å管çé½æ²¡æçCè¯è¨å®ç°çå¢ï¼è¿æ¶åå°±ä¸è½åçå¨è¡¨é¢äºï¼åæ¢çæå¼ Python çé»çåï¼æ·±å ¥å°è¯è¨çå é¨ï¼å»çå®çåå²ï¼è¯»å®çæºç ï¼æè½çæ£ç解å®ç设计æè·¯ã
è¿éæ¨èä¸æ¬ä¹¦ï¼
ãPython æºç åæãï¼Pythonæºç åæ (è±ç£)
è¿æ¬ä¹¦æ Python æºç ä¸ææ ¸å¿çé¨åï¼ç»åºäºè¯¦ç»çééï¼ä¸è¿é 读æ¤ä¹¦éè¦å¯¹ C è¯è¨å å模ååæéæçå¾å¥½çç解ã
å¦å¤ï¼Python æ¬èº«æ¯ä¸é¨æç³ å¤ç§èå¼çå¨æè¯è¨ï¼ä¹å°±æ¯è¯´ï¼ç¸å¯¹äº C çè¿ç¨å¼ã Haskell ççå½æ°å¼ãJava åºäºç±»çé¢å对象èè¨ï¼å®é½ä¸å¤çº¯ç²¹ãæ¢èè¨ä¹ï¼ç¼ç¨è¯è¨çâéå¦âï¼å¨ Python ä¸åªè½æéçä½æãå¦ä¹ æç§ç¼ç¨èå¼æ¶ï¼ä»é£äºé¢åè¿ç§èå¼æ´å 纯粹çè¯è¨åºåï¼æè½ææ´æ·±å»çç解ï¼ä¹è½äºè§£å° Python è¯è¨çæ ¹æºã
è¿éæ¨èä¸é¨å ¬å¼è¯¾
ãç¼ç¨èå¼ãï¼æ¯å¦ç¦å¤§å¦å ¬å¼è¯¾ï¼ç¼ç¨èå¼
讲å¸é«å±å»ºç´ï¼ä»åç§ç¼ç¨èå¼ç代表è¯è¨åºåï¼ç»åºäºæ¯ç§ç¼ç¨èå¼ææ ¸å¿çææ³ã
å¼å¾ä¸æçæ¯ï¼è¿é¨è¯¾ç¨å¯¹Cè¯è¨æéå¸¸æ·±å ¥ç讲解ï¼ä¾å¦Cè¯è¨çèååå å管çãè¿äºç¥è¯ï¼å¯¹é 读 Python æºç ä¹æ大æ帮å©ã
Python ç许å¤æä½³å®è·µé½éèå¨é£äºä¼æå¨ç¥çæ¡æ¶åç±»åºä¸ï¼ä¾å¦ DjangoãTornado ççãå¨å®ä»¬çæºä»£ç ä¸æ·éï¼ä¹æ¯ä¸ªä¸éçéæ©ã
¶ æåçè¯
æ¯ä¸ªäººå¦ç¼ç¨çéè·¯é½æ¯ä¸ä¸æ ·çï¼å ¶å®å¤§é½æ®éåå½ï¼æ²¡æè¿·è·¯ç人åªæä¸è½åæç人ï¼
å¸ææ³å¦ Python æ³å¦ç¼ç¨çåå¦ï¼ä¸è¦ç¹è±«äºï¼çå®è¿ç¯æç« ï¼
Just Getting Started ï¼ï¼ï¼
超详细 | 鲸鱼优化算法原理及其实现(Matlab/Python)
在智能优化算法的海洋中,鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一颗璀璨的明珠。由Mirjalili和Lewis于年提出,灵感源于座头鲸群体独特的觅食策略[1]。WOA以三个核心阶段——搜索觅食、收缩包围和螺旋更新,模拟了自然界的高效搜寻过程。 WOA的三个更新机制相互独立,确保了全局探索和局部优化的平衡。它的优点在于无需预设参数,简化了使用,且在众多优化问题中展现出卓越的性能,超越了蚁群和粒子群等算法[1,2]。深入剖析鲸鱼觅食的算法原理
WOA以座头鲸的泡泡网捕食行为为模型,每轮迭代中,鲸鱼个体的位置更新依据随机数p和系数向量A的动态调整,模仿围捕猎物的过程。具体步骤包括:搜索觅食:利用随机选择的鲸鱼位置(X⃗ rand(t))和当前位置(X⃗ (t))之间的距离,通过向量A和C来决定位置更新,其中向量a随迭代减小,随机向量r则确保了动态变化。
收缩包围:以最优解X⃗ best(t)为目标,鲸鱼个体的移动步长由包围步长A⃗和当前位置与最优解的距离决定。
螺旋更新:基于鲸鱼与最佳位置的距离,通过随机数l和固定系数b生成螺旋路径,推动鲸鱼向最优解螺旋前进。
Python实现代码概览
接下来,我们将深入探讨WOA的MATLAB和Python编程实现。从基础流程图到代码细节,无论是初学者还是进阶者,都能在这里找到帮助和灵感。 示例代码为了便于理解和实践,这里提供MATLAB和Python的代码片段,以及解决乱码问题的建议,确保您的代码运行无阻[3]。
算法性能验证
WOA的性能通过CEC测试函数F进行评估,其数学表达式展示了算法在复杂问题上的求解能力[4,5]。无论是在MATLAB还是Python中,算法的表现均展示了其强大的寻优能力。获取源码与后续更新
想要获取完整代码和更多优化改进方法,只需在公众号“KAU的云实验台”回复“WOA”即可。持续关注,我们会分享更多优化算法的实际应用案例。 你的支持是我们的动力,如果你从中受益,别忘了点击右下角的赞或者在看,让我们一起在优化算法的探索之旅中前行[6]。如有定制需求,可通过公众号联系作者[7]。2024-12-23 02:03
2024-12-23 00:44
2024-12-23 00:02
2024-12-22 23:59
2024-12-22 23:42
2024-12-22 23:30
2024-12-22 23:28
2024-12-22 23:19