fsolve解方程,如何给方程中的参数赋值?
我现在要求解如下方程: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)
楼主研究下匿名函数(anonymous function)还有嵌套函数(nested function)的用法就清楚了。帮助文档里说的很详细。 我也有类似的问题 就是解矩阵方程吧说白了 手推了一下之后得出X=AB这样的类似方程 换成计算矩阵比较直观 Ref:变参数非线性方程组的求解 http://forum.vibunion.com/thread-18886-1-29.html
... 回复 4 # ChaChing 的帖子
谢谢!我之前光搜“fsolve”了,没搜到这个帖子!学习了~ 回复 2 # rocwoods 的帖子
谢谢!找到问题答案了,你说的这个留着以后研究,呵呵~ 建议LZ别忘了分享成果! 回复 7 # ChaChing 的帖子
我昨天也想着分享的,一看成果都在你分享的那个帖子里面,貌似我这个问题比帖子里那个简单很多。
那我就把我的几步程序再写出来吧~ 问题解决了,共享一下我的解决方法。
要解这个方程: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=;
b=;
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
有什么可以简化之处,欢迎指点! fflyer 发表于 2011-8-27 09:13 static/image/common/back.gif
回复 7 # ChaChing 的帖子
我昨天也想着分享的,一看成果都在你分享的那个帖子里面,貌似我这个问题比帖子 ...
个人以为
1.分享成果,感觉比较完整性
2.问题不分难易, 真正学习了解到, 最重要
3.大伙确认下, 或许可继续精进 回复 10 # ChaChing 的帖子
嗯,初来咋到,以后会注意!
页:
[1]