作业帮 > 综合 > 作业

matlab中解出带参数方程的数值解,求救!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/03 04:46:03
matlab中解出带参数方程的数值解,求救!

exp42.m中的方程:[As,x1] = solve('fy*As=fcd*2*(v1+v2+v3+v4+v5)*x1','r0*M=fcd*2*(v1+v2+v3+v4+v5)*x1*(h0-x1/2)','As,x1'),求解As和x1,其余为输入的已知量.

这些变量是在一个exp41.m文件输入的

得到的结果为:


怎样才能得到它的数值解,而不是含有参数的解,跪求大神指教啊!

使用subs函数:
subs(x1)
subs(As)

因为没有楼主全部的变量值,这里把相关变量全部赋值为1作为示例:
[M, fcd, fy, h0, r0, v1, v2, v3, v4, v5]=deal(1);
subs(x1)
subs(As)

得到:
>> subs(x1)
ans =
1.89442719099992 0.105572809000084
>> subs(As)
ans =
18.9442719099992
1.05572809000084
再问: 我输入的方程:[M, fcd, fy, h0, r0, v1, v2, v3, v4, v5]=deal(1);[x1,As] = solve('fy*As=fcd*2*(v1+v2+v3+v4+v5)*x1','r0*M=fcd*2*(v1+v2+v3+v4+v5)*x1*(h0-x1/2)','As,x1')subs(x1)subs(As)结果如图:我最后其实要求的是对求出的数值解进行判断,比如当求出的x1在[1,2]中,再比较As跟1的大小,若大于1输出1.8944那个,如果小于1,则输出一自定义的一个已知数,大神能不能再指教指教呀!
再答: 1、第一条语句 [M, fcd, fy, h0, r0, v1, v2, v3, v4, v5]=deal(1); 是因为我没有这些变量的值,随便指定的(都等于1),用于说明后面的subs。你不应该用这句,而应该使用你自己的exp41.m文件输入。 2、使用subs计算出x1和As的具体数值后,余下就是简单的判断问题,你应该自己会做吧?即使不会做,我现在也没法帮你,因为你上面的描述实在不太清楚,请准确说明到底怎么样的执行逻辑。
再问: 请允许我再问个问题: [M, fcd, fy, h0, r0, v1, v2, v3, v4, v5]=deal(1); [As,x] = solve('fy*As=fcd*(2*(v1+v2+v3+v4+v5)*h1+(2*(v1+v2+V3+v4)-v4*(x-h1)/(h2+h3)-v1*(x-h1)/h2)*(x-h1))','r0*M=fcd*fy*As*(h0-((v1+v2+v3+v4+v5)*h1^2+2*(v1+v2+v3+v4-(x-h1)*v4/(h2+h3)-(x-h1)*v1/h2)*(x-h1)*(h1+(x-h1)/2)+(x-h1)^2*v4/(h2+h3)*(h1+(x-h1)/3)+(x-h1)^2*v1/h2*(h1+(x-h1)/3))*fcd/fy/As)') 为什么解不出来?
再答: 式子太复杂了,看得眼晕。 简单分析了下,把第二个方程按照x整理,得到的为4次方程,再考虑到第一个方程里也有x,很可能会超过4次,那样就没有一般的求根公式了。而3-4次的代数方程尽管有求根公式,表达式也是十分繁杂,没法用。 其实你的那些符号都最终要代入具体数值,所以不如这样来求: [V3,fcd,h0,h1,h2,h3,v1,v2,v3,v4,v5]=deal(1); [As,x] = solve(fcd*(2*(v1+v2+v3+v4+v5)*h1+(2*(v1+v2+V3+v4)-v4*(x-h1)/(h2+h3)-v1*(x-h1)/h2)*(x-h1))-fy*As,fcd*fy*As*(h0-((v1+v2+v3+v4+v5)*h1^2+2*(v1+v2+v3+v4-(x-h1)*v4/(h2+h3)-(x-h1)*v1/h2)*(x-h1)*(h1+(x-h1)/2)+(x-h1)^2*v4/(h2+h3)*(h1+(x-h1)/3)+(x-h1)^2*v1/h2*(h1+(x-h1)/3))*fcd/fy/As)-r0*M) double(x) double(As) 注意:这里第一句同样是为了程序能运行随便设置的数,你需要用实际的数据代替。