Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-01-06, 11:42   #1
elliottboy
初级会员
 
注册日期: 2008-12-22
年龄: 40
帖子: 1
声望力: 0
elliottboy 正向着好的方向发展
默认 求助:想把这个程序改成不用数组运算的。谢谢各位了

这是一个扫描求根的程序,因为最后的式子有很大,所以不想用数组运算 想改造成循环解决 实在是不知道怎么调整,整了两天也没结果,求助各位大侠
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)

谢谢 各位了
elliottboy 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 17:26


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