首页 > 编程知识 正文

matlab求解复杂三角函数方程,matlab期末作业

时间:2023-05-04 09:53:32 阅读:275143 作者:3359

题目


1、三次多项式逼近sinx问题 1)题目分析:

用一个三次多项式在区间**[0,2π]内逼近函数sinx(在给定区间内,均匀选择20个采样点),求出三次多项式表达式,并画出三次多项式与sinx的比较曲线”,知主要内容如下:
①sin(x) 在[0,2π]均匀选取
20个采样点;
②三次多项式逼近,也即
多项式拟合**问题;
③画出曲线;
在本课程中,我们已经学过了polyfit函数多项式拟合的方法其中函数原型为: p=polyfit(x,y,n)
x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。在求出p之后。可利用poly2sym§生成多项式函数,也可利用polyval(p,x)函数进行多项式求值。
对于两条曲线图形绘制而言,只需使用plot函数第三或第四种表达形式即可:
plot(X,Y) plot(X,Y,LineSpec) plot(X1,Y1,...,Xn,Yn) plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)
在此格式中,每对x,y必须符合plot(x,y)中的要求,不同对之间没有影响,命令将对每一对x,y绘制曲线。plot是绘制一维曲线的基本函数,但在使用此函数之前,须先定义曲线上每一点的x以及y坐标。同时可以利用LineSpec - 线型、标记和颜色进行区分。



2)代码实现:

通过以上分析,可写出代码如下:

>> syms x y;>> y = sin(x);>> a = 0 : 2*pi/20 : 2*pi; % 在[0:2*pi]均匀取20个点>> b = sin(a); % 对应sinx值>> p = polyfit(a,b,3) % 对这20个点进行三次多项式进行线性拟合>> y = poly2sym(p) % 生成多项式函数>> x1 = linspace(0,2*pi); % [0:2*pi]>> y1 = sin(x1);>> y2 = polyval(p,x1); % 拟合曲线>> plot(x1,y1,'b',x1,y2,'r') % 画图>> title('sinx及其三次多项式拟合曲线')>> ylabel('y')>> xlabel('x')

运行结果如下:

p = 0.0886 -0.8347 1.7861 -0.1192y =(1595403964975287*x^3)/18014398509481984- (3759082031905793*x^2)/4503599627370496+ (8043829737606779*x)/4503599627370496- 8586688527312135/72057594037927936

其中蓝色的为sin(x),红色的为三次多项式拟合曲线,看出有少许偏移,拟合效果还不错;

2、卫星运动轨迹求解问题 1)题目分析

易知本题为微分方程求解问题,且初值等条件已给出,我们只需求出数值解并画出轨迹图。考虑使用ode45函数求解非刚性微分方程,函数如下:
[t,y] = ode45(odefun,tspan,y0,options)
其中,tspan = [t0 tf])求微分方程组 y′=f(t,y) 从 t0 到 tf 的积分,初始条件为 y0。解数组 y 中的每一行都与列向量 t 中返回的值相对应。使用由 options(使用 odeset 函数创建的参数)定义的积分设置。例如,使用 AbsTol 和 RelTol 选项指定绝对误差容限和相对误差容限,或者使用 Mass 选项提供质量矩阵。

2)代码实现

首先编写m文件,代码如下:

function dx = homework2(t , x)% x1 : x% x2 : dx% x3 : y% x4 : dyu1 = 1 / 82.45;u2 = 1 - u1;r1 = sqrt((x(1) + u1)^2 + x(3)^2);r2 = sqrt((x(1) - u2)^2 + x(3)^2);dx = [x(2) 2*x(4) + x(1) - u2*(x(1) + u1)/r1^3 - u1*(x(1) - u2)/r2^3 x(4) -2*x(2) + x(3) - u2*x(3)/r1^3 - u1*x(3)/r2^3]end

如注释所示,x1为x,x2为dx,x3为y,x4为dy;

命令行代码为:

>> x0=[1.2;0;0;-1.0493575]; % 初始条件% opts = odeset('RelTol',1e-6,'AbsTol',1e-6);>> [t , x]=ode45(@homework2,[0,24],x0); % 求解% [t , x]=ode45(@homework2,[0,24],x0,opts); >> plot(x(:,1),x(:,3))>> title('阿波罗卫星运动轨迹')>> xlabel('x')>> ylabel('y')>> save('homework2.mat')

首先进行不进行options赋值,运行结果如左图下,赋值如右图(两次执行,即注释部分):

3、RLC振荡电路simulink仿真 1)题目分析

如图所示,电路模型及其参数已经给出,我们只需在simulink中搭建模型即可。
本次仿真模型用到的有电容(Capacitor),电阻(Resistor),电感(Inductor)、开关(Circuit Breaker)、直流电流源(DC Current Source)、示波器(Scope)、Solver Configuration、Current Sensor、Pulse Generator、Simulink-PS Converter、PS-Simulink
Converter、To Workspace等。

2)模型搭建



最终模型如图所示,

ConditionBlock BehaviorResistance Parameter UsedvT < ThresholdThe breaker is closed. Port 1 connects to port 2.Closed ResistancevT ≥ ThresholdWhen the current in port 1 goes through zero, the phase disconnects from port 2. The breaker is open.Open Conductance

因此,设置Pulse Generator如下:

下面是脉冲信号示意图:


下图即为仿真结果,很容易和上图对照:

然后利用To Workspace导入工作区保存文件,

代码如下:

>> save('homework3mat')

读出数据稳定结果为0.0248A

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。