大佬救命这matlab题怎么做?

作者&投稿:蓍毓 (若有异议请与网页底部的电邮联系)
~

【问题】常微分方程数值解问题。用预估校正Euler法,求解初值问题。

求出步长h=0.1的所有点的值,并绘制图形。

【求解方法】用预估校正Euler法来求解,其方法是:

第一步,根据y(0)=1边界值,通过折线法计算,提供初值,即

上述式(1)也就是预报公式

第二步,根据初值,通过梯形法计算,得到较精确的值,即

上述式(2)也就是校正公式

这里,yn—表示y(xn)的近似值;h=x(i+1)-x(i)—表示步长

第三步,按上述循环计算,计算当x分别等于0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1的y(x)值。

第四步,根据x和y值,进行绘制该微分方程的数值解曲线。

【求解过程】

通过计算,得到微分方程的数值解

x =[0 0.1 0.20.30.4 0.50.6 0.7 0.8 0.91.0]

y =[1 1.0959 1.1841 1.26621.3434 1.4164 1.4860 1.5525 1.6165 1.6782 1.7379]

根据这些点,就可以绘制其图形。

【matlab求解】求解步骤:

第一步,根据预估校正Euler法的迭代式,编写其函数,如Euler_Cauchy(func,x0,y0,xf,h)

这里,func——表示微分方程,x0,y0——表示微分方程初始值,xf——表示x的终值,hf——表示步长

第二步,编写微分方程函数,即

function f=func(x,y); 

f(1)=y-2*x/y;

f=f(:);

end

第三步,编写主程序,即

y0=1;  %初值

x0=0;xf=1; %x的范围

n=10; %等份

h=(xf-x0)/n %步长

[t,x]=Euler_Cauchy(@func,x0,y0,xf,h); %预估校正Euler法计算

plot(x,y,'ks-') %绘制函数图

tu on %绘制坐标区网格线

xlabel('x'),ylabel('y(x)') %标注坐标轴名称

第四步,运行后,即可得到如下图形。

【数值解图形分析】从上述图形中,可以看到得到的数值解与精确解比较,精度较高的顺序依次是:

欧拉法→改进的欧拉法(预估校正Euler法)→龙格-库塔法→解析解

【常微分方程数值解方法】

1、欧拉法。欧拉方法(也叫折线法)是最早的一种数值方法。欧拉方法是一种数值解微分方程的方法,它是由瑞士数学家欧拉发明的。欧拉方法的基本思想是将微分方程转化为差分方程然后通过迭代求解差分方程来逼近微分方程的解。是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解。它是一种解决数值常微分方程的最基本的一类显型方法。

欧拉方法的具体步骤如下:

首先将微分方程转化为差分方程,即将微分方程史的导数用差分代替,然后将差分方程史的未知函数值用前一时刻的函数值代替,得到一介递推公式。接着.从初始时刻开始,按照递推公式依次计算出每个时刻的函数值,直到达到所需的时刻为止。最后,将计算出的函数值作为微分方程的近似解。

欧拉法迭代式

2、预估校正欧拉法。预估校正欧拉法是对欧拉算法的改进方法。微分方程的本质特征是方程中含有导数项,数值解法的第一步就是设法消除其导数值,这个过程称为离散化。实现离散化的基本途径是用向前差商来近似代替导数,这就是欧拉算法实现的依据。

这个方法中,(1)式用折线法提供初值,称为预报公式。(2)式用梯形法给出较精确的值,称为校正公式。合称预报校正公式。




求高人解Matlab问题
数值解法如下:function f=myfun(t,x) % 建立M函数,即微分方程 f(1)=x(2); % dy=y',x(1)=y,x(2)=y',f(1)=y',f(2)=y''f(2)=11*x(1)-6*x(2)+sin(t); % dy'=11y(t)-6y'(t)+sin(t)f=f(:); % 确定输出的是列向量 >> clear;x0=[1,0];>> [t,x]=...

用matlab求解多元一次方程组 求大神指导 急!!急!!急!! 救命啊!!
1、配料问题一半应该有目标函数吧?最好把原始问题贴出来。当然,如果没有目标函数,也可以自己随便设定,能够影响到的是,求出的究竟是哪一个解。2、这可以看作一个优化问题来求解,而不是解方程组。要想求出【唯一的一组解】往往是做不到的,因为这取决于你给的限定条件本身是否具有唯一解。具有...

