声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1522|回复: 6

[编程技巧] 这个超越方程怎么解决?

[复制链接]
发表于 2006-11-14 14:31 | 显示全部楼层 |阅读模式

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

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

x
有一个超越方程,我希望用matlab解出,求哪位给个方案。
k*tan(a)=tan(k*a)
其中,a从pi/12,pi/11,pi/10...一直变化到pi/3,求解相应的k值。
回复
分享到:

使用道具 举报

发表于 2006-11-14 15:04 | 显示全部楼层

回复

这个问题只要作一个循环,用 fzero 就可以求解.
 楼主| 发表于 2006-11-15 00:11 | 显示全部楼层
但是fzero的语法是 X = FZERO(FUN,X0)
其中x0表示寻找x0附件的根。这个要猜测呀,麻烦高手把m文件做出来看看哈。




回复

这个问题只要作一个循环,用 fzero 就可以求解.
发表于 2006-11-15 09:52 | 显示全部楼层

回复

给定求解区间,k向量即给定;
初值可以这样选取:
内循环求解时,每次以k(n)为初值,这样就可以依次求出给定区间上的所有根。
 楼主| 发表于 2006-11-16 20:00 | 显示全部楼层

求救,高手帮我调调这个程序吧

就是为了求解上面的问题,我编了一下程序,但是总出错,请高手指导一下!
主程序:ii=0;
for i=12:-1:3
    ii=ii+1;
    a=pi/i;
    j=0;
    k=fzero(tzero,j);
    while k==0
    j=j+1;
    k=fzero(tzero,j);
    end
kk(ii)=k;
end
子函数:function tzero(k,a)
y=k*tan(a)-tan(k*a);
出错信息:??? Error using ==> tzero
Too many output arguments.

Error in ==> C:\MATLAB6p5\work\main.m
On line 6  ==>     k=fzero(tzero,j);
发表于 2006-11-16 23:47 | 显示全部楼层

回复

你犯了一个低级错误:   "function tzero(k,a)" 应改为 "function y=tzero(k,a)".
另:再重复一遍"给定求解区间,k向量即给定;初值可以这样选取:内循环求解时,每次以k(n)为初值,这样就可以依次求出给定区间上的所有根。"

[ 本帖最后由 xjzuo 于 2006-11-16 23:52 编辑 ]

评分

1

查看全部评分

发表于 2006-11-17 09:04 | 显示全部楼层
原帖由 northwood77 于 2006-11-15 00:11 发表
但是fzero的语法是 X = FZERO(FUN,X0)
其中x0表示寻找x0附件的根。这个要猜测呀,麻烦高手把m文件做出来看看哈。




回复

这个问题只要作一个循环,用 fzero 就可以求解.



你用x = fzero(fun,x0,options,P1,P2,...)格式调用吧
其中P1等是用户自定义的传递变量

在这里你就可以用来传递a
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-19 18:36 , Processed in 0.070272 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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