Pull to refresh
2
Жораев Тимур Юлдашевич@TimurZhoraev

Доцент института МПСУ им. Л. Н. Преснухина

0,2
Rating
6
Subscribers
Send message

В любом случае источник освещения это Солнце. Было бы странно если это другой объект, вспышка например. Кстати посредине по всей видимости белое пятно (расплывчатое, примерно 1/6 от диаметра) - это отражение Луны в океане. Светящиеся точки - артефакты уже в самом корабле или переотражение от стёкл иллюминатора.

Солнце находится позади оператора - эта полоска - или солнечное гало в атмосфере под таким углом или там краешек луны восходит, т к было полнолуние, но скорее всего первое, это не HDR фото.

Тут вопрос более фундаментальный исходя из нынешних реалий - как теперь всё это затолкать в RAG и MCP со скиллами. Похоже маятник будет стремительным домкратом в обратную сторону - кто больше всех упростит

ReLU или двоичный сигмоид это естественные функции которые способны решать туда-сюда в ходе обучения (обратного распространения). То есть грубо говоря алгоритм обучения вшит уже в модель. Там весь градиентный спуск - замена суммы на разницу и создание локальной отрицательной обратной связи, которая сводит ошибку этим виртуальным интегратором к нулю. За исключением случая решения СЛАУ для нескольких нейронов/весов одновременно когда возможно псевдо-точное решение, это несколько иное, более новое направление но и ядра там уже будут специальные (не просто тензорные) для решения в 8 бит или даже фиксированной разрядности. Так что от предсказания до формальной логики там осталось полпинка. Любая логическая задача может быть представлена как решение некоторого уравнения в целых числах, то есть обратная задача восстановления конечного автомата по данным. То есть если найдётся такая матрица которая "схватит" это решение для подавляющего большинства случаев матана и программирования - это собственно и будет AGI. Ну как спекуляция на предмет дзета-функции Римана что её полюса это собственные числа некоторой эрмитовой матрицы.

Необходимо указать что-то вроде ГОСТ на Claude

Учёт предыдущих состояний даже с переключаемыми весами это фактически некий аналог БИХ-фильтра и там скорее задача уже на устойчивость пути/решения.

Генерация мелких функций вроде printf-scanf для ембеддинга по месту вместо поиска 100500 библиотек.
Анализ кода (в основном для C/Asm/Python) и данных - написание парсеров
Мелкие скрипты для обработки данных python/bash собрать-разобрать-разбить-отформатировать
Визуализация данных - графики, графы
Написание тестов для любых функций по месту
Оптимизация, intrisincs
Задание повтори и выполни вместо копи-паст
Makefile-ы для всех, включая json-ы, упрощение настроек
Проверка граничных значений, assertion-ы,
Разбор вороха макросов и умный рефакторинг для ленивых - разбить/собрать стурктуры, вынести функции
Для микроконтроллеров просто незаменимый инструмент, на ассемблере/С знает всё до глубины 80-х, то есть скиллы человека даже с опытом 30+ уже не могут вобрать столько, а он, эдакий, знает, даже то что считается фишкой и хитростью со всякими масками и И-ИЛИ-НЕ, плюс это сдобрено весьма неплохим матаном и численными методами. Не удивительно что он знает К555ЛА3 и абстрактные базовые классы одновременно.

Из эпохи ЭПСН-25
// Model of a single K555LA3 chip (4 NAND gates)
module k555la3 (
    input wire a1, b1,  // Inputs for gate 1
    input wire a2, b2,  // Inputs for gate 2
    input wire a3, b3,  // Inputs for gate 3
    input wire a4, b4,  // Inputs for gate 4
    output wire y1,     // Output for gate 1
    output wire y2,     // Output for gate 2
    output wire y3,     // Output for gate 3
    output wire y4      // Output for gate 4
);

    // NAND logic: ~ is NOT, & is AND
    assign y1 = ~(a1 & b1);
    assign y2 = ~(a2 & b2);
    assign y3 = ~(a3 & b3);
    assign y4 = ~(a4 & b4);

endmodule

Похоже нововведения в компиляторах даются всё труднее и выглядят скорее всего как-то так

Генератор генераторов
import re

