fflyer 发表于 2011-8-24 15:44

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)

rocwoods 发表于 2011-8-25 09:45

楼主研究下匿名函数(anonymous function)还有嵌套函数(nested function)的用法就清楚了。帮助文档里说的很详细。

hjlovehyuk 发表于 2011-8-25 11:51

我也有类似的问题 就是解矩阵方程吧说白了 手推了一下之后得出X=AB这样的类似方程 换成计算矩阵比较直观

ChaChing 发表于 2011-8-25 23:03

Ref:变参数非线性方程组的求解 http://forum.vibunion.com/thread-18886-1-29.html
...

fflyer 发表于 2011-8-26 16:38

回复 4 # ChaChing 的帖子

谢谢!我之前光搜“fsolve”了,没搜到这个帖子!学习了~

fflyer 发表于 2011-8-26 16:40

回复 2 # rocwoods 的帖子

谢谢!找到问题答案了,你说的这个留着以后研究,呵呵~

ChaChing 发表于 2011-8-27 01:04

建议LZ别忘了分享成果!

fflyer 发表于 2011-8-27 09:13

回复 7 # ChaChing 的帖子

我昨天也想着分享的,一看成果都在你分享的那个帖子里面,貌似我这个问题比帖子里那个简单很多。
那我就把我的几步程序再写出来吧~

fflyer 发表于 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=;
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

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

ChaChing 发表于 2011-8-27 12:23

fflyer 发表于 2011-8-27 09:13 static/image/common/back.gif
回复 7 # ChaChing 的帖子

我昨天也想着分享的,一看成果都在你分享的那个帖子里面,貌似我这个问题比帖子 ...

个人以为
1.分享成果,感觉比较完整性
2.问题不分难易, 真正学习了解到, 最重要
3.大伙确认下, 或许可继续精进

fflyer 发表于 2011-8-28 09:01

回复 10 # ChaChing 的帖子

嗯,初来咋到,以后会注意!
页: [1]
查看完整版本: fsolve解方程,如何给方程中的参数赋值?