科研踩坑:角度制三角函数求导要乘上π/180

2024-02-10 06:38

本文主要是介绍科研踩坑:角度制三角函数求导要乘上π/180,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面

用MATLAB作图,查看其曲线和求导曲线是否和教材相一致,其中用了sin求导(角度制),以一个函数为例:

y = C s i n d ( x ) y=\frac{C}{sind(x)} y=sind(x)C

(sind(x)是以角度为单位后同),然后对它进行求导:

d y d x = − C ⋅ c o s d ( x ) ( s i n d ( x ) ) 2 = − y ⋅ c o s d ( x ) s i n d ( x ) = − y ⋅ c o t d ( x ) \frac{dy}{dx}=-\frac{C\cdot cosd(x)}{(sind(x))^2}=-\frac{y\cdot cosd(x)}{sind(x)}=-y\cdot cotd(x) dxdy=(sind(x))2Ccosd(x)=sind(x)ycosd(x)=ycotd(x)

y = 1 s i n d ( x ) y=\frac{1}{sind(x)} y=sind(x)1是单调递减函数,教材的图应该是对他进行了取绝对值的操作(要不原来是个负数),也即:

∣ d y d x ∣ = y ⋅ c o t d ( x ) |\frac{dy}{dx}|=y\cdot cotd(x) dxdy=ycotd(x)
在这里插入图片描述
编写下面的代码

clear 
close all
pm_theta_half=8:0.1:28;
pm_lambda_B0=1.9;
pm_constant=0.2644;
pm_lambda_B = pm_constant./sind(pm_theta_half);
dif_pm_lambda_theta_num=abs((diff(pm_lambda_B))./(diff(pm_theta_half)));
dif_pm_lambda_theta_cal=pm_lambda_B.*cotd(pm_theta_half);
colororder({'[0.2,0.5,0.7]','[0.17 0.31 0.16]'})
yyaxis left
plot(pm_theta_half,pm_lambda_B,...'LineWidth',3, ...'Color',[0.2,0.5,0.7]);ylabel('Bragg wavelength, \mum','FontSize',14);yyaxis right
plot(pm_theta_half(1,1:end-1),dif_pm_lambda_theta_num, ...'-.',...    'LineWidth',3, ..."Color",[0.17 0.31 0.16])
hold on;
scatter(pm_theta_half,dif_pm_lambda_theta_cal);
xlabel('Angle, \theta/2, degrees','FontSize',14)
ylabel('\Delta \lambda_b/degree \mum/deg','FontSize',14);
xaxis(8,28);
xticks(linspace(8,28,11))
ax = gca;
ax.FontSize = 14;

在这里插入图片描述

但是发现用离散求导和实际求导差很大,(绿色画圈的是求导计算式的值(不符合实际,范围和教材的图差别很大),点划线是离散求导的值(符合实际,范围和教材的图大致一样))。

利用MATLAB自带的diff函数进行求解,终于找到了问题的所在!

syms x C
f=C/sind(x);
df1=diff(f,x,1)

经过求解如下:
在这里插入图片描述
角度制的三角函数求导时要化成弧度制再进行求导!(国际单位rad!!!)我们再进行一次求导:

d y d x = d ( C s i n d ( x ) ) d x = C s i n ( π ⋅ x / 180 ) d x = − C ⋅ c o s ( π ⋅ x / 180 ) ( s i n ( π ⋅ x / 180 ) ) 2 ⋅ π 180 = − y ⋅ c o s ( π ⋅ x / 180 ) s i n ( π ⋅ x / 180 ) ⋅ π 180 = − y ⋅ c o t ( π ⋅ x 180 ) ⋅ π 180 = − y ⋅ c o t d ( x ) ⋅ π 180 \frac{dy}{dx}=\frac{d(\frac{C}{sind(x)})}{dx}=\frac{\frac{C}{sin(\pi\cdot x/180)}}{dx}=-\frac{C\cdot cos(\pi \cdot x/180)}{(sin(\pi \cdot x/180))^2}\cdot \frac{\pi}{180}=-\frac{y\cdot cos(\pi \cdot x/180)}{sin(\pi \cdot x/180)}\cdot \frac{\pi}{180}=-y\cdot cot(\frac{\pi \cdot x}{180})\cdot \frac{\pi}{180}=-y\cdot cotd(x)\cdot \frac{\pi}{180} dxdy=dxd(sind(x)C)=dxsin(πx/180)C=(sin(πx/180))2Ccos(πx/180)180π=sin(πx/180)ycos(πx/180)180π=ycot(180πx)180π=ycotd(x)180π