def record_to_class(record_str):
    # Regex to capture the class name and the content inside the parentheses
    pattern = r"public record (\w+)\((.*)\);"
    match = re.search(pattern, record_str)
    
    if not match:
        return "No match found."

    class_name = match.group(1)
    params_raw = match.group(2).split(',')
    
    properties = []
    constructor_args = []
    assignments = []

    for item in params_raw:
        # Split type and name (e.g., 'string FirstName')
        parts = item.strip().split()
        if len(parts) != 2: continue
        
        data_type, name = parts
        # Format names: Property (PascalCase), Argument (camelCase)
        prop_name = name[0].upper() + name[1:]
        arg_name = name[0].lower() + name[1:]

        properties.append(f"    public {data_type} {prop_name} {{ get; init; }}")
        constructor_args.append(f"{data_type} {arg_name}")
        assignments.append(f"        {prop_name} = {arg_name};")

    # Assemble the class string
    class_body = "\n".join(properties)
    constructor_params = ", ".join(constructor_args)
    constructor_body = "\n".join(assignments)

    return (
        f"public class {class_name}\n"
        f"{{\n"
        f"{class_body}\n\n"
        f"    public {class_name}({constructor_params})\n"
        f"    {{\n"
        f"{constructor_body}\n"
        f"    }}\n"
        f"}}"
    )

# Example usage
record_input = "public record User(string FirstName, string LastName, int Age);"
print(record_to_class(record_input))

AI довольно шустро понял про AVX/SSE итд. Также можно использовать двоичный сплит - сначала сместить все символы до 127 (условно) используя свойства юникода а запятую и другие знаки отобразить после 128. Далее обработать маской, то есть все действия сведутся к арифметике если заранее подготовить данные. Ну и разумеется следующий шаг - CUDA/OpenCL

Вот именно что абсолютно нормально! Современные процессоры собственно так и проектируются - сначала рисуются прямоугольники а потом специальными алгоритмами под DUV или EUV делаются синтетические маски, которые содержат там всякие плавные переходы, Фурье-закорючки и прочие красивые изящные искусства. Как и на печатных платах раньше сначала прямоугольники а потом шлифовали под 45 градусов алгоритмами, сначала в переходное отверстие прямой проводник а затем каплевидный переход. Ровно тоже самое и здесь сначала делается 3Д скетч который содержит базовую композицию а потом уже осуществляется локальная компоновка хоть эвольвента хоть зубья наклонные или цепная передача. Сеть может сгенерировать базовую компоновку исходя из опыта экспериментов, которые идут на обучение этой же сети.

Не совсем так, перебор может быть осмысленным в плане того что поиск имеет предысторию, то есть производные, этакий градиентный метод. Да и человек делает тоже самое в доказательстве. Фактически любую теорему, доказательство итд можно свести к решению некоторого Диофантового уравнения в поле с ограниченной разрядной сеткой если оно описывается с элементами теории множеств и идентификаторами и наоборот последовательность и доказательство развернуть в уравнение. Как-то так. Сейчас упор сделан именно на это, когда будут более сложные алгебраические элементы с заданными свойствами в нейросети а не просто взвешенная сумма

там и не нужно точно. Достаточно решение в 8 бит арифметике. Там или таблица или пара итераций. В процессе обучения оптимизируется фактически этими же алгоритмами, грубо говоря, ошибка между входным и выходным вектором, расчёт производится также на тензорных ядрах. Там вся эта аксиоматика в человеческом представлении спрятана в веса, функция активации, простейшая причём ReLU это фактически переключатель if-else. Сигнал влазит например в диапазон от 0 до 65535 и является символьным (текстовым) а значит к нему вполне можно применять фактически цифровую обработку нейросетью, что и происходит. Нейросеть может проверить результат привлекая сторонние средства, те же символьные системы из разряда Maple, Maxima, Mathematica итд. Там уж не такая сложная логика и сами по себе ключевые алгоритмы занимают не так много места. Тот же самый Derive под DOS был что-то вроде 600 кБ, что вполне может улечься в коэффициенты нейросети для символического процессора

