材料力学里面的计算题
clear
close all
clc
syms M L Fd E I z1 z2 C1 C2 C3 C4 C5 C6 C7 C8
v1(z1) = (C1*z1^3/6 + C2*z1^2/2 + C3*z1 + C4)/(E*I);
v2(z2) = (C5*z2^3/6 + C6*z2^2/2 + C7*z2 + C8)/(E*I);
Dv1(z1) = diff(v1,z1,1);
D2v1(z1) = diff(v1,z1,2);
D3v1(z1) = diff(v1,z1,3);
Dv2(z2) = diff(v2,z2,1);
D2v2(z2) = diff(v2,z2,2);
D3v2(z2) = diff(v2,z2,3);
eq = {'E*I*D2v1(0) = 0',...
'Dv2(L) = 0',...
'v2(L) = 0',...
'v1(0) = 0',...
'Dv1(L) = Dv2(0)',...
'v1(L) = v2(0)',...
'D3v1(L) = D3v2(0)',...
'-E*I*D2v1(L) = -E*I*D2v2(0) + M'};
Const = {'C1','C2','C3','C4','C5','C6','C7','C8'};
C = solve(eq{:},Const{:});
Const = [C.C1 C.C2 C.C3 C.C4 C.C5 C.C6 C.C7 C.C8].';
pretty(Const);
以上代码解不出来,如果将eq里包含的函数方程解出再计算,例如用如下代码则可行
clear
close all
clc
syms M L Fd z1 z2 E I C1 C2 C3 C4 C5 C6 C7 C8
eq = {'C2 = 0',...
'((C5*L^2)/2 + C6*L + C7)/(E*I) = 0',...
'((C5*L^3)/6 + (C6*L^2)/2 + C7*L + C8)/(E*I) = 0',...
'C4/(E*I) = 0',...
'((C1*L^2)/2 + C2*L + C3)/(E*I) = C7/(E*I)',...
'((C1*L^3)/6 + (C2*L^2)/2 + C3*L + C4)/(E*I) = C8/(E*I)',...
'C1/(E*I) = C5/(E*I)',...
'- C2 - C1*L = -C6 + M'};
Const = {'C1','C2','C3','C4','C5','C6','C7','C8'};
C = solve(eq{:},Const{:});
Const = [C.C1 C.C2 C.C3 C.C4 C.C5 C.C6 C.C7 C.C8].';
pretty(Const);
请问是什么原因导致的?
matlab里solve函数解不出来这个函数是为什么?
这通常是因为方程无法用简单的符号表达式解决,需要使用数值方法来计算。如果您希望获得符号解,可以尝试使用不同的解析库或数学软件来解决方程。或者,您可以使用数值方法来近似求解方程,例如牛顿迭代法或二分法
matlab,solve函数解方程组,无法求出结果。
复制粘贴你的代码是没有问题的。该代码在matlab2018中通过。出现这个情况,可能你的版本不支持,下列solve的格式 [x1,x2,y1,y2]=solve(nA==((1+rn)*(a*NA-。。。你可以这样改,把“==”改成“-”[x1,x2,y1,y2]=solve(nA-((1+rn)*(a*NA-。。。
matlab solve解不出来
原因一:用这样的表达式 v1(z1) = (C1*z1^3\/6 + C2*z1^2\/2 + C3*z1 + C4)\/(E*I);来描述v1关于z1的函数是不正确的。应该直接写就可以了 v1 = (C1*z1^3\/6 + C2*z1^2\/2 + C3*z1 + C4)\/(E*I);原因二:这样的表达式'E*I*D2v1(0) = 0'也有问题,这里不存在...
我想通过matlab得一个q=()p的函数,但是用solve怎么也弄不出来,要怎么才...
由于给出的方程比较复杂,用solve函数求解,得到是无解,所以应改用vpasolve函数求解。具体实现方法如下:1、由于vpasolve函数不适应求解数组形式的数据,所以只能逐个求解。2、应使用for循环语句来完成求解。即 for i=1:8 S=vpasolve(eval(eq(i))) %eq为具体的表达式 end 3、实现代码:syms q assum...
matlab,solv函数解方程解不出来,求教
solv函数解方程解不出来的主要问题是多了一个分号。第一种求解方法是正确的;jd=solve('12.5+(3.7947-4*(120-jd))\/60-12 = 0','jd')第二种求解方法是错误的;第三种求解方法是基本正确,但少了变量声明;syms jd jd=solve(12.5+(3.7947-4*(120-jd))\/60-12 == 0,jd)【扩展知识...
matlab中调用solve函数出错?怎么解决
1、solve函数的这种调用方式:solve('lambda-(-2*log10(2.51\/Re\/sqrt(lambda)+0.27\/l(i)))^(-2) = 0','lambda')是把整个字符串作为参数传递给符号计算内核的,给参数l和Re赋值不起作用,所以在符号计算内核求解时会把l、Re也看成变量,从而导致求解失败。解决的办法是,定义符号变量lambda...
MATLAB用solve求不出方程解
你应该吧问题描述得更清楚一些,什么方程,求什么,如果你是非线性方程应该用fsolve命令,先将方程写成函数文件,调用fsolve求解函数文件,这个命令求出的可能不是精确解,而且可能不是你想要的解,所以可以多次设置初始值,看看最后计算结果是什么。
用MATLAB中solve求解方程组一直报错,跪求原因
题主给出的代码主要错误有:1、使用函数solve错误,对于有已知值代入表达式,其solve格式为 syms y2 z2 [y2,z2]=solve(z2==...; 26*cos(t)*y1-(26*cos(t))*y2==...)对于高版本,一般建议用 vpasolve 函数求解。2、使用solve和 vpasolve 函数是无法得到以向量形式的解,应该用循环语句...
菜鸟请教,matlab求解方程,变量已赋值,为啥解不出来
因为 solve( )的表达式是带引号,所以dt、T、V、Q等已知值不能代入其表达式中。因此,程序应作如下改动 clc;syms dT %声明变量dt=0.01;T=273.15;V=150;Q=1.3611;eq=1.5*220*dT*dt+1.206*(V-Q*dt)*dT*1005-(Q*dt*(310.15-T-dT)*1.206*1005)dT=solve(eq,'dT');dT=vpa...
matlab解指数方程,我用solve去解好像解不了不知道哪里错了
可以求解,可能你没有完全理解如何使用solve()函数。对于你的方程,应该这样来求。syms x a=-0.0008366;b=0.008461;c=10.46;d=-9.462e-005;x=solve(10.450-( a*exp(b*x) + c*exp(d*x)))求解结果 x=9.1941461897150424695683645683291 将x值代入fx = a*exp(b*x) + c*exp(d*x...