当前位置:首页 » 编程软件 » 二阶编程

二阶编程

发布时间: 2022-06-16 14:28:06

Ⅰ matlab中,已知典型二阶函数G(s)=w*2/s*2+2ws+w*2,试利用m文件编程实现当w

摘要 实现代码:

Ⅱ 用C语言编程欧拉法、梯形法、二级二阶R-K、三级三阶R-K、四级四阶R-K求解下列方程的数值解

欧拉法求解y'=-2y-4x, x0=0, y0=2, x<=1的求解如下:

#include<stdio.h>

/*solve ode: dy/dx = -2*y -4*x*/

float fun(float x,float y){

float f;

f=-2.0*y -4.0*x;

return f;

}

int main(){

float x0=0,y0=2.0,x,y,h=0.1,t=1.0,k;

/* printf(" Enter x0,y0,h,xn: "); scanf("%f%f%f%f",&x0,&y0,&h,&t);*/

x=x0;

y=y0;

printf(" x y ");

while(x<=t) {

k=h*fun(x,y);

y=y+k;

x=x+h;

printf("%0.3f %0.3f ",x,y);

}return 0;

}

代码截图+运行结果

(晚点我再来看后面的几小问)

Ⅲ 如何用Matlab编程计算二阶常微分方程组的数值解

用Matlab编程计算二阶常微分方程组的数值解的方法有很多种,最常用有ode45函数。

ode45函数的使用格式:

【t,y】=ode45(odefun,tspan,y0)

例如:

Ⅳ 怎样通过matlab编程语言实现二阶电路的求解

因为你w没有给定值,所以我假定为工频了,代码如下
R1=22;L=50e-3;R2=33;C=100e-6;w=2*pi*50;Uc=200*exp(1i*90*pi/180)/(R2*1/(1i*w*C)/(R2+1/(1i*w*C))+R1+1i*w*L)*R2*1/(1i*w*C)/(R2+1/(1i*w*C));
fplot(@(t)(200*cos(w*t+90*pi/180)),[0,0.08],'r')
hold on
fplot(@(t)(abs(Uc)*cos(w*t+angle(Uc))),[0,0.08],'b')
legend('Us(t)','Uc(t)')
grid on

Ⅳ 求助非线性二阶微分方程编程

用dsolve
>> Y=dsolve('D2x+a*sin(x)=0')
Warning: Explicit solution could not be found; implicit solution returned.
> In dsolve at 321

Y =

Int(1/(2*a*cos(_a)+C1)^(1/2),_a = .. x)-t-C2 = 0
Int(-1/(2*a*cos(_a)+C1)^(1/2),_a = .. x)-t-C2 = 0

显式的解无法获得,只能得到隐式的解

Ⅵ matlab编程实现二阶切比雪夫Ⅰ型低通滤波器,要求滤除1000HZ和4500HZ的复合信号中4500HZ的部分。

