MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB基础] 求助:想把这个程序改成不用数组运算的。谢谢各位了 (https://www.labfans.com/bbs/showthread.php?t=10558)

elliottboy 2010-01-06 11:42

求助:想把这个程序改成不用数组运算的。谢谢各位了
 
这是一个扫描求根的程序,因为最后的式子有很大,所以不想用数组运算 想改造成循环解决 实在是不知道怎么调整,整了两天也没结果,求助各位大侠
function y=funs(w)
%y=2.*w.^3+2.*w.^2-3.*w-3
y=1987416747626931/17592186044416*sinh(3389730675253695/144115188075855872*(w.^2).^(1/4)).*sin(3389730675253695/144115188075855872*(w.^2).^(1/4))./(w.^2).^(1/2) %(这个式子 还是比较小可以用数组运算,但是我算的另一个更多 比这个还大 加数组不好算)


function [k,w]=yuanpinlv(a,b,h,tol)
% 输入的量--- a和b是闭区间[a,b]的左、右端点;
%---h是步长;
%---tol是预先给定的精度.
% 运行后输出的量---k是搜索点的个数;
% --- r是方程 在[a,b]上的实根的近似值,其精度是tol;
X=a:h:b;Y=funs(X);n=(b-a)/h+1;m=0;
X(n+1)=X(n);Y(n+1)=Y(n);
for k=2:n
X(k)=a+k*h;Y(k)=funs(X(k)); %程序中调用的funs.m为函数
sk=Y(k)*Y(k-1);
if sk<=0,
m=m+1;w(m)=X(k);
end
xielv=(Y(k+1)-Y(k))*(Y(k)-Y(k-1));
if (abs(Y(k))<tol)&( xielv<=0)
m=m+1;w(m)=X(k);
end
end

[k,w]=yuanpinlv(900,20000,10,0.0001)

谢谢 各位了


所有时间均为北京时间。现在的时间是 11:09

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.