💄 Better simplify

This commit is contained in:
2025-09-14 02:42:43 +08:00
parent 35ea42ce9b
commit bf74f8d176

View File

@@ -1189,12 +1189,7 @@ ${b1}y &= ${c1 - a1 * x.toDouble()}
double denominator,
bool isPlus,
) {
final sign = isPlus ? '+' : '-';
final bStr = b == 0
? ''
: b > 0
? '${b.toInt()}'
: '(${b.toInt()})';
final denomInt = denominator.toInt();
final denomStr = denominator == 2 ? '2' : denominator.toString();
// Format sqrt(delta) symbolically using the Rational value
@@ -1211,9 +1206,39 @@ ${b1}y &= ${c1 - a1 * x.toDouble()}
}
} else {
// 完整的表达式:(-b ± sqrt(delta))/denominator
final bInt = b.toInt();
// Check if b is divisible by denominator for simplification
if (bInt % denomInt == 0) {
// Can simplify: b/denominator becomes integer
final simplifiedB = bInt ~/ denomInt;
if (simplifiedB == 0) {
// Just the sqrt part with correct sign
return isPlus ? '$sqrtExpr' : '-$sqrtExpr';
} else if (simplifiedB == 1) {
// +1 * sqrt part
return isPlus ? '1 + $sqrtExpr' : '1 - $sqrtExpr';
} else if (simplifiedB == -1) {
// -1 * sqrt part
return isPlus ? '-1 + $sqrtExpr' : '-1 - $sqrtExpr';
} else if (simplifiedB > 0) {
// Positive coefficient
return isPlus
? '$simplifiedB + $sqrtExpr'
: '$simplifiedB - $sqrtExpr';
} else {
// Negative coefficient
final absB = (-simplifiedB).toString();
return isPlus ? '-$absB + $sqrtExpr' : '-$absB - $sqrtExpr';
}
} else {
// Cannot simplify, use fraction form
final bStr = b > 0 ? '${bInt}' : '(${bInt})';
final signStr = isPlus ? '+' : '-';
final numerator = b > 0
? '-$bStr $sign $sqrtExpr'
: '(${b.toInt()}) $sign $sqrtExpr';
? '-$bStr $signStr $sqrtExpr'
: '(${bInt}) $signStr $sqrtExpr';
if (denominator == 2) {
return '\\frac{$numerator}{2}';
@@ -1222,6 +1247,7 @@ ${b1}y &= ${c1 - a1 * x.toDouble()}
}
}
}
}
/// 格式化复数根的虚部sqrt(-delta)/(2a)
String _formatImaginaryPart(String sqrtExpr, double denominator) {