可以看出角度制的三角函数求导要乘上π/180 !
修改代码中求导的那一项(第8行)如下:

dif_pm_lambda_theta_cal=pm_lambda_B.*cotd(pm_theta_half)*pi/180;

在这里插入图片描述

这样图就对应上了!

这篇关于科研踩坑:角度制三角函数求导要乘上π/180的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/696394

相关文章

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

180. 連續出現的數字

180. 连续出现的数字 Question 表:Logs +-------------+---------+| Column Name | Type |+-------------+---------+| id | int || num | varchar |+-------------+---------+在 SQL 中,id 是

【SGU】180. Inversions(归并排序求逆序数)

以前一般用树状数组和线段树做这种题 这次换个思路试试,归并排序! #include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int maxn = 111111;int n;int array[maxn];int tmp[maxn];L

科研小白成长记40——第三个五年计划

小gap期间,拼命玩和拼命休息的同时,仔细思考了下我期望的五年之后的样子,gap结束,算是目标愈发清晰起来。曾经,读博的目标是成为一名independent researcher,并且具备发至少一篇顶会的能力。而现在,希望五年后的自己,成为一名good independent researcher。当然,这里的good,根据现阶段的科研榜样,已经有了具体的metrics。 首先是随时在线的深度理解

如何从SEO角度解读“地摊经济”?

如果你是一名SEO人员,经常我们需要做的第一件事就是做关键词挖掘与分析,特别是当我们试图去做热点新闻事件排名的时候。 我们只有深刻的理解目标关键词背后真正潜在的搜索需求,我们才可以根据关键词的属性,撰写高质量的相关性文章,比如:地摊经济,依然成为各地市广为热议的话题。 那么,如何从SEO角度解读“地摊经济”? 根据以往关键词优化的经验,曾庆平将通过如下内容阐述: 1、关键词拓展 通常

物联网之ESP32控制舵机、通过网页设置舵机角度、Web服务、舵机原理、接线、Arduino、WiFi、Http

MENU 前言原理硬件电路设计软件程序设计LEDC输出PWM信号使用第三方库控制舵机网页控制舵机 前言 舵机在电子产品中非常常见,比如四足机器人、固定翼航模等都有应用,因此学习舵机对电子制作非常有意义。本文章使用Arguino的PWM对SG90舵机旋转角度控制。 原理 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机只

AGV行业遇冷,叉车AGV逆风崛起:180家企业掀起血战

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 在自动化物流领域,一场悄然发生的变革正引领着行业风向的转折。尽管2024年以来,整体AGV(自动引导车)行业因下游市场需求疲软而遭遇增速下滑的困境,但无人叉车这一细分领域却如同一股逆流,展现出前所未有的活力与潜力。 在这场“逆风膨胀”的浪潮中,不仅吸引了资本的密集关注,更激发了行业内外企业的激烈竞争,共同绘制了一幅波澜壮阔的市

反常识!科研巨头扎堆夕阳行业?A股研发之王是它?

这是邢不行第 119 期量化小讲堂的分享 作者 | 邢不行 2023年华为研发费用再创新高,高达1600亿。 多年高研发投入让华为在一众领域遥遥领先。 研发费用占全年收入23% 遍观全球,各行各业巨头也极为重视研发。 2022年全球研发投入排名 细数它们的成功史,大抵都离不开投入研发、收入增加,继而加大研发力度,收入狂飙这一路径。 高研发投入能否作为判断公司好坏的依据?

opencv实战项目二十:检测箱盖的旋转角度以及位置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、算法流程:二、算法实现:2.1 二值化箱盖并获取最大轮廓:2.2 凸包与多边形近似提取矩形2.3 最小外接矩形获取角度与位置 三,整体代码实现:四,实现效果: 前言 在当今的工业自动化领域,精密制造和智能控制技术的发展正推动着生产流程的持续优化。随着机器视觉技术的不断成熟,其在工业应用

判断两个yaw角度之差是否超过了90度

一. 判断两个yaw角度之差是否超过了90度 要判断两个 yaw 角度之差是否超过 90 度,你可以通过计算这两个角度的差值,并将其归一化为 [-180, 180] 的范围内。接着,只需判断该差值的绝对值是否大于 90 度。 实现步骤: 计算角度差:两个角度的差值可以通过直接相减得到,但需要将结果限制在 [-180, 180] 范围内,因为角度是周期性的。归一化到 [-180, 180] 范