声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4815|回复: 10

[编程技巧] fsolve解方程,如何给方程中的参数赋值?

[复制链接]
发表于 2011-8-24 15:44 | 显示全部楼层 |阅读模式

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

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

x
我现在要求解如下方程:
f=2*x^2/a*sinh(800*a/(2*x))-2*b^2/14.8078*sinh(800*14.8078/(2*b))
其中:a=14.8078,b=22483

要是将a,b的值直接代入方程的话,比较麻烦!而且我要对a和b取不同的值,得到不同的解,也就是a,b是两个数组。
方程是我简化过的,我只是想知道如何给a,b赋值。这可能是比较初级的问题,还希望高手门不吝赐教!!!
在如下程序上该如何完善呢?

function f=F(x)
f=2*x^2/a*sinh(800*a/(2*x))-2*b^2/14.8078*sinh(800*14.8078/(2*b));
————————
x=fsolve(‘F’,20000)
回复
分享到:

使用道具 举报

发表于 2011-8-25 09:45 | 显示全部楼层
楼主研究下匿名函数(anonymous function)还有嵌套函数(nested function)的用法就清楚了。帮助文档里说的很详细。

评分

1

查看全部评分

发表于 2011-8-25 11:51 | 显示全部楼层
我也有类似的问题 就是解矩阵方程吧说白了 手推了一下之后得出X=AB这样的类似方程 换成计算矩阵比较直观
发表于 2011-8-25 23:03 | 显示全部楼层
Ref:  变参数非线性方程组的求解 http://forum.vibunion.com/thread-18886-1-29.html
...
 楼主| 发表于 2011-8-26 16:38 | 显示全部楼层
回复 4 # ChaChing 的帖子

谢谢!我之前光搜“fsolve”了,没搜到这个帖子!学习了~
 楼主| 发表于 2011-8-26 16:40 | 显示全部楼层
回复 2 # rocwoods 的帖子

谢谢!找到问题答案了,你说的这个留着以后研究,呵呵~
发表于 2011-8-27 01:04 | 显示全部楼层
建议LZ别忘了分享成果!
 楼主| 发表于 2011-8-27 09:13 | 显示全部楼层
回复 7 # ChaChing 的帖子

我昨天也想着分享的,一看成果都在你分享的那个帖子里面,貌似我这个问题比帖子里那个简单很多。
那我就把我的几步程序再写出来吧~
 楼主| 发表于 2011-8-27 09:54 | 显示全部楼层
问题解决了,共享一下我的解决方法。
要解这个方程:2*x^2/a*sinh(800*a/(2*x))-2*b^2/14.8078*sinh(800*14.8078/(2*b))=0
这是我简化过的方程,原方程比较复杂。因为双曲正弦sinh中含有未知变量,所以无法得出方程的表达式。a,b分别取不同的值,得到不同的解。
程序如下:
a=[14.8078 14.8078 14.8078];
b=[22483 24000 26000];
for i=1:length(a)
f=@(x,a,b)2*x^2/a*sinh(800*a/(2*x))-2*b^2/14.8078*sinh(800*14.8078/(2*b));
x(i)=fsolve(f,20000,[],a(i),b(i));
end

有什么可以简化之处,欢迎指点!

评分

1

查看全部评分

发表于 2011-8-27 12:23 | 显示全部楼层

个人以为
1.分享成果,感觉比较完整性
2.问题不分难易, 真正学习了解到, 最重要
3.大伙确认下, 或许可继续精进
 楼主| 发表于 2011-8-28 09:01 | 显示全部楼层
回复 10 # ChaChing 的帖子

嗯,初来咋到,以后会注意!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-3 05:42 , Processed in 0.087988 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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