так в промпте об этом явно сказано - аналог эвольвенты, то есть выбран кирпич. Потому как её он строит с относительными глюками - в любых таких параметрических кривых неоднозначность это знак, как у уравнения окружности плюс минус корень, а сам знак обычно определяется квадратнтом через всякие арктангенсы - этому модель ещё не особо хорошо научили, хотя задачу обратной кинематики для двузвенного манипулятора решает вполне себе годно.
Промпт. хотеть двузвенный манипулятор используй pygame обратить внимание знаки арктангенс два аргумента, перемещение звеньев в плоскости нарисуй плоскость использовать мышь для конечной точки обратная кинематика используй прямые координаты экрана x-y вместо координат сцены питон хорошо среднее колесо мыши приближает отдаляет нажатие средней кнопки мыши крутит сцену

Код
import pygame
import math

# Настройки экрана
WIDTH, HEIGHT = 800, 600
CENTER = (WIDTH // 2, HEIGHT // 2)

# Длины звеньев
L1 = 150
L2 = 120

def solve_ik(target_x, target_y, l1, l2):
    """Обратная кинематика для 2-х звеньев."""
    d2 = target_x**2 + target_y**2
    d = math.sqrt(d2)

    # Проверка достижимости (радиус действия)
    if d > (l1 + l2) or d < abs(l1 - l2):
        return None

    # Закон косинусов для второго угла (theta2)
    cos_theta2 = (d2 - l1**2 - l2**2) / (2 * l1 * l2)
    cos_theta2 = max(-1, min(1, cos_theta2)) # Ограничение для точности
    
    # Elbow down решение
    theta2 = math.acos(cos_theta2)
    
    # Первый угол (theta1) с учетом направления на цель
    # Используем atan2(y, x) для корректных знаков
    theta1 = math.atan2(target_y, target_x) - math.atan2(l2 * math.sin(theta2), l1 + l2 * math.cos(theta2))
    
    return theta1, theta2

def main():
    pygame.init()
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    clock = pygame.time.Clock()
    
    scale = 1.0
    offset_x, offset_y = 0, 0
    dragging = False
    
    running = True
    while running:
        screen.fill((30, 30, 30))
        mx, my = pygame.mouse.get_pos()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            
            # Масштабирование (колесо мыши)
            if event.type == pygame.MOUSEBUTTONDOWN:
                if event.button == 4: scale *= 1.1
                if event.button == 5: scale /= 1.1
                if event.button == 2: dragging = True # Нажатие колеса
            
            if event.type == pygame.MOUSEBUTTONUP:
                if event.button == 2: dragging = False
                
            if event.type == pygame.MOUSEMOTION and dragging:
                dx, dy = event.rel
                offset_x += dx
                offset_y += dy

        # Расчет IK (в экранных координатах относительно центра манипулятора)
        # Учитываем смещение и масштаб для корректного наведения
        tx = (mx - (CENTER[0] + offset_x)) / scale
        ty = (my - (CENTER[1] + offset_y)) / scale
        
        angles = solve_ik(tx, ty, L1, L2)
        
        # Рисование сетки (плоскости)
        grid_step = int(50 * scale)
        for x in range((offset_x + CENTER[0]) % grid_step, WIDTH, grid_step):
            pygame.draw.line(screen, (50, 50, 50), (x, 0), (x, HEIGHT))
        for y in range((offset_y + CENTER[1]) % grid_step, HEIGHT, grid_step):
            pygame.draw.line(screen, (50, 50, 50), (0, y), (WIDTH, y))

        # Отрисовка манипулятора
        base_pos = (CENTER[0] + offset_x, CENTER[1] + offset_y)
        
        if angles:
            t1, t2 = angles
            # Прямая кинематика для отрисовки
            x1 = base_pos[0] + L1 * math.cos(t1) * scale
            y1 = base_pos[1] + L1 * math.sin(t1) * scale
            x2 = x1 + L2 * math.cos(t1 + t2) * scale
            y2 = y1 + L2 * math.sin(t1 + t2) * scale
            
            # Линии звеньев
            pygame.draw.line(screen, (200, 200, 200), base_pos, (x1, y1), 5)
            pygame.draw.line(screen, (100, 100, 255), (x1, y1), (x2, y2), 5)
            # Суставы
            pygame.draw.circle(screen, (255, 0, 0), (int(x1), int(y1)), 7)
            pygame.draw.circle(screen, (0, 255, 0), (int(x2), int(y2)), 5)
        
        pygame.draw.circle(screen, (255, 255, 255), base_pos, 10) # Основание
        pygame.display.flip()
        clock.tick(60)

    pygame.quit()

if __name__ == "__main__":
    main()



Не понятно почему нет инициативы ГосВПН - вполне себе можно было бы через Единое окно получать электронный талон на открытие доступа, например, к рабочим группам на запрещённых платформах. Указывается наименование и даётся гарантия использования по назначению, указывается ежедневный объём трафика и его сущность со скриншотом отправляемым в специальном приложении. Либо делается транслятор с участием официально аккредитованного человека, который получает, например, картинку из Макса и вставляет её в телегу, отслеживая контент, затем, обратно из телеги копирует сообщения в легальный мессенджер. Если это будет недорого то вполне годный вариант.

нейросеть которая помогает делать датасеты для нейросети. 100500 книг - отсканировать, сделать OCR (те что не в электронном виде), векторизовать графики и рисунки с отражением сути в минимальном виде, формулы перегоняются в физический формат (Латех без оформления). То есть модель учится читать все публикации, книги, рисунки которые есть во всех библиотеках. Это не так много, если отбросить шелуху то это порядка десятка терабайт данных для претренинга, из них уже составляются триллионы токенов, в развёрнутом виде уже сотня терабайт но не более того - это всё вмещает все знания человечества полученные со времён начала неолита. Сотня терабайт нынче - это сервант с дисками в обычной квартире.

С логикой будет абсолютно всё в порядке когда прикрутят сохранение состояния и внедрят более сложные сети Хоупфилда с внутренними обратными связями. По-сути логическая задача локально - это решение СЛАУ для конечного автомата, некий LBA. Набирая этих автоматов можно +- проверить решение по матиндукции как человек. Собственно сейчас и ковыряют трансформеры на этом принципе. Как только доделают - можно уже сказать что глюки носящие вероятностный характер уже в прошлом, модель имеет логический вывод с полноценной памятью.

скорее всего будут нормальные векторные модели, которые собственно вмещают пару десятков килобайт описания из разряда выдавить, продавить сопряжение, касательность и прочие зависимости. Модель вполне может сделать синтез по граничным условиям. Тот же OpenSCAD текстовый вполне себе годен. Промпт: OpenSCAD сделать зубчатое колесо аналог эвольвенты без библиотек 12 зубьев центральное отверстие шпонка сопряжение другое зубчатое колесо 16 звеньев центральный вал
Результат

Код
// --- Parameters (Change these) ---
m = 2;              // Module (Size of teeth)
z1 = 12;            // Gear 1: 12 teeth
z2 = 16;            // Gear 2: 16 teeth
thick = 10;         // Gear thickness
d_shaft = 8;        // Shaft diameter
k_w = 3;            // Keyway width
k_h = 1.5;          // Keyway depth

// --- Calculations ---
$fn = 60;
pa = 20;            // Pressure angle
pitch_dist = m * (z1 + z2) / 2;

// --- Main Module (No Library Needed) ---
module simple_gear(z) {
    pitch_radius = (m * z) / 2;
    addendum = m;
    dedendum = 1.25 * m;
    
    outer_radius = pitch_radius + addendum;
    inner_radius = pitch_radius - dedendum;

    difference() {
        union() {
            // Base Cylinder
            cylinder(r = inner_radius, h = thick);
            
            // Generate Teeth
            for (i = [1:z]) {
                rotate([0, 0, i * (360/z)])
                translate([pitch_radius, 0, thick/2])
                // Simplified trapezoidal tooth
                cube([m * 2, m * 1.2, thick], center=true);
            }
        }

        // Shaft Hole
        translate([0, 0, -1])
            cylinder(d = d_shaft, h = thick + 2);

        // Keyway (Slot)
        translate([-k_w/2, d_shaft/2 - 0.5, -1])
            cube([k_w, k_h + 1, thick + 2]);
    }
}

// --- Render Assembly ---

// Gear 1
color("Cyan") 
    simple_gear(z1);

// Gear 2 (Positioned to mesh)
translate([pitch_dist, 0, 0])
rotate([0, 0, 180/z2]) // Rotate to fit teeth
color("SpringGreen") 
    simple_gear(z2);

Центральный вал конечно пропустил но про шпонку уже представление имеет

Проблема в том, что много кода созданного человеком для человека. И все эти технологии которые сейчас имеются фактически дожатие того что было сделано до появления ИИ. Как только будет код "do not edit machine generated" дело уже пойдёт лучше, да и язык это будет не те которые сейчас лучше всех а те которые специально адаптированы для ИИ с наименьшими глюками и ошибками

Вообще говоря главная пропасть - между просто данными для обучения и подготовленными человеком датасетами. Это отдельное искусство сформировать нужные шаблоны обучения.

Попробуем проиллюстрировать с использованием "высокоэнтропийного" вайбкодинга что же произошло с Землей на начальном этапе лунной программы.
Модель:
Язык змей горыныч модель окружность 1 окружность 2 навстречу друг другу диаметры отношение один к четырём окружность есть 64 точки отрезков аппроксимация каждый отрезок масса отрезки связаны в точках использовать сохранение импульса закон Ньютона столкновение без рассеяния отрезки между собой закон Гука пружинят конечные разности расчёт шаг счёта по времени примерно одна окружность в секунду использовать матплотлиб визуализация

Реализация
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

# Параметры системы
N = 64              # Точек в окружности
dt = 0.002          # Шаг по времени
k_spring = 8000.0   # Жесткость пружин
m_point = 0.1       # Масса точки
damping = 0.05      # Вязкое трение (стабилизация)

def create_ring(R, offset_x, velocity_x):
    angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
    pos = np.zeros((N, 2))
    pos[:, 0] = offset_x + R * np.cos(angles)
    pos[:, 1] = R * np.sin(angles)
    vel = np.full((N, 2), [velocity_x, 0.0])
    return pos, vel, R

# Инициализация (диаметры 1 к 4)
pos1, vel1, r1 = create_ring(1.0, -3.5, 5.0)
pos2, vel2, r2 = create_ring(4.0, 3.5, -5.0)

def get_forces(pos, r_orig):
    forces = np.zeros_like(pos)
    rest_len = 2 * r_orig * np.sin(np.pi / N)
    for i in range(N):
        p_curr = pos[i]
        p_next = pos[(i + 1) % N]
        diff = p_next - p_curr
        dist = np.linalg.norm(diff)
        f_mag = k_spring * (dist - rest_len)
        f_vec = f_mag * (diff / dist)
        forces[i] += f_vec
        forces[(i + 1) % N] -= f_vec
    return forces

# Подготовка анимации
fig, ax = plt.subplots(figsize=(10, 6))
ax.set_xlim(-12, 12); ax.set_ylim(-6, 6)
line1, = ax.plot([], [], 'r-o', lw=1, ms=2)
line2, = ax.plot([], [], 'b-o', lw=1, ms=2)

def update(frame):
    global pos1, vel1, pos2, vel2
    
    # Расчет сил и столкновений за несколько микрошагов для стабильности
    for _ in range(5):
        f1 = get_forces(pos1, r1) - damping * vel1
        f2 = get_forces(pos2, r2) - damping * vel2
        
        # Столкновение (упрощенно: проверка расстояния между узлами)
        for i in range(N):
            for j in range(N):
                dist_v = pos1[i] - pos2[j]
                if np.linalg.norm(dist_v) < 0.25:
                    # Закон сохранения импульса (m1=m2): усреднение скоростей
                    v_avg = (vel1[i] + vel2[j]) / 2
                    vel1[i] = vel2[j] = v_avg
        
        # Интегрирование
        vel1 += (f1 / m_point) * dt
        pos1 += vel1 * dt
        vel2 += (f2 / m_point) * dt
        pos2 += vel2 * dt

    line1.set_data(np.append(pos1[:, 0], pos1[0, 0]), np.append(pos1[:, 1], pos1[0, 1]))
    line2.set_data(np.append(pos2[:, 0], pos2[0, 0]), np.append(pos2[:, 1], pos2[0, 1]))
    return line1, line2

ani = FuncAnimation(fig, update, frames=200, interval=30, blit=True)
plt.title("Модель Змея Горыныча: столкновение упругих колец (1:4)")
plt.show()
1
23 ...

Information

Rating
3,338-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Инженер электронных устройств, Научный специалист, исследователь
Старший
From 300,000 ₽
Прикладная математика
Разработка программного обеспечения
Оптимизация кода
C
Assembler
Python
Алгоритмы и структуры данных
Объектно-ориентированное проектирование
Многопоточность
Verilog HDL