急!!!!!!!用matlab解决常微分方程问题
1.列出函数在区间[0,e]上的函数值表并作出它的图象。其中,是初值问题v'*ln[v]=2x;v(0)=0;的解。(v是关于x的函数)2.8.2用差分法解常微分方程边值...
1.列出函数 在区间[0,e]上的函数值表并作出它的图象。其中, 是初值问题
v'*ln[v]=2x;
v(0)=0;
的解。(v是关于x的函数)
2.
8.2用差分法解常微分方程边值问题:
y''-y+1=0;x在[0,1]上。
y(0)=0;
y(1)=0;
取h=0.1,xj=jh(j=0,1,2,…,10)求y1,y2,…y9并与该问题的准确解
比较,列出各节点处的近似解、准确解和误差。
第一题步长自设,第二题步长h为0.1 展开
v'*ln[v]=2x;
v(0)=0;
的解。(v是关于x的函数)
2.
8.2用差分法解常微分方程边值问题:
y''-y+1=0;x在[0,1]上。
y(0)=0;
y(1)=0;
取h=0.1,xj=jh(j=0,1,2,…,10)求y1,y2,…y9并与该问题的准确解
比较,列出各节点处的近似解、准确解和误差。
第一题步长自设,第二题步长h为0.1 展开
3个回答
展开全部
这两道都没有解析解,微分方程没有解析解是很正常的.这种情况下我们常用数值法解.而数值法中最常用便是龙格-库塔法
function f=dyfun(x,v)
f=2*x/log(v+eps);
%先将这个以dyfun命名保存在工作空间中
%再在命令窗中输入以下命令
v=ode45(@dyfun,[0 exp(1)],0)
v.y,
plot(linspace(0,exp(1),136),v.y)
%第二题
clc;clear;
n=10;h=0.1;
x=(0:10)*h;
c=h^2; %即dx的平方
y(1)=0;y(2)=0;
for II=2:n
y(II+1)=c*(y(II)-1)+2*y(II)-y(II-1);
end
plot([(0:10)*h],y,'g')
function f=dyfun(x,v)
f=2*x/log(v+eps);
%先将这个以dyfun命名保存在工作空间中
%再在命令窗中输入以下命令
v=ode45(@dyfun,[0 exp(1)],0)
v.y,
plot(linspace(0,exp(1),136),v.y)
%第二题
clc;clear;
n=10;h=0.1;
x=(0:10)*h;
c=h^2; %即dx的平方
y(1)=0;y(2)=0;
for II=2:n
y(II+1)=c*(y(II)-1)+2*y(II)-y(II-1);
end
plot([(0:10)*h],y,'g')
展开全部
...我给你一个欧拉差分的matlab程序把。但是我现在这个机子上没有matlab所以不能运行。。
function [tF,yF] = ForwardEuler(f,a,b,h,y0)
N = fix((b - a)/h);
t=a %set initial values
y=y0
tF = zeros(N+1,1); % initialize tF and yF with zero arrays
yF = zeros(N+1,length(y));
tF(1) = t; % store initial values in arrays tF, yF
yF(1,:) = y.'; % Note: y values are stored as ROW of array yF
for i=1:N
y = y + h*feval(f,t,y); % evaluate slope= feval(f,t,y);
t = t + h;
tF(i+1,:) = t; % store new values in arrays tF, yF
yF(i+1,:) = y.'; % Note: y values are stored as ROW of array yF
end
希望对你有所帮助
function [tF,yF] = ForwardEuler(f,a,b,h,y0)
N = fix((b - a)/h);
t=a %set initial values
y=y0
tF = zeros(N+1,1); % initialize tF and yF with zero arrays
yF = zeros(N+1,length(y));
tF(1) = t; % store initial values in arrays tF, yF
yF(1,:) = y.'; % Note: y values are stored as ROW of array yF
for i=1:N
y = y + h*feval(f,t,y); % evaluate slope= feval(f,t,y);
t = t + h;
tF(i+1,:) = t; % store new values in arrays tF, yF
yF(i+1,:) = y.'; % Note: y values are stored as ROW of array yF
end
希望对你有所帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dsolve('Dv*log(v)=2*x','v(0)=0')
无解
无解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询