Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-12-22
年龄: 40
帖子: 1
声望力: 0 ![]() |
![]()
这是一个扫描求根的程序,因为最后的式子有很大,所以不想用数组运算 想改造成循环解决 实在是不知道怎么调整,整了两天也没结果,求助各位大侠
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) 谢谢 各位了 |
![]() |
![]() |