用matlab求y=f(x),y''=y^2的数值解,待解方程为:y=f(x),y''=y^2,即y的二阶导等于y的平方边界条件:y(0)=1,y'(100)=0用matlab函数ode45求解function dy=test(x,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=[y(1)]^1;end[X,Y]=ode45('test',[0 100

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/10 06:09:18
用matlab求y=f(x),y''=y^2的数值解,待解方程为:y=f(x),y''=y^2,即y的二阶导等于y的平方边界条件:y(0)=1,y'(100)=0用matlab函数ode45求解function dy=test(x,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=[y(1)]^1;end[X,Y]=ode45('test',[0 100

用matlab求y=f(x),y''=y^2的数值解,待解方程为:y=f(x),y''=y^2,即y的二阶导等于y的平方边界条件:y(0)=1,y'(100)=0用matlab函数ode45求解function dy=test(x,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=[y(1)]^1;end[X,Y]=ode45('test',[0 100
用matlab求y=f(x),y''=y^2的数值解,
待解方程为:y=f(x),y''=y^2,即y的二阶导等于y的平方
边界条件:y(0)=1,y'(100)=0
用matlab函数ode45求解
function dy=test(x,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=[y(1)]^1;
end
[X,Y]=ode45('test',[0 100],[1 ]); 这个地方就不会写了
看教程这个‘?’地方应该是填y'(0)的值,由于不知道y'(0)的值,只知道y'(100)=0

用matlab求y=f(x),y''=y^2的数值解,待解方程为:y=f(x),y''=y^2,即y的二阶导等于y的平方边界条件:y(0)=1,y'(100)=0用matlab函数ode45求解function dy=test(x,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=[y(1)]^1;end[X,Y]=ode45('test',[0 100
分析
这是个边值问题(BVP),不是初值问题.求解边值问题不能用ode系列函数,需要用专门的求解器.下面给你参考代码,涉及到的函数主要有bvpinit、bvp4c、deval,请自行参阅相关函数的说明.
 
参考代码
dydx = inline('[y(2); y(1)^2]', 'x', 'y');
bc = inline('[ya(1)-1; yb(2)]', 'ya', 'yb');
sol = bvpinit(linspace(0,100,50),[0 0]);
sol = bvp4c(dydx, bc, sol);
x = linspace(0,100);
y = deval(sol,x);

subplot 211
plot(x,y(1,:));
xlabel('Time (s)'); ylabel('y');
subplot 212
plot(x,y(2,:));
xlabel('Time (s)'); ylabel('y''');
 
结果