matlab 结果用参数表示syms t a b c h;u=a/(4*3*2*1)*t^4+b/(3*2*1)*t^3+c/(2*1)*t^2u1=diff(u,1,t)u2=diff(u,2,t)f1=(1+(u1*u1))^0.5g=u2/(((1+u1*u1)^(3/2)))f2=diff(g,2,t)[b,c,t]=dsolve('u1=h','h2=0','a*f1=f2')跪求各位大侠帮忙啊就是上述3
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 02:05:15
matlab 结果用参数表示syms t a b c h;u=a/(4*3*2*1)*t^4+b/(3*2*1)*t^3+c/(2*1)*t^2u1=diff(u,1,t)u2=diff(u,2,t)f1=(1+(u1*u1))^0.5g=u2/(((1+u1*u1)^(3/2)))f2=diff(g,2,t)[b,c,t]=dsolve('u1=h','h2=0','a*f1=f2')跪求各位大侠帮忙啊就是上述3
matlab 结果用参数表示
syms t a b c h;
u=a/(4*3*2*1)*t^4+b/(3*2*1)*t^3+c/(2*1)*t^2
u1=diff(u,1,t)
u2=diff(u,2,t)
f1=(1+(u1*u1))^0.5
g=u2/(((1+u1*u1)^(3/2)))
f2=diff(g,2,t)
[b,c,t]=dsolve('u1=h','h2=0','a*f1=f2')
跪求各位大侠帮忙啊就是上述3个方程组 3个位置变量联立 用a和h表示出来即可,不知道哪里错了,就是算不出解啊
[b,c,t]=solve('u=h','u1=0','a*f1=f2') 最关键的地方写错了,是这个,可还是不行啊
matlab 结果用参数表示syms t a b c h;u=a/(4*3*2*1)*t^4+b/(3*2*1)*t^3+c/(2*1)*t^2u1=diff(u,1,t)u2=diff(u,2,t)f1=(1+(u1*u1))^0.5g=u2/(((1+u1*u1)^(3/2)))f2=diff(g,2,t)[b,c,t]=dsolve('u1=h','h2=0','a*f1=f2')跪求各位大侠帮忙啊就是上述3
应该前面都没有问题吧.
问题应该在[b,c,t]=solve('u=h','u1=0','a*f1=f2')上.我感觉(未找资料验证)在solve语句中,u和u1等作为符号型变量,它们并没有接受前面那些等式的赋值的.也就是solve里面的u和u1等,是重新定义的,跟前面的没有关系. 可以这么验证:(1)在command window中直接输入solve('u=h')结果是ans=h.(2)输入solve('p*sin(x) = r'),也能求解,而不需在前面定义p、x和r,这说明是在solve中定义的符号变量. . 这两点大体上验证了我前面的感觉.
这个问题应该有比较科学的解决方式,可惜我不会.只提供一种最简单、最“野蛮”的的解决方式了:既然不能在solve中用u和u1等代替前面的表达式,那只能直接把表达式写入solve中了. . 相应的表达式可以从前面的语句中计算出来,直接copy进去就是了(确实有点长).
我放进去后程序如下:
syms t a b c h,;
u=a/(4*3*2*1)*t^4+b/(3*2*1)*t^3+c/(2*1)*t^2;
u1=diff(u,1,t);
u2=diff(u,2,t);
f1=(1+(u1*u1))^0.5;
g=u2/(((1+u1*u1)^(3/2)));
f2=diff(g,2,t);
%[b,c,t]=solve('u-h','u1=0','a*f1-f2','b,c,t');
[b,c,t]=solve('a/(4*3*2*1)*t^4+b/(3*2*1)*t^3+c/(2*1)*t^2-h','1/6*a*t^3+1/2*b*t^2+c*t','a*(1+(1/6*a*t^3+1/2*b*t^2+c*t)^2)^(1/2)-a/(1+(1/6*a*t^3+1/2*b*t^2+c*t)^2)^(3/2)-9*(a*t+b)/(1+(1/6*a*t^3+1/2*b*t^2+c*t)^2)^(5/2)*(1/6*a*t^3+1/2*b*t^2+c*t)*(1/2*a*t^2+b*t+c)+15*(1/2*a*t^2+b*t+c)^3/(1+(1/6*a*t^3+1/2*b*t^2+c*t)^2)^(7/2)*(1/6*a*t^3+1/2*b*t^2+c*t)^2-3*(1/2*a*t^2+b*t+c)^3/(1+(1/6*a*t^3+1/2*b*t^2+c*t)^2)^(5/2)','b,c,t')
要特别注意,最后的[b,c,t]=...这个式子后面一长串在matlab语句窗口中要整理到一行,不然会出错.(我忘了如何分行写长命令)).还有那个长表达式,还不知道有没有搞错,我眼花了.
最后的结果:
b =
[ -2/3*a*6^(1/2)*(2^(1/2)*(h/a)^(1/2))^(1/2)]
[ 2/3*a*6^(1/2)*(2^(1/2)*(h/a)^(1/2))^(1/2)]
[ -2/3*i*a*6^(1/2)*(2^(1/2)*(h/a)^(1/2))^(1/2)]
[ 2/3*i*a*6^(1/2)*(2^(1/2)*(h/a)^(1/2))^(1/2)]
c =
[ a*2^(1/2)*(h/a)^(1/2)]
[ a*2^(1/2)*(h/a)^(1/2)]
[ -a*2^(1/2)*(h/a)^(1/2)]
[ -a*2^(1/2)*(h/a)^(1/2)]
t =
[ 6^(1/2)*(2^(1/2)*(h/a)^(1/2))^(1/2)]
[ -6^(1/2)*(2^(1/2)*(h/a)^(1/2))^(1/2)]
[ i*6^(1/2)*(2^(1/2)*(h/a)^(1/2))^(1/2)]
[ -i*6^(1/2)*(2^(1/2)*(h/a)^(1/2))^(1/2)]
你的方程组中第二方程写错了,h2有定义吗?
另外,你解方程用的函数不对,应该是solve,dsolve是用来解微分方程的。