matlab求助
dy=[y(2);2*(1-u)/y(1)^3-2*(1+beta)*y(1)/(1+beta*y(1)^2)+2*u*y(1)];m=[0,00010.0010.010...
dy=[y(2);
2*(1-u)/y(1)^3-2*(1+beta)*y(1)/(1+beta*y(1)^2)+ 2*u*y(1)];
m=[0,0001 0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9],求他的半波全宽,还有y(0)=sqrt(m),他的半高时y=sqrt((m+1)/2),画出图,即beta和未知数的图.简单地说就是求出y=sqrt((m+1)/2)时对应的x,再把x*2就行了,肯定有加分!!
function dy=func(x,y,beta,m)
u=1/(1-m)+m*(1+beta)*[log(1+m*beta)-log(1+beta)]/[beta*(1-m)^2];
dy=[y(2);
2*(1-u)/y(1)^3-2*(1+beta)*y(1)/(1+beta*y(1)^2)+ 2*u*y(1)];这一部分吧是微分方程,m=[0,0001 0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9],是m的取值,就是当m等于这么几个数时分别求半波宽,这个半高是y=sqrt((m+1)/2),这个是已知的,求出他对应的x就再乘以2就是对应的全宽了,要画出m取不同值时对应的半波全宽的图形 正确图形如下 初值是y(0)=sqrt(m) 横坐标是beta,纵坐标就是半波全宽,就是当y=sqrt((m+1)/2)时对应的x的值乘以2 y'(0)=0,我有个求半波全宽的例程,确实算了很多次 展开
2*(1-u)/y(1)^3-2*(1+beta)*y(1)/(1+beta*y(1)^2)+ 2*u*y(1)];
m=[0,0001 0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9],求他的半波全宽,还有y(0)=sqrt(m),他的半高时y=sqrt((m+1)/2),画出图,即beta和未知数的图.简单地说就是求出y=sqrt((m+1)/2)时对应的x,再把x*2就行了,肯定有加分!!
function dy=func(x,y,beta,m)
u=1/(1-m)+m*(1+beta)*[log(1+m*beta)-log(1+beta)]/[beta*(1-m)^2];
dy=[y(2);
2*(1-u)/y(1)^3-2*(1+beta)*y(1)/(1+beta*y(1)^2)+ 2*u*y(1)];这一部分吧是微分方程,m=[0,0001 0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9],是m的取值,就是当m等于这么几个数时分别求半波宽,这个半高是y=sqrt((m+1)/2),这个是已知的,求出他对应的x就再乘以2就是对应的全宽了,要画出m取不同值时对应的半波全宽的图形 正确图形如下 初值是y(0)=sqrt(m) 横坐标是beta,纵坐标就是半波全宽,就是当y=sqrt((m+1)/2)时对应的x的值乘以2 y'(0)=0,我有个求半波全宽的例程,确实算了很多次 展开
展开全部
微分方程的初值呢
画图的横纵坐标分别代表什么呢?
你这个计算量很大,得解微分方程几千次(解几千种的系数的微分方程)吧。
====
你的y'初值呢?
第一步:建立相应的m文件
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dy=func(x,y)
%Matlab的中括号与数学上的中括号不同,这里全部都是小括号
global m beta
u=1/(1-m)+m*(1+beta)*(log(1+m*beta)-log(1+beta))/(beta*(1-m)^2);
dy=[y(2);
2*(1-u)/y(1)^3-2*(1+beta)*y(1)/(1+beta*y(1)^2)+ 2*u*y(1)];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
第二步.求解
在Matlab下面输入:
xx=[0,6]; %求解区域
m0=[0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]; %我也不知道为什么,0.1以及以下的值代入计算,就出现振荡,这一点我没有调出来,你再看看相关的内容吧
beta0=linspace(1,100,100);
figure;
global m beta
for m=m0
y0=[sqrt(m);0];
sm_1=sqrt((m+1)/2);
width=[];
for beta=beta0
[x,y]=ode45('func',xx,y0);
width=[width,2*interp1(y(:,1),x,sm_1)];
end
plot(beta0,width)
hold on
end
刚才回想了一下,可能跟我用interp1函数有关。你可以自己用for查找等于sqrt((m+1)/2)相应的x值。看看。
画图的横纵坐标分别代表什么呢?
你这个计算量很大,得解微分方程几千次(解几千种的系数的微分方程)吧。
====
你的y'初值呢?
第一步:建立相应的m文件
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dy=func(x,y)
%Matlab的中括号与数学上的中括号不同,这里全部都是小括号
global m beta
u=1/(1-m)+m*(1+beta)*(log(1+m*beta)-log(1+beta))/(beta*(1-m)^2);
dy=[y(2);
2*(1-u)/y(1)^3-2*(1+beta)*y(1)/(1+beta*y(1)^2)+ 2*u*y(1)];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
第二步.求解
在Matlab下面输入:
xx=[0,6]; %求解区域
m0=[0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]; %我也不知道为什么,0.1以及以下的值代入计算,就出现振荡,这一点我没有调出来,你再看看相关的内容吧
beta0=linspace(1,100,100);
figure;
global m beta
for m=m0
y0=[sqrt(m);0];
sm_1=sqrt((m+1)/2);
width=[];
for beta=beta0
[x,y]=ode45('func',xx,y0);
width=[width,2*interp1(y(:,1),x,sm_1)];
end
plot(beta0,width)
hold on
end
刚才回想了一下,可能跟我用interp1函数有关。你可以自己用for查找等于sqrt((m+1)/2)相应的x值。看看。
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询