matlab 欧拉法程序错误程序:欧拉法:function [x,y] = eular-f (f,xint,yint,x

问题描述:

matlab 欧拉法
程序错误
程序:欧拉法:
function [x,y] = eular_f (f,xint,yint,xfinal,n)
h = (xfinal-xinit)/n;
x = [xinit zeros(1,n)];
y = [yinit zeros(1,n)];
for i = 1:n
x(i+1) = x(i)+h;
y(i+1) = y(i)+h*f(x(i),y(i));
end
end
改进的欧拉法:
function
[x,y] = eular_modified(f,xinit,yinit,xfinal,n)
h = (xfinal-xinit)/n;
x = [xinit zeros(1,n)];
y = [yinit zeros(1,n)];
for i = 1:n
x(i+1) = x(i)+h;
ynew = y(i)+h*f(x(i),y(i));
y(i+1) = y(i)+(h/2)*(f(x(i),y(i))+f(x(i+1),ynew));
end
end
在MATLAB的Editor中调用以上两个函数,输入:
f = @(x,y) 1/x^2-y/x;
g = @(x) (log(x)+1)/x;
xe = [1:0.05:2];
ye = g(xe);
%Call functions
[x1,y1] = eular_f(f,1,2,0.05,20);
[x2,y2] = eular_modified(f,1,2,0.05,20);
%Plot
plot(xe,ye,’k-’,x1,y1,’k-.’,x2,y2,’k:’)
xlabel(‘x’)
ylabel(‘y’)
legend(‘Analytical’,’Forward’,’Modified’)
axis([1 2 1 1])
%Estimate errors
error1 = [‘Forward
error.’
num2 str-100*(ye(end)-y1(end)/ye(end) ’%’)];
error2 = [‘Modified
error.’
num2 strl-100*lye(end)-yz(end)/ye(end) ’%’];
error = {error1,error2};
text(0.04,1.06,error)
结果显示?plot(xe,ye,’k-’,x1,y1,’k-.’,x2,y2,’k:’)
|
Error:Missing variable or function.
请问哪儿出错了,该怎么修改啊?
1个回答 分类:综合 2014-10-09

问题解答:

我来补答
1/函数参数并不对应,函数内部的变量名与参数名不一致,看xinit与xinit,yinit与yinit
2/函数表达式有点小问题,g = @(x) (log(x)+1)/x;乘除的时候,是向量的话就应该换成点乘除
其他没有了
 
 
展开全文阅读
剩余:2000
下一页:数学函数值域