日度归档:2025年7月28日

一个初中数学题的Matlab解决办法



syms k a b t x;
%直线方程
equ = k*t+2 %直线EA方程
k = solve(equ,k)
% y1方程系数
% y1 过(2 0) (t 0)分别带入y1方程,可得到a,b
equ1 = 4*a+2*b-4 == 0
b = solve(equ1,b)
equ2 = a*t^2 + b*t-4 == 0
a = solve(equ2, a)
b = 2-2*a
sym(a*x^2+b*x-4)
%y1 = sprintf('%s*x^2 + %s *x -4',a,b)
% Q = ['a=',a,'b=',b]
% Z = sprintf('%s will be %d this year.',name,age);
% Z = sprintf('a= %s b=%s.',a,b);
% disp(Z)

%直线和抛物线有唯一解,联合直线方程和抛物线方程为equ3
equ3 = k*x + 2 == a*x^2 + b*x -4

% standard_form = simplify(lhs(equ3) - rhs(equ3));
% quadratic_standard_form = A(3)*x^2 + A(2)*x + A(1);
% disp(quadratic_standard_form); 

equ3 = expand(simplify(lhs(equ3) - rhs(equ3))) 
A = coeffs(equ3, x)
equ4 = A(2)^2 - 4*A(1)*A(3) ==0  %b^2-4ac=0
t1 = solve(equ4,t)
%y1向左平移y2
equ5 = a*(x+2)^2 + b*(x+2) -4   %y1平移向左平移2个单位后方程y2 
% standard_formy2 =simplify(equ5)
expy2 = expand(equ5) %展开equ5
B = coeffs(equ5,x)   %提取equ5各系数
x0 = B(1)/(-2*B(2))  %顶点横坐标
y0 = subs(equ5, x, x0) %顶点纵坐标

%坐标表示式简化
x00 = simplify(x0)
y00 = simplify(y0)
%顶点在直线EA上
equ6 = y00 == -2/t*x00 +2
% standard_form3 = simplify(lhs(equ6) - rhs(equ6))
t2 = solve(equ6,t)

%y2 向下平移得到y3
equ6 = equ5 - 2/(t-1)^2
equ6 = expand(equ6)
% D点坐标可以通过相似,全等表达为t的代数式
D = [2*t/(t-1),t/(t-1)]
% 将D点坐标带入y3
equ6 = D(2) == subs(equ6,x,D(1))
% 计算得到t值
t3 = solve(equ6,t)
%t>2,保留t3(2)
%t带入D求得D点坐标
D = subs(D,t,t3(2))