clc;clear all;
%归一化模拟切比雪夫I型低通滤波器的设计
Wp=2*pi*1000;Ws=2*pi*1500;rp=3;rs=30;%设计滤波器的参数
wp=1;ws=Ws/Wp; %频带变换得到归一化滤波器
[N,wc]=cheb1ord(wp,ws,rp,rs,'s'); %计算滤波器阶数和3dB截止频率
[z,p,k]=cheb1ap(N,rp); %计算归一化滤波器的零极点
[b,a]=zp2tf(z,p,k); %计算归一化滤波器系统函数的系数
w0=0:0.05*pi:2*pi;
[h0,w0]=freqs(b,a,w0); %求频率响应
figure(1)
plot(w0,20*log10(abs(h0)),'k');
title('归一化模拟且比雪夫I型低通滤波器');
xlabel('频率f/Hz');ylabel('幅度/dB');grid;
%一般低通切比雪夫低通滤波器的设计
[B,A]=lp2lp(b,a,Wp); %将归一化滤波器转换为一般模拟滤波器
w1=0:2*pi*100:2*pi*30000;
[h1,w1]=freqs(B,A,w1);
figure(2)
plot(w1/(2*pi),20*log10(abs(h1)),'k');
title('一般模拟且比雪夫I型低通滤波器');
xlabel('频率f/Hz');ylabel('幅度/dB');grid;
%冲激响应不变法设计低通巴特沃斯数字滤波器
Fs=10000; %采样频率
Wp1=Wp/Fs;Ws1=Ws/Fs;
rp1=3;rs1=30; %设计滤波器的参数
[N1,Wn]=cheb1ord(Wp,Ws,rp1,rs1,'s') %计算滤波器阶数
[b1,a1]=cheby1(N1,rp1,Wn,'s'); %样本AF的系数函数的分子分母系数
[bz,az]=impinvar(b1,a1,Fs); %冲激响应不变法从AF到DF变换
[C1,B1,A1]=dir2par(bz,az) %直接形式转换为并联型
w2=[Wp1,Ws1]; %数字临界频率
[H,f]=freqz(bz,az); %绘制数字滤波器的幅频特性和相频特性
[db,mag,pha,grd,f]=freqz_m(bz,az); %扩展函数检验滤波器的其他特性
figure(3)
plot(f/pi,db,'k');
title('冲激响应不变法设计低通切比雪夫I型数字滤波器');
xlabel('角频率w/pi');ylabel('振幅/dB');
axis([0,0.35,-30,5]);grid;
%用设计好的滤波器对信号进滤波处理
figure(4)
f1=500;f2=4000; %输入信号的频率
N=100; %数据长度
dt=1/Fs;n=0:N-1;t=n*dt; %采样间隔和时间序列
x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t); %输入信号
subplot(2,1,1),plot(t,x),title('输入信号');
y=filtfilt(bz,az,x); %用滤波器进行滤波处理
y1=filter(bz,az,x); %进行滤波处理
subplot(2,1,2),plot(t,y,t,y1,':'),title('输出信号');xlabel('时间/s');
legend('filtfilt','filter') %加图例

freqz_m.m文件
function[db,mag,pha,grd,w]=freqz_m(b,a)
[H,w]=freqz(b,a,1000,'whole');
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
grd=grpdelay(pha);

dir2par.m文件
function [C,B,A] = dir2par(b,a)
M=length(b);N=length(a);
[r1,p1,C]=resiez(b,a);
p=cplxpair(p1,10000000*eps);
I=cplxcomp(p1,p);
r=r1(I);
K=floor(N/2);B=zeros(K,2);A=zeros(K,3);
if K*2==N;
for i=1:2:N-2
Brow=r(i:1:i+1,:);
Arow=p(i:1:i+1,:);
[Brow,Arow]=resiez(Brow,Arow,[]);
B(fix((i+1)/2),:)=real(Brow);
A(fix((i+1)/2),:)=real(Arow);
end
[Brow,Arow]=resiez(r(N-1),p(N-1),[]);
B(K,:)=[real(Brow) 0];A(K,:)=[real(Arow) 0];
else
for i=1:2:N-1
Brow=r(i:1:i+1,:);
Arow=p(i:1:i+1,:);
[Brow,Arow]=resiez(Brow,Arow,[]);
B(fix((i+1)/2),:)=real(Brow);
A(fix((i+1)/2),:)=real(Arow);
end
end

cplxcomp.m文件
function I=cplxcomp(p1,p2)
I=[];
for j=1:1:length(p2)
for i=1:1:length(p1)
if(abs(p1(i)-p2(j))<0.0001)
I=[I,i];
end
end
end
I=I';

Ⅶ 二阶龙格库塔法迭代公式用Matlab怎么编程

四阶龙格库塔法精度为4,属于单步递推法,单步递推法的基本思想是从(x(i),y(i))点出发,以某一斜率沿直线达到(x(i+1),y(i+1))点,从上述定义可以看出,龙格库塔实质上是求一阶微分方程,对其进行排列后就可以进入Matlab进行编程。

