拜求mathematica高手帮我排除错误~
这是一个含有三个未知数a,b,c,自变量为x的方程,可利用的条件是函数曲线经过(X1,Y1),(X2,Y2),而且在[X1,X2]区间上函数曲线长度是s,于是写出三个等式...
这是一个含有三个未知数a,b,c,自变量为x的方程,可利用的条件是函数曲线经过(X1,Y1),(X2,Y2), 而且在[X1,X2]区间上函数曲线长度是s,于是写出三个等式求解。于是软件给出了一行红色的警告,然后给出了一个复杂的解法,求解释警告的意思,而且帮忙检查一下格式对不对,理论上能不能求解,详细的有加分!!!
展开
2个回答
展开全部
首先格式有误,那句警告的意思就是Solve只能有两个参数,而你里面有4个.
Solve的格式是:Solve[{等式s},{变量s}],应该写成:
Solve[{f[X[1]] == Y[1], f[X[2]] == Y[2],
Integrate[Sqrt[1 + f'[x]^2], {x, X[1], X[2]}] == s}, {a, b, c}]
求解中间的积分其实是可以算出表达式的,最好提前算出并带入而非在求解中计算.实际上,
Integrate[Sqrt[1 + f'[x]^2], x]=a Sinh[b + x/a]
于是可以把求解句写为:
Solve[{f[X[1]] == Y[1], f[X[2]] == Y[2],
a Sinh[b + X[2]/a] - a Sinh[b + X[1]/a] == s}, {a, b, c}]
但这样还是不能解出,提示
Solve::tdep: The equations appear to involve the variables to be solved for in an essentially non-algebraic way.
即是说不能将a,b,c用其他参数的初等代数函数来表达.
不过至少数值解是可以的,比如过点(0,0),(1,1),绳长度为2(没记错的话f应该是悬链线方程吧),可以写:
FindRoot[{f[0] == 0, f[1] == 1,
a Sinh[b + 1/a] - a Sinh[b + 0/a] == 2}, {{a, 1}, {b, 1}, {c, 1}}]
结果为:
{a -> 0.26132672507652827, b -> -1.3640075431717957,
c -> -0.5445360419753983}
要看曲线图可再运行
Plot[Evaluate[f[x] /. %], {x, 0, 1}]
Solve的格式是:Solve[{等式s},{变量s}],应该写成:
Solve[{f[X[1]] == Y[1], f[X[2]] == Y[2],
Integrate[Sqrt[1 + f'[x]^2], {x, X[1], X[2]}] == s}, {a, b, c}]
求解中间的积分其实是可以算出表达式的,最好提前算出并带入而非在求解中计算.实际上,
Integrate[Sqrt[1 + f'[x]^2], x]=a Sinh[b + x/a]
于是可以把求解句写为:
Solve[{f[X[1]] == Y[1], f[X[2]] == Y[2],
a Sinh[b + X[2]/a] - a Sinh[b + X[1]/a] == s}, {a, b, c}]
但这样还是不能解出,提示
Solve::tdep: The equations appear to involve the variables to be solved for in an essentially non-algebraic way.
即是说不能将a,b,c用其他参数的初等代数函数来表达.
不过至少数值解是可以的,比如过点(0,0),(1,1),绳长度为2(没记错的话f应该是悬链线方程吧),可以写:
FindRoot[{f[0] == 0, f[1] == 1,
a Sinh[b + 1/a] - a Sinh[b + 0/a] == 2}, {{a, 1}, {b, 1}, {c, 1}}]
结果为:
{a -> 0.26132672507652827, b -> -1.3640075431717957,
c -> -0.5445360419753983}
要看曲线图可再运行
Plot[Evaluate[f[x] /. %], {x, 0, 1}]
追问
谢谢!还有两个小疑问:1.那个积分你是手算的吗?我用mathematica算出来是一个比较复杂的三角函数式 2.从函数结构分析,a的取值不会影响函数的形状,a的变化只是使图像均匀伸缩,我想验证这一点,然后使用manipulate的函数,设定了x的范围后,让{a,1,10},横坐标的范围和尺度的确没变,但是纵坐标变得很厉害,尺度不断变化,导致图像上一会只有十几,一会二十几,根本没法观察函数图像的变化规律,请指教~谢谢
追答
那个积分算出来是:
a Sqrt[Cosh[b + x/a]^2] Tanh[b + x/a]
注意到
Cosh[b + x/a]^2总是大于零的,上式实际上就是
a Cosh[b + x/a] Tanh[b + x/a]
运行一下就得到
a Sinh[b + x/a]
但是很奇怪我用
FullSimplify[a Sqrt[Cosh[b + x/a]^2] Tanh[b + x/a], Assumptions -> Element[{a, b, x}, Reals]]
却运行不出来,还没想明白原因...
第二个问题,"a的取值不会影响函数的形状",我觉得是影响的吧?从积分出来的函数式看a的大小是影响绳长的,当两端点固定时绳长不同自然悬链线的曲线也不同啊...
或者说我还没理解到你的意思?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询