怎样用matlab写这个程序
数组做 t=0:20;y1=exp(-2.*t);y2=t.*cos(t.^2).*sin(t);y3=exp(-5.*t.*(1+t.^2).^(-0.5));plot(t,y1,'-o');hold on plot(t,y2,'-*');hold on plot(t,y3,'-s');hold on legend('y1','y2','y3');循环做 t=0:20 for n=1:length(t)y1(n)=exp(...

高手来救命!!matlab散点plot后的图求峰值对应的横坐标的问题!!_百度...
clc;clear A=[...1 0 2 0 3 0 4 0 5 0 6 12 7 60 8 23 9 -8 10 -54 11 7 12 63 13 15 14 -35 15 -46 16 -6 ];x=A(:,1);y=A(:,2);n=length(x);for k=1:n-2 if (y(k)<y(k+1))&(y(k+1)>y(k+2))m=k+1 break end end firstPeak=y(m)plot...

用MATLAB怎么画y=x^3的函数图?对数坐标图?半对数坐标图??谢谢了……急...
这是源代码:clear,clc subplot(2,2,1);x=linspace(-5,5);y=x.^3;plot(x,y,'r-');subplot(2,2,2);x=logspace(-5,5);y=x.^3;loglog(x,y);subplot(2,2,3);x=logspace(-5,5);y=x.^3;semilogx(x,y);subplot(2,2,4);x=linspace(-5,5);y=linspace(-5,5);[X,Y]...

matlab中Z不是矩阵怎么解决?
产生matlab中Z不是矩阵的错误的原因是【X1,X2】无法参与计算,所以这样来解决:1、将 [X1,X2]=meshgrid(a,J) 这句代码改成为 [a,J]=meshgrid(a,J);2、将 surf(X1,X2,Q11) 这句代码改成为 surf(a,J,Q11)纠正错误后执行代码,可以得到如下图形。

matlab正反算结果不一样,救命啊,急急急
验算结果无误:请再核对!syms X Y Z [a,b,c]=solve('X*log(16-6.2)+16-6.2=Y*1+Z','X*log(16-2.8)+16-2.8=Y*2+Z','X*log(16-2.5)+16-2.5=Y*3+Z');X=a;Y=b;Z=c;X*log(16-6.2)+16-6.2- (Y*1+Z)X*log(16-2.8)+16-2.8- (Y*2+Z)X...

求matlab大神帮我检查一下这个错误在哪儿,怎么改。
你的程序不太完善,报错的是 F0 没有定义。按我的理解,根据你的程序的思路,F0应该是受到模糊的图像 I0 或者 I1 的频域的表示,即:F0 = fftshift(fft2(I1));把该句加在 F2=H1.*F0; 的前面,再试试看。

需要用matlab画出z=x^3y^2-3xy^3-xy+1 大神救命啊啊啊啊啊 最好是完 ...
最简洁代码 z = 'x^3*y^2-3*x*y^3-x*y+1';ezmesh(z);

救命!我用几组(二维)数据做出一条曲线,想做回归,不知道在matlab中...
12 1819 13 1941 14 1983 15 1996 16 1999 17 2000];>> Y=A(:,1);>> X=A(:,2);>> aa=ployfit(x,y,4)=== 这个命令比较简单 4就为4次,变5就为5次 aa为系数 ===

旌阳区13838643342: 这题matlab题目怎么做啊?求帮忙 在线等.输入四个不同的实数,x1,x2,x3,x4,可产生四阶范德蒙行列式,用det()命令可计算出该行列式的值,程序如下... -
生钩臣功:[答案] ones(1,4)

旌阳区13838643342: matlab这个题是怎么做的,看不懂,没有基础,谢谢大神? -
生钩臣功: 你好,答案如下所示.这没啥可说的,上半部分是代码,下半部分是运行结果,你照着输入就会出结果希望你能够详细查看.如果你有不会的,你可以提问我有时间就会帮你解答.希望你好好学习.每一天都过得充实.

旌阳区13838643342: 这题用Matlab怎么写代码?大神求帮助~ -
生钩臣功: 主要是看实例和输入参数,你指的是它圈.点击看详细[Hlines,HSM] =圆(H,频率,TYPE1,值1,...,typen被,值N,HSM),点击看详细这是对应表史密斯.例如:点击看详细代码,点击看详细CLC;清除所有;关闭所有; 圈= rsmak('圈子')...

旌阳区13838643342: 这道题用matlab怎么做? -
生钩臣功: i=1; while(1) s=sum([1:i]); if s>=100 break end i=i+1; end i

旌阳区13838643342: 这个题目怎么用matlab求解啊? -
生钩臣功: rq=10;rg=1;lg=15;v=2*4/3*pi*rq^3+pi*rg^2*lg s=4*pi*rq^2+2*pi*rg*lg-2*pi*rg^2程序如上,结果是:v = 8.4247e+003s = 1.3446e+003

旌阳区13838643342: MATLAB题怎么做啊!!! -
生钩臣功: A1=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15A2=2 5 13 11 15 7 1 12 14 8 10 9 4 6 3

旌阳区13838643342: 高分!求高手解答一下这个Matlab问题,跪求高手指点~ -
生钩臣功: 你的语句有问题!你的输入信号里面有大于1的数最好归一化之后再用S型函数比较好,如果不做归一化,那就用线形的学习函数purelin吧.应该改为:net=newff(minmax(p...

旌阳区13838643342: MATLAB的题,怎么做啊!!! -
生钩臣功: matlab的逻辑运算符,&表示且,|为或,~为非,0表示假,非0为1,所以第一题为1,第二题为0

旌阳区13838643342: 这道题要怎么做「matlab」? -
生钩臣功: 编写一个函数,计算下面函数的值.可以这样来实现.1、编写一个自定义函数文件,并保存 m文件.如 myfun1.m,其内容unction y=myfun1(x)n=length(x);for i=1:n if x(i)>=0 & x(i)<1 y(i)=x(i).^2; elseif x(i)>=1 & x(i)<2 y(i)=x(i).^2-1; else y(i)=x(i).^2-2*x(i)+1; endend2、在命令窗口中,输入>>x=0:0.5:2.5;>>y=myfun1(x)3、运行结果请题主自行检测.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网