重写反正切函数actan2——最小二乘法拟合泰勒展开系数



前言

C++反正切函数 actan 与 actan2 计算复杂度较高,且对输入参数有要求,基于对 arctan 的泰勒展开近似计算角度,降低计算复杂度。


一、反正切函数 arctan 特性介绍

反正切函数 arctan 泰勒展开为:
在这里插入图片描述
同时在[-1, 1]的区间内可视为有固定系数的曲线,因此可尝试进行曲线拟合
在这里插入图片描述

二、最小二乘法拟合曲线

最小二乘法,x范围取[-π/4, π/4],y范围为x对应的tan值,对arctan函数进行四阶泰勒展开并忽略最小项,利用python的leastsq或curve_fit进行最小二乘拟合(最近在练习python)

代码如下(python):

import math
import numpy as np
from scipy.optimize import leastsq, curve_fit

def fun(p, x):
    a1, a2, a3 = p
    return x - a1 * x**3 + a2 * x**5 - a3 * x**7

def fun1(x,a1,a2,a3):
    return x - a1 * x**3 + a2 * x<
### 回答1: 在Matlab中,atan2函数和atan函数都是用于计算正切函数函数。不同之处在于,atan2接受两个参数,并返回以弧度为单位的角度,范围在-pi到pi之间。而atan函数仅接受一个参数并返回以弧度为单位的角度,范围在-pi/2到pi/2之间。 ### 回答2: matlab中atan2函数actan都是用来求正切函数函数。但是,在使用时两者有一些不同之处。 首先,actan只能求一个参数的正切函数,即输入一个实数,输出其正切,而atan2可以求两个参数的正切函数。具体来说,atan2(x,y)可以求解的是以原点为顶点,通过(x,y)这个点的角度;而actan函数只能求解以原点为顶点的角度。 其次,在计算时,actan函数只能输入一个实数x,其返回是在-π/2到π/2之间的一个实数,表示正切为x的角度;而在计算atan2(x,y)时,其输入参数是两个实数x和y,其返回是在-π到π之间的实数,表示以原点为顶点,经过点(x,y)的角度。这样,atan2函数可以更加全面地表示出一个向量的方向,而actan则只能表示同一象限内的角度。 最后,需要注意的是,在计算时,actan函数需要输入实数,并且其返回是弧度。而atan2函数则可以输入实数或向量,并且其返回也是弧度。如果需要得到以度数表示的结果,需要将返回乘以180/pi。 ### 回答3: MATLAB中的atan2函数actan函数都是与正切函数有关的函数,但是它们的用途和表现形式略有不同。 首先,MATLAB中的atan2函数正切函数的一种实现,它可以计算给定y坐标和x坐标的点的正切,返回的结果是[-π,π]的弧度。与普通的atan函数不同的是,atan2函数可以处理x坐标等于0的点,而普通的atan函数不能处理这样的点。例如,若有一个点P(0,-1),则使用atan函数计算时会发生错误,而atan2函数则可以正确地计算出该点的正切。 其次,MATLAB中的actan函数正切函数的一种变形,它的输入是一个实数x,返回的结果是[-π/2,π/2]的弧度。该函数的计算公式为:actan(x) = atan(1/x)。因此,如果输入的x为0,那么actan函数将会返回无穷大,如果输入的x为负,则actan函数返回的结果将会是一个负。 总的来说,在MATLAB中使用atan2函数可以更加方便地计算平面直角坐标系中的角度,特别是在处理x坐标为0的点时非常实用,而actan函数则适用于计算给定实数的正切函数,但由于其运算公式的特殊性质,其输入要谨慎考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值