matlab 运行下面的程序出现一些错误,请帮忙看看错误在哪里,谢谢。
程序symsxnmn=0;m=1377*10^6;x=0.1:0.01:6;f(x)=(x.*19.1*300*300*pi.*(1-(sin(2*pi.*x))/(2*...
程序
syms x n m
n=0;
m=1377*10^6;
x=0.1:0.01:6;
f(x)=(x.*19.1*300*300*pi.*(1-(sin(2*pi.*x))/(2*pi.*x))-n)/((3*x-1.25)*360);
plot(x,f(x))
运行出错
??? Subscript indices must either be real positive integers or logicals.
程序
function h = myfun(x)
syms x n m f h g
h=f-g;
n=0;
m=1377*10^6;
f=(x*19.1*300*300*pi*(1-(sin(2*pi*x))/(2*pi*x))-n)/((3*x-1.25)*360);
g=pi*((2/3)*19.1*300*300*300*(sin(pi*x))^3-m)/(360*255*(sin(pi*x)+sin(pi*(1.25-2*x))));
保存为名为myfun的M文件
后来在命令窗口调用
x = fzero(@myfun,1)
出错
??? Function 'isfinite' is not defined for values of class 'sym'.
Error in ==> isfinite at 19
[varargout{1:nargout}] = builtin('isfinite', varargin{:});
Error in ==> fzero at 309
elseif ~isfinite(fx) || ~isreal(fx) 展开
syms x n m
n=0;
m=1377*10^6;
x=0.1:0.01:6;
f(x)=(x.*19.1*300*300*pi.*(1-(sin(2*pi.*x))/(2*pi.*x))-n)/((3*x-1.25)*360);
plot(x,f(x))
运行出错
??? Subscript indices must either be real positive integers or logicals.
程序
function h = myfun(x)
syms x n m f h g
h=f-g;
n=0;
m=1377*10^6;
f=(x*19.1*300*300*pi*(1-(sin(2*pi*x))/(2*pi*x))-n)/((3*x-1.25)*360);
g=pi*((2/3)*19.1*300*300*300*(sin(pi*x))^3-m)/(360*255*(sin(pi*x)+sin(pi*(1.25-2*x))));
保存为名为myfun的M文件
后来在命令窗口调用
x = fzero(@myfun,1)
出错
??? Function 'isfinite' is not defined for values of class 'sym'.
Error in ==> isfinite at 19
[varargout{1:nargout}] = builtin('isfinite', varargin{:});
Error in ==> fzero at 309
elseif ~isfinite(fx) || ~isreal(fx) 展开
2个回答
2014-02-20
展开全部
三个问题:
1、第一句syms x n m不需要,也没用;
2、f(x)应为f,要注意:这是一个变量的名字,编程语言中的符号不能照搬数学的;
3、有两处除号应改为点除,即
f(x)=(x.*19.1*300*300*pi.*(1-(sin(2*pi.*x))/(2*pi.*x))-n)/((3*x-1.25)*360);
应为
f=(x.*19.1*300*300*pi.*(1-(sin(2*pi.*x))./(2*pi.*x))-n)./((3*x-1.25)*360);
追问
麻烦看一下 我修改后调用FZERO函数还是出错看看哪里有问题,非常感谢。
追答
1、不要乱用符号变量。
x 是函数myfun的输入参数,用syms x会导致输入数据被覆盖;n m f h g也根本用不到符号变量。
2、既然搞计算,至少要搞清楚变量之间的关系,先算哪个后算哪个。调整一下顺序就可以了。
改后的函数:
function h = myfun(x)
n=0;
m=1377*10^6;
f=(x*19.1*300*300*pi*(1-(sin(2*pi*x))/(2*pi*x))-n)/((3*x-1.25)*360);
g=pi*((2/3)*19.1*300*300*300*(sin(pi*x))^3-m)/(360*255*(sin(pi*x)+sin(pi*(1.25-2*x))));
h=f-g;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
syms x n m
n=0;
m=1377*10^6;
x=0.1:0.01:6;
f=(x.*19.1*300*300*pi.*(1-(sin(2*pi.*x))/(2*pi.*x))-n)/((3*x-1.25)*360);
plot(x,f)
齐活
n=0;
m=1377*10^6;
x=0.1:0.01:6;
f=(x.*19.1*300*300*pi.*(1-(sin(2*pi.*x))/(2*pi.*x))-n)/((3*x-1.25)*360);
plot(x,f)
齐活
追问
运行正常,麻烦看一下 我修改后调用FZERO函数还是出错看看哪里有问题,非常感谢。
追答
function h = myfun(x)
% syms x n m f h g
n=0;
m=1377*10^6;
f=(x*19.1*300*300*pi*(1-(sin(2*pi*x))/(2*pi*x))-n)/((3*x-1.25)*360);
g=pi*((2/3)*19.1*300*300*300*(sin(pi*x))^3-m)/(360*255*(sin(pi*x)+sin(pi*(1.25-2*x))));
h=f-g;
end
搞不懂你干嘛要弄syms那一行。你的h=f-g要放在最后,不然f,g都还没定义的就让他们相减,不报错才怪了。
MATLAB执行代码是按行的顺序来的,你的思维要适应,书上的公式要做适当调整。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询