但是如果将一阶导看作变量,则二阶导也不过是这个变量的一阶导而已,对于下述二阶方程:基本思想如下令位移为q的一阶导,即位移的一阶导(速度)为q的二阶导。

是用一个简单的迭代式来画分叉混沌图的,从这个例子里,不难学到如何如何画分叉图,其原理不难,两个循环来在2维平面作图,一个if筛选迭代的结果。

还是类似上面那个例子,这里给出不一样的代码实现方法。没看懂的可以再看一遍,里面主要的还是两个for循环,下面这个代码是用第三个for循环来实现对迭代结果的筛选的,这里不必纠结细节,功能实现用if或者for都可以。

依次类推,如果在区间[xi,xi+1]内多预估几个点上的斜率值K1、K2、……Km,并用他们的加权平均数作为平均斜率K*的近似值,显然能构造出具有很高精度的高阶计算公式。经数学推导、求解,可以得出四阶龙格-库塔公式,也就是在工程中应用广泛的经典龙格-库塔算法这样就完成了matlab的编程。

Ⅷ 二阶通用滤波器用C语言怎么编程

shorth[],shorty[]){inti,j,sum;for(j=0;j>15;}}2voidfir(shortx[],shorth[],shorty[]){inti,j,sum0,sum1;shortx0,x1,h0,h1;for(j=0;j>15;y[j+1]=sum1>>15;}}3voidfir(shortx[],shorth[],shorty[]){inti,j,sum0,sum1;shortx0,x1,x2,x3,x4,x5,x6,x7,h0,h1,h2,h3,h4,h5,h6,h7;for(j=0;j>15;y[j+1]=sum1>>15;}}

Ⅸ 关于二阶和四阶龙格库塔法的计算与编程调试

求解二阶微分方程,初始条件还需要给出y1'(0)和y2'(0)。这里暂时按照0处理。

function zd530003514
a=0.1;
b=0.1;
Y0 = [b-1; 0; b; 0];

% 解方程
[t,Y]= ode45(@ode,[0 10],Y0);
y1=Y(:,1);
y2=Y(:,3);

% 绘图
subplot 211
plot(t,y1);
subplot 212
plot(t,y2);

% 微分方程定义
function dY = ode(t, Y)
L1=5;
L2=0.01;
a0=2;
b0=2;
c0=2;

y1=Y(1);y2=Y(3);
dY = [
Y(2);
-(a0*y2+b0*y2^2+c0*y2^3) - L1^2*L2*y1 - L1^2*y1;
Y(4);
-(a0*y2+b0*y2^2+c0*y2^3) - L1^2*L2*y1;
];

Ⅹ 龙格库塔求解二阶微分方程组的MATLAB编程

MATLAB求解x''+0.7x'+0.8x'|x'|+25.6x-25.6x³=0二阶微分方程组的方法,可以按下列步骤进行:
1、建立自定义函数func()
function
f
=
func(t,x)
%x''+0.7x'+0.8x'|x'|+25.6x-25.6x³=0
f(1)=x(2);
f(2)=25.6*x(1)^3-25.6*x(1)-0.8*x(2)*abs(x(2))-0.7*x(2);
f=f(:);
2、建立龙格库塔算法函数runge_kutta()
调用格式:[t,x]
=
runge_kutta(@(t,x)func(t,x),x0,h,a,b);
3、然后根据x和x'数据,绘制出x(t)、x′(t)的图形。
plot(x(:,1),x(:,2))

热点内容
聊天软件编程 发布:2024-09-17 03:00:07 浏览:725
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662
情逢敌手迅雷下载ftp 发布:2024-09-17 01:32:35 浏览:337
安卓如何让软件按照步骤自动运行 发布:2024-09-17 01:28:27 浏览:197
Z包解压命令 发布:2024-09-17 01:27:51 浏览:221
吉林ipfs存储服务器云主机 发布:2024-09-17 01:27:38 浏览:685