声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1510|回复: 4

[综合讨论] 小弟做毕业设计遇到难题

[复制链接]
发表于 2007-6-4 13:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
cos(x)-0.5*x*sin(x)+k=0 (-1<k<1)首先k取一靠近-1的数假设(k=-0.9)然后k以0.1的大小增加,1.解上述方程且只取最小的正实根,如何编程??2.解上述方程取最小的第一和第二个正实根??怎么做??谢谢拉!!更明白点就是cos(x)-0.5*x*sin(x)+1.1=0(假设k=1.1)如何求出最小的正实根??如何求出最小的第一和第二个正实根??

[ 本帖最后由 eight 于 2007-6-4 14:49 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-6-4 16:20 | 显示全部楼层
没时间帮你写程序,你可以用最简单二分法编程序
比较笨的办法是令分f=cos(x)-0.5*x*sin(x)+k,画出函数f随x的变化曲线,画出y=0的直线,捕捉交点,不过可能不是很准确
发表于 2007-6-4 22:44 | 显示全部楼层
一定要用matlab吗?还有很多数学软件呀,比如LINGO,MATHEMATICA,LINDO等都可以实现呀。
小小弟有一个MATLAB程序,你看看行不行。
MATLAB中提供了一个fzero函数,可以用来求单变量非线性方程的根。该函数的调用格式为:
    z=fzero('fname',x0,tol,trace)
其中fname是待求根的函数文件名,x0为搜索的起点。一个函数可能有多个根,但fzero函数只给出离x0最近的那个根。tol控制结果的相对精度,缺省时取tol=epstrace指定迭代信息是否在运算中显示,为1时显示,为0时不显示,缺省时取trace=0   
   步骤如下:
   (1) 建立函数文件funx.m

function fx=funx(x)


fx=
cos(x)-0.5*x*sin(x)+1.1;

(2)
调用fzero函数求根。

z=fzero('funx',0)

运行结果有许多个输出,你看看就知道了。
其它K值同理了吧,呵呵


评分

1

查看全部评分

发表于 2007-6-5 09:41 | 显示全部楼层
你这样写并没有多个根输出.
咕噜噜 说的画图法倒是常用的: 画图,观察,取合适的初值,用fzero(@funx,x0)求根;
更好的方法是作循环求根,将根存入一个数组(或向量),sort(x(x>0))......

评分

1

查看全部评分

 楼主| 发表于 2007-6-5 21:48 | 显示全部楼层
谢谢大家的提议!!小弟已经解决!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-12 14:28 , Processed in 0.086715 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表